Page 1 sur 1
Un compteur simple
Posté : 14 janv. 2011, 05:36
par Fredy07
Bonjour,
En creeant un compteur pour afficher une numerotation de message, je rencontre un petit probleme:
for ($i = 1; $i <= $total; $i++)
{
// echo $i.'<br>';
$msg_num = '<a href="#">#'.$i.'</a>';
}
while () {
echo $msg_num;
}
si par exemple $total=4, le compteur commence par 4, 5, 6...
Comment faire pour avoir un resultat: 1, 2, 3,..
Merci
Re: Un compteur simple
Posté : 14 janv. 2011, 08:50
par moogli
salut,
que fait le code ?
- une boucle de 1 à total dans laquelle j'affecte toujours le même message à la même variable (l'index change c'est tous). Donc à la fin de la boucle for msg_num à pour valeur $msg_num = '<a href="#">#'.$total.'</a>';
donc le while affiche cette valeur au début.
Je suppose que le code n'est pas complet, car celui donnerais au mieux une boucle infinie qui affiche toujours le même message (celui du haut et au pire une erreur de parse (ce que je pense) parce qu'il n'y a pas de condition dans le while. de plus je vois pas l’intérêt de mettre une multitude de lien avec une ancre vide
pourquoi ne pas afficher la chose dans le for ?
<?php
for ($i = 1; $i <= $total; $i++)
{
echo '<a href="#">#'.$i.'</a><br />';
}
?>
va afficher les ancres avec avec pour nom de 1 à total.
@+
Re: Un compteur simple
Posté : 15 janv. 2011, 04:57
par Fredy07
J'ai deja essaye le code entre while(), mais ca donne toujours le meme resutat, ca commence a compter du total, par exemple total =3, le compteur commence a 3, 4, 5,..
Re: Un compteur simple
Posté : 19 janv. 2011, 06:12
par Fredy07
J'ai constate que si je mets le code et je fais un echo:
for ($i = 1; $i <= $total; $i++)
{
// echo $i.'<br>';
$msg_num = '<a href="#">#'.$i.'</a>';
}
echo $msg_num; // ca donne 1, 2, 3...
while () {
echo $msg_num;
}
avant le while tout va bien, mais apres le while ca commence par 3 si total = 3
Re: Un compteur simple
Posté : 19 janv. 2011, 09:27
par Berzemus
J'ai deja essaye le code entre while(), mais ca donne toujours le meme resutat, ca commence a compter du total, par exemple total =3, le compteur commence a 3, 4, 5,..
Essayer, tâter ne suffit pas en programmation.. il faut comprendre ce qui se passe.
En plus, j'ai comme l'impression que le petit bout que tu nous donne est lui-même imbriqué dans une autre boucle.. en tout cas, sans avoir plus de contexte, on a du mal à interpréter ce que tu veux dire.
Re: Un compteur simple
Posté : 19 janv. 2011, 11:19
par Fredy07
J'ai deja essaye le code entre while(), mais ca donne toujours le meme resutat, ca commence a compter du total, par exemple total =3, le compteur commence a 3, 4, 5,..
Essayer, tâter ne suffit pas en programmation.. il faut comprendre ce qui se passe.
En plus, j'ai comme l'impression que le petit bout que tu nous donne est lui-même imbriqué dans une autre boucle.. en tout cas, sans avoir plus de contexte, on a du mal à interpréter ce que tu veux dire.
voila le code en entier:
<?php
$menu = $_GET['menu'];
$select_com = 'SELECT * from comments WHERE idcat = 4 AND id_cl = "'.$menu.'"';
$result_com = mysql_query ($select_com) or die ('Erreur de selection de commentaires: ' .mysql_error());
$total_com = mysql_num_rows($result_com);
echo 'total: '.$total_com;
echo '<br>';
if($total_com) {
while ($row_com = mysql_fetch_array($result_com))
{
extract($row_com);
for ($i = 1; $i <= $total_com; $i++)
{
//echo '<b>'.$i.'</b><br>';
$msg_num = '<a href="'.$rub.'-'.$srub.'-'.$cat.'-'.$scat.'-play'.$menu.'.html#'.$idc.'">'.$i.' #</a>';
}
$select_nick = 'SELECT * from members WHERE idm = "'.$id_pseudo.'"';
$result_nick = mysql_query ($select_nick) or die ('Erreur de selection de commentaires: ' .mysql_error());
$row_nick = mysql_fetch_array($result_nick);
extract($row_nick);
$country_code = $country;
$select_cou = "SELECT * FROM countries WHERE code='$country_code'";
$result_cou = mysql_query ($select_cou) or die ('Erreur de selection des pays: ' .mysql_error());
$row_cou = mysql_fetch_array($result_cou);
$country = $row_cou['country'];
$code = $row_cou['code'];
$color = ($total_com % 2) ? $bgcolor1 : $bgcolor2 ;
$number = array (1, 2);
$picture_en = array('male', 'female');
$gender_en = str_replace ($number, $picture_en, $gender);
$date_posted = date('Y-m-d', $date_posted);
$time_posted = date('G:i:s', $date_posted);
//echo '<a name="'.$idc.'">';
echo '<table width="600" border="0" cellpadding="0">';
echo '<tr bgcolor="#e0dace">';
echo '<td width="200" align="right">';
echo $msg_num;
echo ' ';
echo '<img src="'.$path2flags.'Shadow/'.$code.'.png" title="'.$country.'" align="absmiddle">';
echo ' ';
echo '<img src="'.$path2icons.$gender_en.'.png" title="'.$gender_en.'" align="absmiddle" class="Img02">';
echo ' ';
echo $pseudo;
echo '</td></tr>';
echo '</table>';
$total_com++;
}
echo '<hr width="400">';
}
else
{
echo 'Aucun commentaire';
}
?>
Re: Un compteur simple
Posté : 19 janv. 2011, 11:33
par stealth35
je pense que tu ne comprends pas le while
Re: Un compteur simple
Posté : 19 janv. 2011, 12:33
par Fredy07
je pense que tu ne comprends pas le while
Alors expliquez le moi svp

Re: Un compteur simple
Posté : 19 janv. 2011, 12:38
par stealth35
je pense que tu ne comprends pas le while
Alors expliquez le moi svp

mysql_fetch_* récupère le résultat de la ligne de résultat courante a ta requête
tu pourais faire :
$ligne1 = mysql_fetch_assoc($res);
$ligne2 = mysql_fetch_assoc($res);
$ligne3 = mysql_fetch_assoc($res);
.....
quand y'a plus de resultat mysql_fetch_assoc renvoie false
while tourne tant que la condition ne revoie pas
false, ici la condition est le retourne de $row_com qui est le retour de mysql_fetch_assoc qui est sois un array sois false
Re: Un compteur simple
Posté : 20 janv. 2011, 13:25
par Fredy07
je pense que tu ne comprends pas le while
Alors expliquez le moi svp

mysql_fetch_* récupère le résultat de la ligne de résultat courante a ta requête
tu pourais faire :
$ligne1 = mysql_fetch_assoc($res);
$ligne2 = mysql_fetch_assoc($res);
$ligne3 = mysql_fetch_assoc($res);
.....
quand y'a plus de resultat mysql_fetch_assoc renvoie false
while tourne tant que la condition ne revoie pas
false, ici la condition est le retourne de $row_com qui est le retour de mysql_fetch_assoc qui est sois
un array sois false
Et comment puis je l integrer dans mon code, puis qu'on a appris que si on veut afficher des resultats en loop, on utilise while + le tableau + le retour de la requete, qui est en cet exemple:
while ($row_com = mysql_fetch_assoc($result_com))