Champs vide en mysql

Signaler
Messages postés
138
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
29 mai 2006
-
docLegi
Messages postés
8
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
3 janvier 2004
-
bonjour
jai fai une requete en php avec une bdd mysql
je voudrai selectionner ts les info ded la table forum pour lesquelle le champs reponse_a_id est null. Et je ne sais pas commet faire.vooici ma requete :
$req MYSQL_QUERY("SELECT * FROM forum WHERE reponse_a_id 'NULL' ORDER BY date_verif DESC LIMIT 0, 50");

le message d'erreur provinet de la ligne suivante :
$res = MYSQL_NUMROWS($req);
mais comme cec codee est bon j'en conclut que c'est la requete qui est fausse

10 réponses

Messages postés
258
Date d'inscription
mercredi 14 août 2002
Statut
Membre
Dernière intervention
23 avril 2004

1)
$req = MYSQL_QUERY("SELECT * FROM forum WHERE reponse_a_id is NULL ORDER BY date_verif DESC LIMIT 0, 50");

2)
$res = MYSQL_NUM_ROWS($req);

avec ces deux modifs ça devrait mieux marcher!

Hicksman :clown)
Messages postés
138
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
29 mai 2006

il me met la meme erreur ! sur les 2 lignes
voici la strucure de la table :

CREATE TABLE forum (
id int(11) NOT NULL auto_increment,
nom varchar(255) NOT NULL,
email varchar(255) NOT NULL,
date_verif datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
texte text NOT NULL,
reponse_a_id int(11) REFERENCES forum,
lect int(11) NOT NULL,
titre varchar(255) DEFAULT '- no title -' NOT NULL,
PRIMARY KEY (id),
KEY id (id),
UNIQUE id_2 (id)
);
et l'erreur affichée :
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in index.php on line 12

les lignes 11 et 12 sont les 2 lignes modifiés
Messages postés
258
Date d'inscription
mercredi 14 août 2002
Statut
Membre
Dernière intervention
23 avril 2004

as-tu essayé sans "DESC LIMIT 0, 50"??

Hicksman :clown)
Messages postés
138
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
29 mai 2006

il me met tjrs la emme erreur je comprend vraiment pas pourquoi. le MYSQL_NUM_ROWS() doit avoir unne valeur vide pourquoi il me met une erreur a cette ligne est ce que ça signifie qu'elle ne peut pas avoir une valeur vide?
Messages postés
258
Date d'inscription
mercredi 14 août 2002
Statut
Membre
Dernière intervention
23 avril 2004

Disons qu'elle ne peut executer une requête si elle est à 'null'.
Une chose me gêne sur ta table, c'est le 'references forum' derrière le 'reponse_a_id'. t'es sur que c'est nécessaire si c'est dans la même table?

Hicksman :clown)
Messages postés
138
Date d'inscription
lundi 27 mai 2002
Statut
Membre
Dernière intervention
29 mai 2006

oui car c 'est une clé étrangère emme si c'est dans la même table soit elle reçoit le id du message soit elle reçoit rien
Messages postés
258
Date d'inscription
mercredi 14 août 2002
Statut
Membre
Dernière intervention
23 avril 2004

je suppose qu'il n'y a rien dans la bdd qui réponde à cette requête! Ca doit le déranger.
je présume qu'il vaux mieux faire un test sur cette requete:
if (mysql_num_rows($req) > 0)
essaies toujours, tu verras bien.

Hicksman :clown)
Messages postés
258
Date d'inscription
mercredi 14 août 2002
Statut
Membre
Dernière intervention
23 avril 2004

Autre chose, je sépare aussi la requête de son éxécution.
$query = "select * from.....";
$do = mysql_query($query);

Hicksman :clown)
Messages postés
110
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 septembre 2004

Tu n'as qu'à faire:

$req = MYSQL_QUERY("SELECT * FROM forum ORDER BY date_verif DESC LIMIT 0, 50");

La spécification du WHERE n'est jamais obligatoire.

A++
-------------------------
SmallToad - Grand maitre PHP
Programmeur C++, java, PHP, etc.
Messages postés
8
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
3 janvier 2004

juste à titre d'information pour ceux qui fouilleraient dans les archives du forum, un champ ne peut JAMAIS être = à "NULL"

mm si le champ est effectivement "NULL", il ne sera pas trouvé dans une clause WHERE champ = 'NULL'

ainsi la requete :$req MYSQL_QUERY("SELECT * FROM forum WHERE reponse_a_id 'NULL' ORDER BY date_verif DESC LIMIT 0, 50");
n'aura jamais aucune réponse

il faut tester avec 'IS' et pas avec =
WHERE champ IS NULL

page de la documentation (traduite) à ce propos :
http://www.mysql.com/doc/fr/Working_with_NULL.html