8791 sujets

Développement web côté serveur, CMS

Bonjour à tous

Je cherche le moyen pour construire un tableau html dynamiquement en PHP qui accueillera le contenu d'une DB.

La où cela devient chaud, c'est que je dois gérer plusieurs 'rowspan'.

Voilà à quoi je voudrais arriver :

http://www.pixfactory.be/tableau/

Tout en sachant que mes 4 colonnes sont fixes mais que chaque catégorie peut avoir un nombre variable d'enregistrement (donc de rowspan).

Je ne cherche pas à avoir la solution sur un plateau mais toute l'aide/doc/astuce/lien/ me serait d'une grande utilité.

Je n'ai pas trouvé grand chose sur notre ami google ... Smiley bawling

Merci pour votre aide
Il faudrait d'abord savoir comment est structuré ta base de donnée,

Par exemple "cat1" ça correspond à une table differente de "contenu"?

Comment sont reliés tes tables entre elles, comment sait ton si "cat3" est parent de "contenu"?
En faite, il peut il y avoir plusieur "contenu" pour la "cat3", plusieur "cat3" pour la "cat2" et plusieur "cat2" pour la "cat1".
Modifié par sharky (17 Jan 2008 - 09:25)
en fait tu as l'equivalent d'un pb de listing hierarchique...

- soit tu fait des requetes a chaque fois pour connaitre le nb d'elements finaux

- soit tu fait les calculs avant l'affichage en parcourant les resultats obtenus avant en construisant un tableau php et ensuite une boucle d'affichage de ce tableau

- soit tu traite chaque ligne de tes resultats et tu stock chaque element final et l'enveloppe avec chaque categorie quand tu change :

un truc du genre (a faire pour chaque cat :S)

while ($row=$fetch_results)
$ma_ligne.='<td>contenu</td>';
$nb_element_3++;
if ($cat3!=$row['cat3']{
 $ma_cat3.='<td rowspan="'.$nb_element_3.'">'.$ma_ligne.'</td>';
$cat3=$row['cat3'];
$ma_ligne=false;
}

Modifié par steph29 (17 Jan 2008 - 10:36)
Merci pour cette réponse.
Je vais me creuser un peu la tête avec ca.

A 1ère vue, je ne pense pas que c'est juste car le rowspan (dans ce cas) se calcul à partir de ma colonne "contenu".

10 contenu et 2 cat3 = 1 rowspan de 8
+ 1 rowspan de 2

Et ainsi de suite ...

Et avec ta logique, je vais construire mon tableau à l'envers. Non ?

Je vais regarder à ca de plus près Smiley biggrin
Modifié par sharky (17 Jan 2008 - 11:43)
Administrateur
Bonjour,

pour ainsi dire oui. Du moins, il te faut le nombre de lignes dans la colonne N la plus à droite pour savoir quoi mettre comme rowspan=x dans la colonne N-1 x lignes plus haut ...

Si tu cherches des algos, ta structure ressemble à un arbre avec une racine et des descendants niveau 1, niveau 2, niveau 3 et enfin contenu, leur nombre étant variable.
Tu dois connaître pour chaque noeud parent le nombre de noeuds enfants (ce sera la valeur de l'attribut rowspan de ce noeud parent-là) donc parcourir cet arbre du bas vers le haut à un moment donné.
Ce ne sont pas les algos de parcours d'arbre qui manquent Smiley cligne

edit: et une fois ceci fait, tu as encore à afficher ta table
(niv1,niv2,niv3,contenu)
(1,1,1,1)
(,,,2)
(,,,3)
(,,2,1)
etc

Il y a certainement moyen de ne parcourir qu'une fois ton arbre et d'afficher ton tableau au fur et à mesure mais à moins que ton tableau ne soit gigantesque, ne t'embête pas et parcours(parcourre?) le 2 fois Smiley lol
A moins que tu veuilles te plonger dans les structures de données arborescentes et leurs algos qui peuvent un jour te servir bigrement
Modifié par Felipe (17 Jan 2008 - 12:21)