Bonjour,
Je souhaite récupérer mes données issues d'une BDD et les afficher dans un tableau HTML. Le problème c'est que mon tableau doit afficher les données en rowspan plus tard.
Pour l'instant je faisait tout le traitement sur une seule page :
Maintenant je souhaiterais passer à un modèle MVC, il faudrait donc que j'envoie à mon controlleur, le tableau des données que j'ai récupéré avec mon modéle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 $nligne = 0; $rowspan[0]=NULL;//Déclaration de rowspan pour ne pas avoir les notices $reponse = $bdd->prepare("SELECT * FROM cars ORDER BY Marque"); //On classe les résultats en fonction de la marque pour faciliter leur exploitation dans les boucles $reponse->execute(); while($donnees = $reponse->fetch()) { //Test pour voir si c'est une nouvelle marque if($rowspan[0][0] == $donnees[0])//C'est la même marque que la ligne précédente { array_push($rowspan,$donnees);//On met la nouvelle ligne à la fin du tableau } else//Si c'est une nouvelle marque { Insertion_tableau($rowspan,$nligne); $nligne ++; $rowspan = array($donnees); //On écrase data avec les données d'une nouvelle disso } } Insertion_tableau($rowspan,$nligne); //On fait une insertion aprés la boucle pour la dérniére marque du tableau for($i=1 ; $i<=$NbPage ; $i++) { echo " <a href=\"testmysql.php?p=$i\">$i</a> /"; } //******************************************************************************************************************* //Création tableau HTML function Insertion_tableau(&$rowspan, &$nligne) { if($rowspan[0] != NULL)//Condition pour la 1ere ligne (sinon rajoute ligne vide au début du tableau à cause de ma condition au 1er tour de boucle au dessus) { $height = count($rowspan); //On prend le nombre d'enregistrements dans data(qui representent le nb de voiture d'une même marque) pour calculer le rowspan if($height==1) // Si il y a une seule ligne { echo '<tr class="ligne_'.$nligne.'"> <td class="col_marque">'.$rowspan[0][0].'</td> <td>'.$rowspan[0][1].'</td> <td>'.$rowspan[0][2].'</td> <td>'.$rowspan[0][3].'</td> </tr>'; //On ne met pas de rowspan s'il ya une seule ligne } else //Si il y a plusieurs ligne { echo '<tr class="ligne_'.$nligne.'"> <td class="col_marque" rowspan="'.$height.'">'.$rowspan[0][0].'</td> <td rowspan="'.$height.'">'.$rowspan[0][1].'</td> <td>'.$rowspan[0][2].'</td> <td>'.$data[0][3].'</td> </tr>'; //On place le rowpsan sur la 1ere ligne for($i=1 ; $i<$height ; $i++) // On commence à 1 car la 1ere ligne a déjà été placé { echo '<tr class="ligne_'.$nligne.'"> <td>'.$rowspan[$i][2].'</td> <td>'.$rowspan[$i][3].'</td> </tr>'; } } } }
C'est la que ma question se pose:
Faudrait-il mieux envoyer un tableau simple et faire le traitement pour l'affichage en JS? Ou lors de la réception de la requête, je les place dans un tableau multidimensions comme j'ai fait jusqu'ici, sauf qu'au lieu de faire l'affichage à chaque changement de rowspan, je le met dans un array qui aura deja l'architecture de mon tableau HTML? Ou alors peut-être il y a-t-il une meilleurs solutions que celles la?
Voila si quelqu'un sait éventuellement quelle technique est la plus "correct" OU si il y en a une autre bien entendu.
Merci.
Partager