Page 1 sur 1

Comptage dans une boucle while

Posté : 18 févr. 2006, 20:55
par LitteulBlack
<?php
$ra = 0;
if ($handle = opendir('.')) {
	while (false !== ($file = readdir($handle))) {
	// comptage des rows
       if ($file != "." && $file != ".." && $file != "index.php" && $file != "images" ) {
				$ra =  $ra + 1;
			if ( $ra = 1 ) {
				$raw = "row1";
				}
			if ( $ra != 1 ) {
				$raw = "row2";
				$ra = 0;
				}
	   		echo "	<tr>\n";	
			echo "		<td class=\"".$raw."\" align=\"center\"><a href=\"http://sodium.war.verygames.net/video_match/".$file."\"><img src=\"images/dl.gif\" border=\"0\"  alt=\"Télécharger\" /></a></td>\n";
			echo "		<td class=\"".$raw."\">".$file."</td>\n";
			echo "		<td class=\"".$raw."\" align=\"center\">?</td>\n";
			echo "		<td class=\"".$raw."\" align=\"center\">?</td>\n";
			echo "		<td class=\"".$raw."\" align=\"center\">?</td>\n";
			echo "	</tr>\n";
		}
   }
   closedir($handle);
}
?>
Voilà je ne sais pas ce qui m'échappe mais la variable $ra reste toujours à la valeur 1. Le but c'est quelle switch 0 1 pour ainsi différencier l'affichage de la page.

J'ai par ailleurs cherhcé une fonction de comptage en php sur le forum mais je n'ai pas trouver

Merci de toutes votre aide.

Posté : 18 févr. 2006, 21:37
par Ouaibou
Salut,

Es-tu sur que ta condition est bien réalisée :
 if ($file != "." && $file != ".." && $file != "index.php" && $file != "images" )
et que ta boucle se fasse réllement ?
while (false !== ($file = readdir($handle)))
J'aurais d'ailleurs plutôt écrit ceci, comme cela :
while (($file = readdir($handle)) !== false)
voir
while (!($file = readdir($handle)))
De même pour ta condition sur $ra, j'aurais ecrit ça :
if ( $ra = 1 ) {
                $raw = "row1";
}
else
{
                $raw = "row2";
                $ra = 0;
} 
à la place de ça :
if ( $ra = 1 ) {
                $raw = "row1";
                }
            if ( $ra != 1 ) {
                $raw = "row2";
                $ra = 0;
                } 
@+

Posté : 19 févr. 2006, 04:26
par LitteulBlack
Je te remercie de ta réponse.

Pour ce qui est de la boucle while je n'ais pas de soucis car je référence correctement ce qui se trouve dans le repertoire en question. Me soucis c'est essentiellement la partie comptage.

J'ai donc remplacer mon code par sa
if ( $ra = 1 ) {
                $raw = "row1";
}
else
{
                $raw = "row2";
                $ra = 0;
}
Mais j'ai toujours le même soucis. Ma variable reste toujours à 1 et le comptage ne s'éffectue pas.

Pourtant le code ci-dessus me parait correct
 $ra =  $ra + 1;
Merci de ton aide :)

Posté : 19 févr. 2006, 11:09
par jojolapine
ça ne résoudra pas ton problème mais met:
$ra++;
à la place de
$ra=$ra+1;
c'est plus optimisé (donc plus rapide si t'a quequechose de long à traiter)

Posté : 19 févr. 2006, 12:56
par Cyrano
L'opérateur de comparaison, c'est "==" et non "=" qui est un opérateur d'affectation :arrow:
if ( $ra == 1 )

Posté : 19 févr. 2006, 15:48
par LitteulBlack
Un grand merci à vous deux cela marche correctement. Merci du petit renseignement sur l'utilisation de = et == :)