Version complète: sur le forum Webmaster Hub : tableau dynamique
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
gontran
bonjour le hub,

CODE
    $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 colonne
for($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
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 :

CODE
SELECT *
FROM categories AS c, sous_categories AS sc
WHERE
c.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 :

CODE
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 :

CODE
1 2 3 4
5 6 7 8


si row :

CODE
1 3 5 7
2 4 6 8


Exemple 4 colonnes :
CODE
$new_tab=array_split($old_tab, 4, 'col');


Zodd
gontran
ok je vais regarder ca...
j'ai mis en place la jointure mais ca me sort pas ce que je veux...
je continue...

CODE
    $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 colonne
for($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
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.