> 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
38,99 €Carte mémoire microSDXC SanDisk 256 Go pour Nintendo Switch à 38,99 €
Valable jusqu'au 21 Juin

Amazon propose actuellement la carte mémoire microSDXC 256 Go pour Nintendo Switch à 38,99 € alors qu'on la trouve ailleurs à partir de 70 €. Cette carte mémoire offre des vitesses jusqu'à 100 Mo/s et vous permet d'ajouter 256 Go de stockage pour vos jeux sur la console Nintendo Switch. La livraison est gratuite.


> Voir l'offre
649,99 €Ordinateur portable Lenovo 15.6 pouces (FHD, Ryzen 7, 16Go RAM, SSD 512Go, GTX 1650 Ti) à 799,99 €
Valable jusqu'au 20 Juin

Cdiscount fait une promotion sur l'ordinateur portable Lenovo Ideapad 3 15ARH05 qui passe à 799,99 € alors qu'on le trouve habituellement à 999 €. Cet ordinateur portable dispose d'un écran 15,6 pouces Full HD (1920x1080), d'un processeur AMD Ryzen 7 4800H, de 16 Go de RAM, d'un SSD de 512 Go, d'une carte graphique dédiée GeForce GTX 1650 Ti 4 Go, d'une webcam, d'un lecteur de cartes mémoire et de connexions Bluetooth, WiFi, Ethernet, HDMI, USB 2.0 et USB 3.0. 


> Voir l'offre
56,99 €SSD WD Blue SN550 500 Go (NMVe M.2, 2400 Mo/s) à 56,99 €
Valable jusqu'au 20 Juin

Amazon fait une promotion sur le SSD WD Blue SN550 500 Go (NMVe M.2) qui passe à 56,99 € livré alors qu'on le trouve ailleurs à partir de 75 €. Ce SSD utilise une interface M.2 NVMe PCIe Gen3 x 4 pour une connexion simple et des performances exceptionnelles : jusqu’à 2 400 Mo/s en lecture séquentielle et jusqu’à 1 950 Mo/s en écriture séquentielle. Le SSD est doté de la technologie 3D TLC NAND haute densité offrant une endurance d’écriture durable et assorti d’une garantie de cinq ans. 


> 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