Page 1 sur 1

Probleme de colonne et de ligne pour un script de gallerie

Posté : 14 juin 2007, 15:54
par djtec
Bonjour,

Voila j'ai un script pour afficher des images un peu comme une gallerie mais le problème c'est qu'il bug au niveau des lignes.

Il devrait y avoir 2 images par ligne et la il me crée:

1 ligne de 1 images
1 ligne de 2 images
1 ligne de 1 images

Et en tout j'ai 4 images d'enregistrées dans ma base

Voici un screen

Image

Je vous joint mon script
<table align="center" width="100">
<? 
$nbpg = $board_rangpg;
$nblig = $board_ranglig;


if (!isset($_GET['page'])) $page = 1;
else $page = intval($_GET['page']);

if (!isset($_GET['total']))
{
$sql = "select count(*) as qte from ".$prefixe."_rang";
$p = @mysql_query($sql,$c);
$total = @mysql_result($p,'0','qte');
}
else $total = intval($_GET['total']);

$debut = ($page - 1) * $nbpg;
		

$sql = "SELECT * FROM ".$prefixe."_rang ORDER BY id DESC LIMIT ".intval($debut).",".intval($nbpg)."";

if($p = @mysql_query($sql,$c)){
$i = 1;
while($resultat = @mysql_fetch_array($p)){

if (!($i++%$nblig))  echo "</tr>\n";
echo "\n";

?>
<td>
<div align="center">
<table class="kit" width="400" height="100">
	<tr>
		<td valign="top" width="190" align="center"><img border="0" src="<? echo ''.stripslashes($resultat['img1']).''; ?>" /><br /><br /><img border="0" src="<? echo ''.stripslashes($resultat['img2']).''; ?>" /></td>
		<td valign="top" width="10">&nbsp;</td>
		<td valign="top" width="390" align="left">
		<b>Nom du kit:</b> <? echo ''.stripslashes($resultat['nom']).''; ?><br />
		<b>Language:</b> <? echo ''.stripslashes($resultat['language']).''; ?><br />
		<b>Télécharger:</b> <? echo ''.stripslashes($resultat['hit']).''; ?>
		</td>
		<td valign="top" width="10">&nbsp;</td>
	</tr>
</table>
</div>
</td>
<?php
      if (!($i%$nblig)) echo "</tr>\n";
   }
   
   if ($i%$nblig) echo "</tr>\n";

echo'';

if($total < 1) echo'
<div align="center">
<table cellpadding="0" cellspacing="0" align="center" width="685">
	<tr>
		<td align="center">Aucune images de rangs pour le moment.</td>
	</tr>
</table>
</div>
';
?>
</table>
<br />
<div align="right">
<?
$nbpages = ceil($total / $nbpg);

echo'<div align="right">';	
$page_moins_un = $page-1;
if($page_moins_un >= 1) 
{
echo'<a href="?name=rang&page='.$page_moins_un.'&total='.$total.'" class="page">«</a>&nbsp;&nbsp;';
}
							
for($i = 1;$i <= $nbpages;$i ++)
{
echo'<a href="?name=rang&page='.$i.'&total='.$total.'" class="page">'.$i.'</a>&nbsp;&nbsp;';
if($i < $nbpages) echo '';
}

$page_plus_un = $page+1;
if($page_plus_un <= $nbpages) 
{
echo'<a href="?name=rang&page='.$page_plus_un.'&total='.$total.'" class="page">»</a>';
}

echo'</div>';
}

mysql_close();
?>
</div>
Sa fait 2 jours que je me prend la tête mais je trouve pas d'ou viens le problème

Merci d'avance

Re: Probleme de colonne et de ligne pour un script de galler

Posté : 14 juin 2007, 16:07
par Yosh
Dans ces cas la, je n'utilise pas de modulo (cetainement la cause de ton erreur).

je ferai simplement :

Code : Tout sélectionner

$i=0; while($resultat = @mysql_fetch_array($p)) { if($i==0) { echo "<tr>"; } elseif($i==2) { echo "</tr>"; $i=0; } //affichage des blocs $i++; } //une fois la boucle terminé, test combien de bloc viennentt d'être ecrient dans la dernière ligne et complète les blocs manquants pour faire une ligne, toute en pensant à fermer ta ligne.

Posté : 14 juin 2007, 16:39
par djtec
Et je le met ou ton code car j'ai pas tout compris désolé

Posté : 14 juin 2007, 17:44
par zeus
Il faut démarrer à 0 pour que le modulo fonctionne ...

et comme un petit exemple est parfois plus parlant qu'un grand discours :
<?php

for ($i=0; $i<10; $i++)
{
        echo ($i%2) . "\n";
}

?>
Résultat de l'exécution :

Code : Tout sélectionner

0 1 0 1 0 1 0 1 0 1

Posté : 14 juin 2007, 18:13
par djtec
Ok j'ai compris

En faites il fallait je mette
$i = 0;
A la place de
$i = 1;
Je vous remercie vous 2 maintenant sa fonctionne

Merci ++