> 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
115,40 €Alimentation modulaire Corsair RM750X 80+ Gold à 115,40 €
Valable jusqu'au 29 Septembre

Amazon propose actuellement l'alimentation modulaire Corsair RM750X à 115,40 € livrée gratuitement. Cette alimentation de 750W est certifiée 80+ Gold et est garantie 10 ans. Entièrement modulaire, vous pourrez brancher uniquement les câbles (fournis) dont vous avez besoin. On la trouve ailleurs à partir de 150 €. 


> Voir l'offre
42,66 €Ensemble clavier/souris sans fil Microsoft Wireless Desktop 3050 à 42,66 €
Valable jusqu'au 28 Septembre

Amazon fait une promotion sur l'ensemble clavier/souris sans fil Microsoft Wireless Desktop 3050 qui passe à 42,66 € livré gratuitement alors qu'on le trouve ailleurs à partir de 54 €.  

Grâce à ses touches silencieuses et à son repose-poignets, ce clavier élégant vous permet de rester productif toute la journée. Profitez également des touches de raccourci multimédia pour contrôler vos musiques et vos vidéos. Ce clavier est aussi doté du chiffrement sécurisé AES qui permet de protéger les informations que vous saisissez.

La Technologie Bluetrack de la souris vous offre un contrôle précis sur quasiment toutes les surfaces, tandis que le pourtour en caoutchouc et le corps légèrement plus long de la souris vous fournit un confort total.

De plus, vous pouvez vous déplacer jusqu’à 10 mètres de votre ordinateur et conserver une connexion sans fil fiable.


> Voir l'offre
36,99 €Lot de 2 brosses à dents électrique Oral-B Pro 2 2900 à 36,99 €
Valable jusqu'au 29 Septembre

Amazon fait une promotion sur le lot de 2 brosses à dents électriques Oral-B Pro 2 2900 qui passe à 36,99 € livré gratuitement alors qu'on les trouvent individuellement ailleurs à partir de 35 €. Ces brosses à dent rechargeables rendent vos dents plus blanches en douceur dès le premier jour en éliminant les taches de surface. Le minuteur professionnel de 2 minutes vous permet de vous brosser les dents pendant la durée recommandée et un capteur de pression vous alerte lorsque vous exercez une pression trop importante. 2 modes de brossage : standard et douceur pour les dents et gencives sensibles 2 brossettes et une base de charge sont fournis. A compléter avec le lot de 8 brossettes Oral-B Precision Clean en promotion à 14,99 €


> 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