gontran Posté 31 Juillet 2006 Posté 31 Juillet 2006 bonjour le hub, $req=mysql_query("select * from categorie order by nom ASC"); while ($data = mysql_fetch_array($req)) { $t[] = $data; }echo '<table width="400" border=1>';//affichage des categorie$n = 4; // nb de colonnefor($i = 0; $i <= (count($t) - 1); $i ++) {if ($i % $n == 0) { echo '<tr>'; } $id=$t[$i]['id']; $req=mysql_query("select * from sous_categorie where id_categorie='$id'"); while ($res=mysql_fetch_array($req)) { $nom_ss_cat=$res['nom']; } echo '<td>'; echo ''.$t[$i]['id'].''.$t[$i]['nom'].'<br>'.$nom_ss_cat.''; echo '</td>'; if ($i % $n == (3)) { echo '</tr>'; } } ?> </table> le code ci dessus me permet d'afficher une requete sur 4 colonnes dans un tableau. le probleme que j'ai est le suivant : je n'arrive pas a selectionner toute mes sous-categorie. la requete selectionne une seule valeur... est-ce quelqu'un voit ou ca deconne ? vous pouvez le voir a l'adresse suivante en test merci
Zodd Posté 31 Juillet 2006 Posté 31 Juillet 2006 (modifié) Salut, déja tu fais une requête SQL dans une boucle, c'est plus que déconseillé niveau perf et propreté du code, d'autant plus que dans ton cas c'est reglé en une seule requête avec jointures. Exemple : SELECT *FROM categories AS c, sous_categories AS scWHEREc.id_categorie=sc.id_categorie 2ème remarque tu as l'air de mélanger code php et code html c'est aussi déconseillé niveau lisibilité de code et maintenance, tu devrais passer par un moteur de templates qui a pour but de séparer tout ce qui concerne la mise en page et tout ce qu concerne la programmation pure, ça te faciliterait le boulot et ton code serait plus lisible! Sinon voici une fonction que j'ai créée pour mes besoins, je pense que son nom est très explicite : function array_split($array, $nb_col=2, $direction='col') { if(is_array($array)) { if($direction=='col') { $tlen=ceil(count($array) / $nb_col); for($col=0; $col<$nb_col; $col++) { for($row=0; $row<$tlen; $row++) { $new_arr[$col][]=$array[$row + ($tlen * $col)]; } } } else { for($row=0; $row<count($array)+($add_empty_row ? 1 : 0); $row=$row+$nb_col) { for($col=0; $col<$nb_col; $col++) { if($direction=='row') $new_arr[$col][]=$array[($row+$col)]; else $new_arr[$col][]=$array[($row+$col)]; } } } //print_r($new_arr); return $new_arr; } else { return false; }} Donc première argument c'est le tableau que tu veux diviser. 2ème argument : C'est le nombre de colonnes voulues 3ème, c'est 'col' ou 'row' si col ça donne ca : 1 2 3 45 6 7 8 si row : 1 3 5 72 4 6 8 Exemple 4 colonnes : $new_tab=array_split($old_tab, 4, 'col'); Zodd Modifié 31 Juillet 2006 par Zodd
gontran Posté 31 Juillet 2006 Auteur Posté 31 Juillet 2006 (modifié) ok je vais regarder ca... j'ai mis en place la jointure mais ca me sort pas ce que je veux... je continue... $req=mysql_query("SELECT * FROM categorie AS c, sous_categorie AS sc WHERE c.id=sc.id_categorie"); while ($data = mysql_fetch_array($req)) { $t[] = $data['c']; $j[]=$sc; }echo '<table align="center" width="700" border=1>';//affichage des categorie$n = 4; // nb de colonnefor($i = 0; $i <= (count($t) - 1); $i ++) {if ($i % $n == 0) { echo '<tr>'; } echo '<td width="175">'; echo '<a href="display.php?ss_cat='.$t[$i]['id'].'">'.$t[$i]['nom'].'</a><br>'; echo '<a href="display.php?dir='.$id_ss_cat.'">'.$nom_ss_cat.'</a>'; echo '</td>'; if ($i % $n == (3)) { echo '</tr>'; } } merci Modifié 31 Juillet 2006 par gontran
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant