Aller au contenu

probleme de while et de ++


bigornot

Sujets conseillés

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é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 ! :-)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é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.

Lien vers le commentaire
Partager sur d’autres sites

merci, je vais essayer ...

mais, pour ca :

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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?\">";

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...