> 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
30,24 €Boîtier PC ATX Fractal Focus G à 30,24 €
Valable jusqu'au 03 Août

Amazon propose actuellement le très bon boîter moyen tour Fractal Design Focus G à 30,24 € livré gratuitement alors qu'on le trouve ailleurs à plus de 69 €. Le boitier Fractal Design Focus G est une plateforme ultra-polyvalente douée de fonctions ultra pratiques (format ATX, filtres, USB 3.0, 2 ventilateurs LED inclus, emplacements 5,25 pouces pour lecteur DVD/Blu-Ray, montage facile).


> Voir l'offre
58,99 €Routeur TP-Link Archer AX10 WiFi 6 à 58,99 €
Valable jusqu'au 04 Août

Amazon fait une promotion sur le routeur TP-Link Archer AX10 WiFi 6 qui passe à 58,99 € au lieu de 80 €. La livraison est gratuite. L’Archer AX10 de TP-Link embarque la technologie WiFi 6 (802.11ax) qui permet de passer à la vitesse supérieure (1.5 Gbps) tout en étant rétro-compatible avec les normes WiFi 802.11a/b/g/n/ac. Doté de 4 antennes Wi-Fi et capable de prendre en charge la technologie 1024 QAM et les canaux 160 MHz, l'Archer AX10 est aussi pourvu d'une prise WAN 1 GbE et de 4 ports Ethernet Gigabit. Les nombreux appareils connectés peuvent ainsi bénéficier de la meilleure connexion possible en toute fluidité.


> Voir l'offre
37,78 € livréeCarte mémoire SDXC UHS-I U3 SanDisk Extreme 256 Go (150 Mo/s) à 37,78 € livrée
Valable jusqu'au 05 Août

Amazon Allemagne fait une promotion sur la carte mémoire SDXC UHS-I U3 SanDisk Extreme 256 Go qui passe à 33,28 €. Comptez 4,50 € pour la livraison en France soit un total de 37,78 € livrée. Cette carte mémoire offre des vitesses jusqu'à 150 Mo/s et est idéale pour les caméras et appareils photo HD. On la trouve ailleurs à partir de 55 €.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> 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