Aide tableau php

Résolu/Fermé
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012 - 7 juil. 2011 à 17:52
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012 - 7 juil. 2011 à 21:09
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>";
			}




A voir également:

18 réponses

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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 18:53
c'est une partie de code de l'annuaire 1two light
https://www.1two.org/
0
Oui bah c'est affreux =)
0
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 18:56
ca me donne pas la solution non plus
0
je te l'ai sous-entendue: réecrire le code.... ou bricoler par dessus du bidouillage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 19:00
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
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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 19:15
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
Ok, remet en place celle ligne là : for ($i=0; $i<mysql_num_rows($res); $i++)
0
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 19:42
deja testé, marche pas
0
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 19:42
si tu veux la base, elle est sur le site de 1two, c'est la page index
0
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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 20:03
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
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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 20:16
regarde
http://www.amorpheusweb.fr/test/
0
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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 20:25
actuelement oui
0
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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 20:44
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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 20:46
maintenant j'ai du boulot areinstaller tout le reste
encore merci a toi
0
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
cedric91 Messages postés 64 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2012
7 juil. 2011 à 21:09
merci, je vais voir ca

je fais resolu sur ce post et encore merci
0