Aide tableau php

Résolu
Bonjour a tous

je flanche sur une partie de code
j'ai un annuaire ou les categories sont sur un tableau a deux colonnes et je ne trouve pas le moyen pour qu'il soit en trois colonnes.

je vous met la partie du code, si quelqu'un avait une idée, ce serait sympa

merci

if ($_GET['menu']=="")
		{
		$idmenu=$_GET['id'];
		echo "<a href='".TWO_FOLDER."'>Accueil</a>";
		while ($idmenu!=0)
			{
			$gen_menu=@mysql_fetch_row(@mysql_query("SELECT * FROM ".$table_prefix."cat WHERE compteur='$idmenu'",$db));
			$tabmenu[]="<a href='".fonc_url($gen_menu[0])."-$gen_menu[2].html'>$gen_menu[0]</a>";
			$idmenu=$gen_menu[1];
			}
		for ($t=count($tabmenu)-1; $t>=0; $t--) echo " - $tabmenu[$t]";
		echo "<br /><br />";
		$res=@mysql_query("SELECT * FROM ".$table_prefix."cat WHERE inside='".$_GET['id']."' ORDER BY name ASC",$db);
		if (@mysql_num_rows($res)!=0)
			{
			echo "<table width='100%' cellpadding='7'>";
			for ($i=0; $i<mysql_num_rows($res); $i++)
				{
				if ($i % 2 == 0) echo "<tr>";
				$list=@mysql_fetch_row($res);
				$res_souscat=@mysql_query("SELECT * FROM ".$table_prefix."cat WHERE inside='$list[2]' ORDER BY name ASC LIMIT 10",$db);
				echo "<td valign='top'><img src='design/folder.png' alt='' /> <a href='".fonc_url($list[0])."-$list[2].html'>$list[0]</a> ";
				
				$list_cat[]=$list[2];
				while (list($not,$id_cat) = each ($list_cat))
					{
					$res_inside=@mysql_query("SELECT compteur FROM ".$table_prefix."cat WHERE inside='$id_cat'",$db);
					for ($h=0;$h<mysql_num_rows($res_inside);$h++)
						{
						$list_inside=@mysql_fetch_row($res_inside);
						$list_cat[]=$list_inside[0];
						}
					}
				$query_nbrsites="SELECT compteur FROM ".$table_prefix."sites WHERE ";
				$nbr_cat=sizeof($list_cat);
				for ($nbc=0;$nbc<$nbr_cat-1;$nbc++) $query_nbrsites .= "category = '$list_cat[$nbc]' or ";
				$query_nbrsites .= "category = '$list_cat[$nbc]'";
				$nbrsites=mysql_num_rows(@mysql_query($query_nbrsites,$db));
				$list_cat="";
				echo "($nbrsites)<br />";
				if (@mysql_num_rows($res_souscat)!=0)
					{
					for ($j=mysql_num_rows($res_souscat); $j>0; $j--)
						{
						$list_cat_souscat=@mysql_fetch_row($res_souscat);
						echo "<a href='".fonc_url($list_cat_souscat[0])."-$list_cat_souscat[2].html'>$list_cat_souscat[0]</a>"; if ($j!=1) echo ", ";
						}
					}
				echo "</td>";
				if ($i % 2 != 0) echo "</tr>";
				}
			if ($i % 2 != 0) echo "</tr>";
			echo "</table>";
			}


18 réponses

  1. merci, je vais voir ca

    je fais resolu sur ce post et encore merci
    1. et ben voila, merci beaucoup mon ami, je l'ai pas corrigé, je l'ai viré

      je te remercie vivement car je suis dessus depuis hier
      1. maintenant j'ai du boulot areinstaller tout le reste
        encore merci a toi
      2. de rien, je te conseille quand même de le corriger histoire d'avoir un code HTML valide, parce que là il va te manquer tous les </tr>.

        Bonne suite d'install
    2. Merci de bien corriger la ligne : if ($i % 3 != 0) echo "</tr>";
      située en bas du code que tu as coller dans ton post..

      Elle se trouve ligne 186 du index.php

      C'est elle qui fait tout me*d*r...

      Si tu regarde le code source de la page générée, ca donne :

      <table width='100%' cellpadding='7'>
         <tr>
            <td valign='top'>
               ...
            </td>
            <td valign='top'>
               ...
            </td>
         </tr> <--- Il manque un TR après !
         <td valign='top'>
            ...
         </td>
         </tr>
      


      Du coup il génère bien 3 colonnes mais la fermeture du tr ne fonctionne pas correctement.
      1. Donc tu as bien qqch comme ça ?

        echo "<table width='100%' cellpadding='7'>";
        			for ($i=0; $i<mysql_num_rows($res); $i++)
        				{
        				if ($i % 3 == 0) echo "<tr>";
        				$list=@mysql_fetch_row($res);
                                       [...] //La suite en bas du code
                                   }
        			}
        		echo "</td>";
        		if ($i % 3 != 0) echo "</tr>";
        		}
        
        1. Quel est le comportement que tu as obtenu en rétablissant la ligne : for ($i=0; $i<mysql_num_rows($res); $i++) mais en gardant les modifs que je t'ai décrites avant ?
          1. celui la, je le monte car je viens de changer de serveur qui tourne avec php5 et l'ancien script n'est pas compatible, celui la est la derniere version qu'ils ont mis en ligne mais comme son nom l'indique, il est light.

            niveau securité, j'ai trouvé les modifs a faire mais je bloque sur la presentation.
            ce qui est bien avec ce script, c'est qu'il est entiere personalisable et c'est pas une usine a gaz comme arfoo et compagnie. De plus, ce script est assez facile a integer dans mon site

            maintenant, si tu trouves pas, c'est pas grave

            le pire, c'est que je suis sur que c'est un truc tout simple
            1. Tu as déja un créer un annuaire avec ce système ou tu commences juste à le monter ? Encore une fois, je ne peux que te le déconseiller vivement... il existe sans doute de biens meilleurs systèmes (celui-ci niveau sécurité c'est un 0)....

              Si tu veux vraiment utiliser ça je te file quand même volontier un coup de main hein :p
              1. deja testé, marche pas
                1. si tu veux la base, elle est sur le site de 1two, c'est la page index
              2. Ok, remet en place celle ligne là : for ($i=0; $i<mysql_num_rows($res); $i++)
                1. je l'ai dis plus haut, je suis novice en php

                  j'ai testé ta solution, c'est pas bon, ca reste sur deux colonnes et au lieu d'avoir 12 categorie, j'en ai plus que trois
                  1. Tu veux pas le refaire ? ou qu'on t'aide à le refaire ? ...

                    Ca doit se trouver aux lignes:

                    for ($i=0; $i<mysql_num_rows($res); $i++) 
                        { 
                        if ($i % 2 == 0) echo "<tr>"; 
                    


                    a mon humble avis, il les modifier de la sorte:

                    for ($i=0; $i<3; $i++) 
                        { 
                        if ($i % 3 == 0) echo "<tr>"; 
                    


                    EDIT:

                    De même que les lignes en bas de fichier:

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


                    Remplace le "% 2" par "% 3" . Je peux rien te garantir, je peux pas tester le code vu que j'ai pas la base de donnée.

                    Mais encore une fois... c'est affreux
                    1. genial !!! toi tu peux peut etre parce que tu connais bien le php mais, malheureusement, c'est pas mon cas, donc si tu peux juste me dire quoi changer pour avoir mes 3 colonnes, ce serait super cool de ta part
                      1. je te l'ai sous-entendue: réecrire le code.... ou bricoler par dessus du bidouillage
                        1. Pwah... t'as trouvé ou ce code ? il est vraiment affreux....
                          Tu veux pas le refaire ? ou qu'on t'aide à le refaire ?

                          Edit:
                          @mysql_fetch_row(@mysql_query());

                          sérieux quoi xD