Comptage dans une boucle while

Eléphanteau du PHP | 15 Messages

18 févr. 2006, 20:55

<?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.
Image

Eléphant du PHP | 281 Messages

18 févr. 2006, 21:37

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;
                } 
@+

Eléphanteau du PHP | 15 Messages

19 févr. 2006, 04:26

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 :)
Image

ViPHP
ViPHP | 3607 Messages

19 févr. 2006, 11:09

ç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)

Mammouth du PHP | 19672 Messages

19 févr. 2006, 12:56

L'opérateur de comparaison, c'est "==" et non "=" qui est un opérateur d'affectation :arrow:
if ( $ra == 1 )
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 15 Messages

19 févr. 2006, 15:48

Un grand merci à vous deux cela marche correctement. Merci du petit renseignement sur l'utilisation de = et == :)
Image