Probléme boucle php

Eléphant du PHP | 259 Messages

30 janv. 2007, 10:09

Bonjour,

J'ai fait une boucle, un if pour vérifier si une table est vide ou non :

Si table vide
alors...
sinon ...

Voici mon code :

Code : Tout sélectionner

$requete2 = "SELECT count(*) FROM sondage"; if ($requete2 == 0) { echo'<p></p>'; echo '<b><FONT SIZE="4" face="garamond" color="navy" >Il n\'y a aucun sondage</b></font>'; } else {
Aprés le else, le code est trop lonng, mais j'affiche une liste déroulante avec la liste des sondages, l'utilisateur doit choisir le sondage et cliquer sur valider.
Ce code là marche, au débu je l'avais mis tout seul, sans if.

Donc là avec la boucle, soit :
- il me met il n'y a aucun sondage alors qu'il y en a
- il m'affiche la liste des sondages vides alor qu'il devrait mettre "il n'y a aucun sondage".

Je ne vois pas trop ou est l'erreur !

J'espére que quelqu'un pourra m'aider !

Merci d'avance pour vos réponses

Eléphant du PHP | 193 Messages

30 janv. 2007, 10:50

Tu ne peux pas accéder aux données directement, il faut que tu passes par mysql_query() puis que tu lises le jeu d'enregistrement. C'est expliqué ici

Eléphant du PHP | 259 Messages

30 janv. 2007, 11:14

merci :wink:

J'ai essayé et ça marche, j'ai donc mis :

Code : Tout sélectionner

$requete2 = "SELECT * FROM sondage"; $resultat = mysql_query($requete2); $total = mysql_num_rows($resultat); if ($total == 0) {...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 janv. 2007, 12:06

D'un point de vue optimisation, je te recommande de n'utiliser la fonction mysql_num_rows() que lorsque tu as ramené des enregistrements et que tu as besoin de les compter plutôt que de ramener des enregistements dont tu n'as pas besoin et de l'utiliser pour les compter.

En effet, avec un " select * " tu vas charger tous les champs, de toutes les lignes alors qu'ils ne te servent à rien. La fonction count() en SQL que tu utilisais précédement (mais sans l'exécuter :)) est super optimisée et tout à fait indiquée pour compter le nombre d'enregistrement :
$requete2 = "SELECT count(*) AS total FROM sondage"; // "as total" est un alias pour simplifier la récupération avec le fetch_assoc
$resultat = mysql_query($requete2); // exécution de la requête
$row = mysql_fetch_assoc($resultat); // lecture du résultat

if ($row['total'] == 0) ... 

(Pis pense au résolu pour indiquer aux autres que ce sujet contient une solution :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 259 Messages

30 janv. 2007, 12:24

ok merci ! :wink: