Webmaster Hub: probleme de while et de ++ - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

probleme de while et de ++ aidez moi, svp Noter : -----

#1 L'utilisateur est hors-ligne   bigornot 

  • Groupe : Membre
  • Messages : 249
  • Inscrit(e) : 16-février 04
  • Localisation:GAGNY

  Posté 01 juin 2004 - 17:56

j'ai un problème dans une boucle :
normalement, en faisant
$i = 0 ;
while($numrows>$i){
blabla

$i++
}

et bien, a chaque fois qu'on montrait un enregistrement de la table, i augmentait de 1 , et, au bout d'un moment, il devenait egal à $numrows , qui contient le nombre d'enregistrement, alors, la boucle est ... FERMéE !!

mais là, ca ne marche pas, il me met une parse error...

voici le code :
<?php 
echo "$msg";
echo '<a href="modl.php?main=critik">Ajouter une critique</a>';
include("galerie.php");
$db = mysql_connect($sql,$login,$pass);
mysql_select_db($nom,$db);
$q = mysql_query("select * from critik order by id desc");
$no = mysql_query("select nom from critik order by id desc");
$da = mysql_query("select date from critik order by id desc");
$he = mysql_query("select heure from critik order by id desc");
$cr = mysql_query("select critik from critik order by id desc");
$em = mysql_query("select email from critik order by id desc");
$au = mysql_query("select auteur from critik order by id desc");
$n = mysql_fetch_array($q);
$i = "0";
while($n>$i){
$nom = mysql_result($no,"nom");
$date = mysql_result($da,"date");
$heure = mysql_result($he,"heure");
$critik = mysql_result($cr,"critik");
$email = mysql_result($em,"email");
$auteur = mysql_result($au,"auteur");
echo "<br><br><br><br>Critique post&eacute;e par $nom , le : $date a $heure <br>";
echo "$phrase";
echo "<br><br> $critik ";
echo "<br><br><a href='mailto: $email'>son adresse : $email</a>";
echo "<br><br><br> $nom est auteur de : $auteur ";
$i++
}
echo '<br><br><br><a href="modl.php?main=critik">Ajouter une critique</a>';
?>


si vous pouvez m'aider, ce serait bien ...
:D

merci d'avance !

:-*


j'ai aussi essayé $i++;

et .... la boucle ne se boucle pas ... jamais ...
donc, avis a ceux qui voudraient maider : c'est pas là, le problème ! :-)
0

#2 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 01 juin 2004 - 18:10

Bonjour,

Dans : while($n>$i){ ...

Tu compares une array à un nombre entier... il est clair que cela ne pourra jamais être correct.
Tu devrais utiliser mysql_num_rows() pour obtenir le nombre d'enregistrements et utiliser celui là dans ta boucle while() ;)

Dan
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#3 L'utilisateur est hors-ligne   bigornot 

  • Groupe : Membre
  • Messages : 249
  • Inscrit(e) : 16-février 04
  • Localisation:GAGNY

Posté 01 juin 2004 - 18:13

ha ?
je vais essayer ...
mais qu'est ce que la difference entre un array et un num_rows ?
0

#4 L'utilisateur est hors-ligne   bigornot 

  • Groupe : Membre
  • Messages : 249
  • Inscrit(e) : 16-février 04
  • Localisation:GAGNY

Posté 01 juin 2004 - 18:22

bon, maintenant, il me met le meme message en triple ( sachant qu'il y a 3 messages dans la table )
0

#5 L'utilisateur est hors-ligne   Anonymus 

  • Groupe : Hubmaster
  • Messages : 5 139
  • Inscrit(e) : 26-août 03
  • Genre:Homme
  • Localisation:Normandie.. (pas loin de Paris)
  • Société:L'atelier des Chefs

Posté 02 juin 2004 - 06:27

mysql_fetch_array te retourne le tableau des résultats, alors que mysql_num_rows te retourne le nombre de lignes du résultat. Il te faudrait donc utiliser mysql_num_rows dans ce cas là.

Mais ton code devrait etre écrit comme ceci :
<?php 
echo "$msg";
echo '<a href="modl.php?main=critik">Ajouter une critique</a>';
include("galerie.php");
$db = mysql_connect($sql,$login,$pass);
mysql_select_db($nom,$db);
$result = mysql_query("select * from critik order by id desc");

while ( $row = mysql_fetch_array($result)){

	echo "<br><br><br><br>Critique post&eacute;e par ".$row['nom']." , le : ".$row['date']." a ".$row['heure']." <br>";
	echo $row['phrase'];
	echo "<br><br> $critik ";
	echo "<br><br><a href='mailto:".$row['email']."'>son adresse : ".$row['email']."</a>";
	echo "<br><br><br> ".$row['nom']." est auteur de : ".$row['auteur']." ";
	}
echo '<br><br><br><a href="modl.php?main=critik">Ajouter une critique</a>';
?>

En effet, mysql_result fait ressortir un seul champ de la base de données. Or, juste avant, tu demandes (avec la fonction mysql_fetch_array), de ressortir toute la table. Tu devrais donc travailler sur ce résultat, obtenu par mysql_fetch_array, qui : D'un coté te permet d'obtenir toute la table de résultat, d'un autre coté est plus rapide que 6 appels successifs, d'un autre coté, fait double emploi avec mysql_result.

Sinon, tu mélanges les apostrophes et double quotes, ce qui rend le débuggage plus difficile. Tantot tu mets :
echo "<br><br
et tantot tu mets :
echo '<br><br>
C'est source d'erreurs potentiels. Tu devrais mettre soit l'un soit l'autre, mais pas les deux. Exemple :
echo "$msg";
echo "<a href=\"modl.php?main=critik\">Ajouter une critique</a>";


Dans cette ligne, d'ailleurs, on voit que tu utillises le meme nom pour 'main' que pour ta table de base de données. Ce n'est pas trop recommandé, dans la mesure où ca peut également générer des erreurs plus loin.

Voilà, a+,
Anonymus.
0

#6 L'utilisateur est hors-ligne   bigornot 

  • Groupe : Membre
  • Messages : 249
  • Inscrit(e) : 16-février 04
  • Localisation:GAGNY

Posté 02 juin 2004 - 12:35

merci, je vais essayer ...

mais, pour ca :

Citation

C'est source d'erreurs potentiels. Tu devrais mettre soit l'un soit l'autre, mais pas les deux. Exemple :

CODE 
echo "$msg";
echo "<a href=\"modl.php?main=critik\">Ajouter une critique</a>";



Dans cette ligne, d'ailleurs, on voit que tu utillises le meme nom pour 'main' que pour ta table de base de données. Ce n'est pas trop recommandé, dans la mesure où ca peut également générer des erreurs plus loin.


si je dis echo "<a href="modl.php?">";
il va prendre les " du lien pour ceux du echo, non ?
0

#7 L'utilisateur est hors-ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 945
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 02 juin 2004 - 12:54

bigornot, le mercredi 02 juin 2004, 13:35, dit :

si je dis echo "<a href="modl.php?">";
il va prendre les " du lien pour ceux du echo, non ?

Tout à fait !

Il faut soit utiliser les simples quotes, soit les faire précéder de \.
echo "<a href='modl.php?'>";

echo '<a href="modl.php?">';

echo "<a href=\"modl.php?\">";

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)