Bonjour.
C'est peut-être le syndrome du vendredi mais je ne trouve pas la bonne manière de présenter mes données.
Soit une fonction dans le modèle qui retourne le résultat d'une requête.
Comme un stage peut couvrir plusieurs disciplines, je peux avoir plusieurs lignes de résultat pour un stage.
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 public function listeStages() { $sql = " SELECT sn.ssn_id, sn.ssn_code, sn.ssn_libelle, sn.ssn_date_debut, sn.ssn_date_fin, sn.ssn_capacite, st.stg_id_etablissement, st.stg_id_conseiller_pedago, e.etb_nom, c.cmn_id, c.cmn_nom, p.prs_nom, p.prs_prenom, d.dsc_id, d.dsc_nom FROM th_stage_stg st INNER JOIN te_session_ssn sn ON sn.ssn_id = st.stg_id_session INNER JOIN te_personne_prs p ON p.prs_id = st.stg_id_conseiller_pedago INNER JOIN te_etablissement_etb e ON e.etb_id = st.stg_id_etablissement INNER JOIN tr_commune_cmn c ON c.cmn_id = e.etb_id_commune INNER JOIN tj_stg_concerner_dsc_scd sc ON sc.scd_id_stage = st.stg_id_session INNER JOIN te_discipline_dsc d ON d.dsc_id = sc.scd_id_discipline "; return $this->_db->fetchAll($sql); }
Maintenant, je veux présenter les données de ce résultat de requête dans le tableau de données d'une vue :
Et là je coince sur la manière de faire en sorte qu'un stage ne prenne qu'une ligne de mon tableau en rassemblant toutes les disciplines du stage séparées par des virgules, de la forme "Physique, Chimie".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11<table> <tr> <th>Code</th> <th>Libellé</th> <th>Dates</th> <th>Établissement</th> <th>Conseiller prédagogique</th> <th>Discipline(s) couverte(s)</th> <th> </th> </tr> <?php foreach($this->stages as $stage) : ?>
J'ai commencé à faire ce genre de truc :
Et là il faut que je passe à l'instance suivante du foreach pour éventuellement compléter la cellule accueillant les disciplines. Mais si le stage n'a qu'une discipline, je n'ai pas encore changé de ligne de tableau et les données vont se mélanger.
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 <?php if($id_prec != $stage['ssn_id']) { // Nouveau stage à traiter $disciplines = $this->escape($stage['dsc_nom']); $newline = 1; } else { // Stage multi-disciplines $disciplines .= ', '.$this->escape($stage['dsc_nom']); $newline = 0; } ?> <?php if($newline == 1) : ?> <tr> <td><?php echo $this->escape($stage['ssn_code']); ?></td> <td><?php echo $this->escape($stage['ssn_libelle']); ?></td> <td>Du : <?php echo $this->escape($stage['ssn_date_debut']); ?><br /> Au : <?php echo $this->escape($stage['ssn_date_fin']); ?> </td> <td> <?php echo $this->escape($stage['etb_nom']); ?> ( <?php echo $this->escape($stage['cmn_nom']); ?>) </td> <td> <?php echo $this->escape($stage['prs_prenom']); ?> <?php echo $this->escape($stage['prs_nom']); ?> </td> <td> <?php endif; ?> <?php echo $this->escape($disciplines); ?>
Partager