Probléme boucle php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probléme boucle php

par angebleu17 » 30 janv. 2007, 12:24

ok merci ! :wink:

par Ryle » 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 :))

par angebleu17 » 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) {...

par Vikchill » 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

Probléme boucle php

par angebleu17 » 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