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

  1. 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 ?
    0
    1. Bonjour,

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

      0
      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. :)
        0
    2. je souhaite une nouvelle colonne toutes les 3 lignes par exemple du type :
      A D G
      B E H etc
      C F
      0
      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.
        0
      2. oui j'ai bien saisi

        if (tr==0) { echo "<tr>"; tr++;}
        if (tr==2) { echo "</tr>"; tr=0;}
        echo "<td>".$mon truc."</td>";
        0
    3. Excusez moi mais je n'ai rien pigé ...
      0
      1. @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>"; 
        
        0
        1. if (tr==0) { echo "<tr>"; tr++;}

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

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

          0
      2. 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
        0
        1. voir le nouveau code envoyé--
          JL, 
          0
      3. La c'est parfaitement clair, je teste ce code et je vous tien au courant.
        0
        1. Merci Giheller pour vos lumieres ! Cela fonctionne parfaitement ! Merci une nouvelle fois
          0
          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)
            0