Aide tableau php

Résolu
cedric91 Messages postés 69 Statut Membre -  
cedric91 Messages postés 69 Statut Membre -
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. maniax
     
    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
    0
  2. cedric91 Messages postés 69 Statut Membre
     
    c'est une partie de code de l'annuaire 1two light
    https://www.1two.org/
    0
    1. maniax
       
      Oui bah c'est affreux =)
      0
  3. cedric91 Messages postés 69 Statut Membre
     
    ca me donne pas la solution non plus
    0
  4. maniax
     
    je te l'ai sous-entendue: réecrire le code.... ou bricoler par dessus du bidouillage
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cedric91 Messages postés 69 Statut Membre
     
    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
    0
  7. maniax
     
    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
    0
  8. cedric91 Messages postés 69 Statut Membre
     
    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
    0
  9. maniax
     
    Ok, remet en place celle ligne là : for ($i=0; $i<mysql_num_rows($res); $i++)
    0
  10. cedric91 Messages postés 69 Statut Membre
     
    deja testé, marche pas
    0
    1. cedric91 Messages postés 69 Statut Membre
       
      si tu veux la base, elle est sur le site de 1two, c'est la page index
      0
  11. maniax
     
    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
    0
  12. cedric91 Messages postés 69 Statut Membre
     
    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
    0
  13. maniax
     
    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 ?
    0
  14. cedric91 Messages postés 69 Statut Membre
     
    regarde
    http://www.amorpheusweb.fr/test/
    0
  15. maniax
     
    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>";
    		}
    
    0
  16. cedric91 Messages postés 69 Statut Membre
     
    actuelement oui
    0
  17. maniax
     
    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.
    0
  18. cedric91 Messages postés 69 Statut Membre
     
    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
    0
    1. cedric91 Messages postés 69 Statut Membre
       
      maintenant j'ai du boulot areinstaller tout le reste
      encore merci a toi
      0
    2. maniax
       
      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
      0
  19. cedric91 Messages postés 69 Statut Membre
     
    merci, je vais voir ca

    je fais resolu sur ce post et encore merci
    0