Aide petit script PHP comprehension

Bonjour,
voici mon code : je souhaiterai obtenir un tableau avec plusieurs colonnes.
Dès que l'affichage depasse 3lignes par colonnes, le script rajoute une colonne et ainsi de suite.
$tr = '0';
while ($liste=mysql_fetch_array($result)) 
{ 
   if($tr == '3')
   
   {$tr = '0' ;}
   
   if($tr == '0')
   {
      echo '<td>';
   }
   ?>
   <tr><a href="#<? 
   echo $liste['cat_nom']; 
   ?>">
   <? 
   echo $liste['cat_nom']; 
   ?>
   </a></tr>
   <?
   if($tr == '2')
   {
      echo '</td>';
   }
   $tr++;
}

Pourtant ce script ne m'affiche qu'une seule colonne avec toute les categorie a linterieur
Merci de votre aide
Configuration: Windows XP
Internet Explorer 7.0

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. l'idée est quand tr=0 c'est une nouvelle ligne
    quand a-t-on une nouvelle ligne ?
    quand on a écrit 3 colonnes (donc on compte jusqu'à 3 les colonnes) et on remet tr à zero pour une nouvelle ligne
    et td à zero pour recompter jusqu'à 3
    (comptage de zero à 2)
    1. Merci Giheller pour vos lumieres ! Cela fonctionne parfaitement ! Merci une nouvelle fois
      1. La c'est parfaitement clair, je teste ce code et je vous tien au courant.
        1. je suis vraiment désolé de paraitre si naif mais je ne pige vraiment rien a votre technique.
          if ($tr== '0') 
          { 
          echo "<tr>"; 
          $tr++; // j'incremente les lignes
          } 
          if ($tr== '2')  // dès que j'ai deux lignes je remet $tr a zero
          { 
          echo "</tr>"; 
          $tr= '0';
          } 
          echo "<td>".$liste['cat_nom']."</td>"; // ici je ne vois pas pourquoi l'affichage des td se fait ici 
          


          Excusez moi encore
          1. voir le nouveau code envoyé--
            JL, 
        2. @giheller : Votre code me donne A B C D E F G de cette maniere.
          if ($tr== '0') 
          { 
          echo "<tr>"; 
          $tr++;
          } 
          if ($tr== '2') 
          { 
          echo "</tr>"; 
          $tr= '0';
          } 
          echo "<td>".$liste['cat_nom']."</td>"; 
          
          1. if (tr==0) { echo "<tr>"; tr++;}

            echo "<td>".$mon truc."</td>";
            $td++;

            if (td==2) { echo "</tr>";$tr=0; $td=0;}

        3. je souhaite une nouvelle colonne toutes les 3 lignes par exemple du type :
          A D G
          B E H etc
          C F
          1. Ah !
            Là c'est plus compliqué parce que les tableaux ont un sens en HTML et toi tu semble vouloir les utiliser dans l'autre sens.
          2. oui j'ai bien saisi

            if (tr==0) { echo "<tr>"; tr++;}
            if (tr==2) { echo "</tr>"; tr=0;}
            echo "<td>".$mon truc."</td>";
        4. Bonjour,

          <tr> définit une ligne
          <td> définit une colonne
          OK mais les td sont mal placés

          1. Oui c'est ce que j'avais remarqué

            En HTML pure
            ton source HTML devrait ressembler à ça
            <tr>
               <td><a href="...">...</a></td><td><a href="...">...</a></td><td><a href="...">...</a></td>
               <td><a href="...">...</a></td><td><a href="...">...</a></td><td><a href="...">...</a></td>
               <td><a href="...">...</a></td><td><a href="...">...</a></td><td><a href="...">...</a></td>
               ...
            </tr>
            


            A noter que pour la première ligne tu pourrais aussi utiliser TH (Table Header) au lieu de TD (Table Data)

            Bon si j'ai bien compris pas besoin de proposer de correction. :)
        5. Voilà ton code indenté différemment
          // Attention tu utilises des caractères et pas des entiers !!!
          $tr = '0';
          while ($liste=mysql_fetch_array($result)) 
          {
          	if($tr == '3')
          	{
          		$tr = '0' ;
          	}
          	if($tr == '0')
          	{
          		echo '<td>';
          	}
          	?>
          	<tr>
          		<a href="#<? echo $liste['cat_nom']; ?>"><? echo $liste['cat_nom']; ?></a>
          	</tr>
          	<?
          	if($tr == '2')
          	{
          		echo '</td>';
          	}
          	$tr++;
          }
          

          J'ai l'impression que c'est n'importe quoi. Tu t'y prends mal. Je vais essayer de te proposer une correction.
          En fait tu veux une nouvelle ligne toutes les 3 colonnes c'est ça ?