Bonjour,
Je suis sûr que c'est un problème simple mais je tourne en rond.
Contexte : J'ai une table (extrait en pièce jointe) qui contient un champ titre2 qui peut contenir soit un titre soit une série de titres séparés par un ';'
Le but est d'arriver à un tableau avec chaque titre sur une ligne.
Voici le code : la requête donne le contenu de la pièce jointe et la class MachineClass est juste un objet pour porter les données.
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 global $Site; $Site->Bdd->Phrase_SQL = " SELECT titre2_element.* FROM titre2_element WHERE titre2_element.ElementTable_Id = 3 ORDER BY titre2_element.Id; "; $result = $Site->Bdd->Requete($Site->Bdd->Phrase_SQL); $i = 0; $TitreEl2 = array(); while ($row = $result->fetch()) { $TitreEl2[$i] = new MachineClass(- 1); $TitreEl2[$i]->Titre2 = $row['Titre2']; $TitreElTab = explode(';', $TitreEl2[$i]->Titre2); //On éclate le titre2 pour obtenir les différents titres $Premier = 1; foreach ($TitreElTab as $TitreEL) { //On boucle sur les titres if ($Premier != 1) { array_push($TitreEl2,$TitreEl2[$i]); //Dans la version complète, il y a d'autres champs d'où la recopie complète de l'enregistrement $i ++; } else { $Premier = 0; } $TitreEl2[$i]->Titre2 = $TitreEL; echo '<br/>'.$i.' - '.$TitreEl2[$i]->Titre2; //ici chaque titre est bien assigné } $i ++; } foreach ($TitreEl2 AS $TitreEl) { echo '<br/>'.$TitreEl->Titre2; //pour chaque ligne avec plusieurs titres, seul le dernier apparaît dans toutes les lignes }
Partager