Page 1 sur 1

Affichage de données en tableau sur 2 ou 3 colonnes

Posté : 02 déc. 2005, 07:15
par Mike974
Je viens de lire un post précédent sur ce même thème mais mon problème est un peu différent ...
Actuellement j'affiche mes enregistrements (2 champs) sur une même ligne : pas de souci avec le script simplifié ci-dessous (</tr> à chaque lecture):

Code : Tout sélectionner

echo "<TABLE>"; $i = 0; while( $ligne = mysql_fetch_array( $resultat )) {$i ++; echo "<tr><td>" . $ligne['asin'] . "</td> <td>" . $ligne['image'] ."></td> </tr>"; } echo "</TABLE>"; ?>
Maintenant je voudrai changer ce script pour afficher mes données sur 2 colonnes en gérant correctement la fin du tableau; le nombre d'enregistrements de ma table peut être impair ... et j'ai un souci pour ajouter le dernier <td></td>

Merci de vos lumières.

Posté : 02 déc. 2005, 10:21
par daoud
Salut,

Voici une idée :
- récupère le nombre d'enregistrements retournés
- teste si le nombre est pair ou impair (modulo 2)
- si c'est impair ajoute la balise td

a+

Posté : 02 déc. 2005, 12:45
par pitt

echo "<TABLE>"; 
$i = 0; 
while( $ligne = mysql_fetch_array( $resultat )) 
   {
if (($i!=0)&&($i % 2 ==0)) {echo "</tr><tr>";} 
    echo "<td>" . $ligne['asin'] . "</td> 
        <td>" . $ligne['image'] ."></td> 
        "; $i++;
   } 
echo "</TABLE>"; 
?> 

Posté : 02 déc. 2005, 14:46
par Mike974
Merci de votre aide, j'ai pu, grâce à vos idées, construire mon tableau comme je le souhaitais.

encore merci de vos réponses rapides et efficaces 8)

Mike : http://runraid.free.fr

Posté : 02 déc. 2005, 15:23
par Cyrano

echo "<TABLE>"; 
$i = 0; 
while( $ligne = mysql_fetch_array( $resultat )) 
   {
if (($i!=0)&&($i % 2 ==0)) {echo "</tr><tr>";} 
    echo "<td>" . $ligne['asin'] . "</td> 
        <td>" . $ligne['image'] ."></td> 
        "; $i++;
   } 
echo "</TABLE>"; 
?> 
Pas mal, mais il va manquer le <tr> de début et le </tr> de fin : à rajouter donc respectivement juste après le <table> et juste avant ;e </table>

Pour faire ça proprement, ce sera donc:
<table>
  <tr>
<?php
$i = 0;
while( $ligne = mysql_fetch_array( $resultat ))
{
    if (($i!=0)&&($i % 2 ==0))
    {
?>
  </tr>
  <tr>
<?php
    }
?>
    <td><?php echo($ligne['asin']); ?></td>
    <td><?php echo($ligne['image']); ?></td>
<?php
    $i++;
}
?>
  </tr>
</table>

Posté : 02 déc. 2005, 15:49
par pitt
Pas mal, mais il va manquer le <tr> de début et le </tr> de fin : à rajouter donc respectivement juste après le <table> et juste avant ;e </table>
Tu as raison mais quand tu ne mets pas le <tr> de début il est automatiquement mis de même pour le </tr> de fin.

Mais tu as raison