Page 1 sur 1

affichage avec modulo

Posté : 03 mai 2006, 23:06
par Chile
Bonjour,
J'ai un petit probleme d'affichage.
J'ai recuperer un code modulo, pour afficher des images et données
sur deux colonnes. Ce code m'affiche bien toutes les données de ma table avec le fichier associé a chacun...mis a part la premiere donnée de ma table et si je supprime la premiere infos de ma table (odre id), la deuxieme passe alors en premiere position et ne sera plus affichée non plus... :?
voici le script si qlq peut m'aider a resoudre ce truc
<?php 
$i = 0; 
while ($row_photos = mysql_fetch_row($enr_affichage_caballos)) 
{ 
    if($i % 3 == 0) 
    { 
?>
          <tr>
<?php 
    } 
    $id = $row_photos[0]; 
    $url_photos = $row_photos[6]; 

    $url = $row_photos[5]; 

    $nom_photos = $row_photos[5]; 
    $titulo = $row_photos[2]; 
	$estado = $row_photos[7];

?>

Posté : 04 mai 2006, 09:10
par Vaedan
Je pense que tu devais faire
if ( $i % 3 === 0 )

Posté : 04 mai 2006, 10:07
par Ryle
Tu fais un modulo 3 pour afficher sur deux colonnes ? doit y avoir un truc qui m'échappe... mais il manque toute une partie de ton code, on ne voit pas la fin du while, on ne sait pas comment s'incrémente $i, etc.

Le modulo te retourne le reste d'une division :

Code : Tout sélectionner

0 % 2 = 0 ( 0 divisé par 2 = 0, reste 0) 1 % 2 = 1 ( 1 divisé par 2 = 0, reste 1) 2 % 2 = 0 ( 2 divisé par 2 = 1, reste 0) 3 % 2 = 1 ( 3 divisé par 2 = 1, reste 1) 4 % 2 = 0 ( 4 divisé par 2 = 2, reste 0) 5 % 2 = 1 ( 5 divisé par 2 = 2, reste 1)
Tu peux ainsi compter un nombre d'éléments et les disposer deux par deux en mettant un retour à la ligne (ou une nouvelle ligne de tableau) à chaque fois que le résultat est 0 :)

De la même manière tu peux faire n colonnes avec un modulo n, en te basant à chaque fois sur le résultat 0 :

Code : Tout sélectionner

0 % 3 = 0 1 % 3 = 2 2 % 3 = 1 3 % 3 = 0 4 % 3 = 2 5 % 3 = 1 ...

Posté : 04 mai 2006, 10:12
par mere-teresa
Tout à fait, tente le modulo 2 ($valeur %2)

Modulo signifie prendre le reste entier d'une division par N

Posté : 04 mai 2006, 14:43
par Chile
exact :?
j'avais oublié de poser la deuxieme partie du code !!
le voici complet !
de plus je me suis planté sur le nbr de colonnes ! c'est bien 3
<?php 
$i = 0; 
while ($row_photos = mysql_fetch_row($enr_affichage_caballos)) 
{ 
    if($i % 3 == 0) 
    { 
?>
          <tr>
<?php 
    } 
    $id = $row_photos[0]; 
    $url_photos = $row_photos[6]; 

    $url = $row_photos[5]; 

    $nom_photos = $row_photos[5]; 
    $titulo = $row_photos[2]; 
	$estado = $row_photos[7];

?>
            <td width='290' valign="top"><div align="center">              <a href="pinturas_detal_new2.php?id=<?php echo $row_photos[0]; ?>"><IMG SRC='images/<?php echo ($url); ?>' ALT='<?php echo($titulo); ?>' width="100" border='0'></a><br>
                     <div align="center"><span class="corps_text_bleu"><?php echo($titulo);?></span><br>
            <div align="center"><span class="corps_text_b_petit"><?php echo($estado);?></span></div></td>
<?php 
    if(($i + 1) % 3 == 0) 
    { 
?>
          </tr>
          <?php 
    } 
    $i++; 
} 
?>

Posté : 04 mai 2006, 15:45
par mere-teresa
Tu as une nouvelle question après avoir lu les réponses qui précèdent la mienne ?

Posté : 04 mai 2006, 15:59
par Chile
:) oui
j'ai bien compris du modulo maintenant,
mais je t'avoue que je comprends pas pourquoi
ca m'affiche pas la premiere image de ma base,
mais seulement les suivantes :?

Posté : 05 mai 2006, 20:14
par Chile
:cry: ,
j'ai toujours pas trouvé !
ca viendra pas de cette variable ? :

Code : Tout sélectionner

$i = 0;

Posté : 06 mai 2006, 00:29
par Ryle
Y a pas de raison pour qu'il saute le premier enregistrement d'après ton code, vu que tu boucles juste un mysql_fetch_row, il n'y a donc aucune raison pour qu'il en saute.

Regarde plutot du coté de ta requête, est-ce que tu utilises un limit ?
affiche la requête et joue là dans mysql pour comparer les résultats... :)

Posté : 08 mai 2006, 18:26
par Chile
:)
bien vu Ryle pour la requete;
j'ai viré cette ligne de la requete (ecrite par dreamweaver)
$row_enr_affichage_caballos = mysql_fetch_assoc
et plus de probleme d'affichage de la premiere image

tout fonctionne

merci