> Tous les forums > Forum des Webmasters
 Considérer un champs vide mysql non nullSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 29/09/2011 @ 17:32 
Aller en bas de la page 
Astucien

Bonjour,

Dans ma base mysql, j'ai des champs défini en "Varchar" qui peuvent être vide.

Si je fait une requête dessus pour trouver la valeur minimum du champs ( ....MIN( RIGHT(varch, 4) ) AS txt....) j'ai une réponse vide, puisque le champs est vide et considéré comme NULL.

Comment faire pour que la valeur "vide" ne soit pas considérer comme une valeur minimum numérique ?

Merci



Modifié par t671 le 29/09/2011 17:34
Publicité
christele
 Posté le 01/10/2011 à 18:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne

Je partage ta qquestion,

c'est pour cela que tout mes champs sont "NOT NULL" avec default "" ou 0 selon la nature
du reste pourquoi ne pas faire cela !

Ainsi il me suffit de contrôler si $xx!="" etc ....

t671
 Posté le 01/10/2011 à 19:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

En fait, mon problème a évolué ...........

C'est à dire que je lis un enregistrement Arthur (il peut y avoir plusieurs enregistrements nommés Arthur) qui possède un champs "date".

1) Si tous les enregistrements Arthur ont un champs "date" existant, j'affiche son minimum (avec le nb total des champs "date" existant).

2) S'il existe un (ou plusieurs) champs "date" vide dans les enregistrements Arthur, j'en fait abstraction, et je veux afficher le champs minimum existant (avec le nb total des champs "date" vide + existant).

3) Si tous les champs "date" sont vides, j'affiche un résultat vide (avec le nb total des champs "date" vide).

Actuellement, j'arrive à faire ces résultat (1,2 ou 3) séparemment, mais je n'arrive pas à combiner les trois ensemble !


J'espère avoir été suffisamment compréhensible.

Voilà où j'en suis :

$lettre = $_GET['lettre'];

//requête de sélection avec date_naissance != " "

$sql = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) AS date FROM ville WHERE nom LIKE "'.mysql_real_escape_string($lettre).'%" AND date_naissance != " " GROUP BY nom ORDER BY nom ASC';

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $nb = mysql_num_rows($req);

$sql2 = 'SELECT nom, date_naissance,COUNT(*) AS dnb FROM ville WHERE nom LIKE "'.mysql_real_escape_string($lettre).'%" AND date_naissance = " " GROUP BY nom';

$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());

$dnb = mysql_num_rows($req2);

if($nb==0) {echo'<p>Aucun résultat trouvé.</p>';}

else{

echo '<table>';

while($data = mysql_fetch_array($req))

{

echo '<tr bgcolor="#CCCCCC">';

echo '<td>'.$data['nom'].'</td>';

echo '<td align="center">'.$data['nb'].'</td>';

echo '<td>'.$data['date'].'</td>';

}

Et là, je ne sais pas comment faire pour ajouter les enregistrements vides aux enregistrements existant. Car pour l'instant, uniquement le nb enregistrement existant s'affiche ........

S'il y a des champs vide + existant, leur nombre sera = à ($nb+$dnb).

Mais comment et où introduire cette opération ds le script ? Faire un nouveau while imbriqué ?

t671
 Posté le 02/10/2011 à 09:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bon ! J'ai contourné le problème ................

Dans ma base, quand mon champs date de naissance est vide, je le remplace par 9999. Ce champs ne sera jamais minimum, et si il est seul à être trouvé, je le remplace par un vide à l'affichage ! Et ça fonctionne ..............

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
11,90 €Adaptateur USB 3.0 Ethernet Gigabit TP-Link UE300 à 11,90 €
Valable jusqu'au 31 Juillet

Amazon fait une promotion sur l'adaptateur USB 3.0 Ethernet Gigabit TP-Link UE300 qui passe à 11,90 € au lieu de 20 €. Cet adaptateur vous permettra de rajouter une prise Ethernet Gigabit à votre ordinateur portable (ou votre tablette via un adaptateur OTG) qui en est dépourvu.


> Voir l'offre
31,17 €XIAOMI Mi TV Stick à 31,17 €
Valable jusqu'au 01 Août

Cdiscount propose en exclusivité la nouvelle version de la clé HDMI XIAOMI Mi TV Stick à 31,17 €. Cette clé HDMI à brancher sur votre TV possède un processeur quadricoeur, 1 Go de RAM et 8 Go d'espace de stockage, le WiFi et le bluetooth. Elle intègre un Chromecast, est compatible Dolby et DTS et est fournie avec une télécommande qui peut être pilotée à la voix. Elle tourne sous Android TV 9.0 et vous allez pouvoir voir facilement Prime Video, Netflix, Disney+, YouTube, Spotify, Moltov, ... sur votre TV Full HD.


> Voir l'offre
-15 €15 € de réduction à partir de 149 € chez Cdiscount avec le code 15EUROS
Valable jusqu'au 01 Août

Cdiscount propose actuellement 15 € de réduction à partir de 149 € d'achats. Pour profiter de l'offre, utilisez le code promo 15EUROS .


> Voir l'offre

Sujets relatifs
tester un champs mysql
rajout données ds champs mysql
test champs base mysql
PHP/MySQL: count () plusieurs champs
Ne pas lister une ID mysql vide
MySQL - somme des valeurs d'un champs [->Résolu
champs de longueur indéfini dans mysql
Échec connection base mysql
Captvty 1.10.5.1 : dossier zip vide
une personne s'y connaissant en PHP et MySQL ??
Plus de sujets relatifs à Considérer un champs vide mysql non null
 > Tous les forums > Forum Forum des Webmasters