Aller au contenu

tableau dynamique


Sujets conseillés

Posté

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

Posté (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 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 :

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 4
5 6 7 8

si row :

1 3 5 7
2 4 6 8

Exemple 4 colonnes :

$new_tab=array_split($old_tab, 4, 'col');

Zodd

Modifié par Zodd
Posté (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 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

Modifié par gontran

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...