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

Mike974
Invité n'ayant pas de compte PHPfrance

02 déc. 2005, 07:15

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.

Eléphant du PHP | 219 Messages

02 déc. 2005, 10:21

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+

Eléphant du PHP | 153 Messages

02 déc. 2005, 12:45


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>"; 
?> 

Mike974
Invité n'ayant pas de compte PHPfrance

02 déc. 2005, 14:46

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

Mammouth du PHP | 19672 Messages

02 déc. 2005, 15:23


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>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 153 Messages

02 déc. 2005, 15:49

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