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 '&nbsp;&nbsp;';
        echo '<img src="'.$path2flags.'Shadow/'.$code.'.png" title="'.$country.'" align="absmiddle">';
        echo '&nbsp;&nbsp;';
        echo '<img src="'.$path2icons.$gender_en.'.png" title="'.$gender_en.'" align="absmiddle" class="Img02">';
        echo '&nbsp;';
        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))