Bonjour,
Je souhaite formater les données issues d'une requête PDO sous forme de tableau croisée dynamique comme ceci:
La requête PDO se compose comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6+-----------------+-----+-----+-----+-----+ | Art title | FR | EN | DE | ES | <- liens permettant de changer la vue "art title", par defaut liste les derniers article en français +-----------------+-----+-----+-----+-----+ | bonjour-paris | URL | URL | URL | URL | <- liens permettant d accéder à l édition/modification des traductions de l article | bonne-nuit | URL | URL | URL | URL | +-----------------+-----+-----+-----+-----+
Code sql : 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 SELECT SQL_CALC_FOUND_ROWS art.id AS art_id, t.id, t.title, t.permalink, l.code AS lang, t.status AS status, UNIX_TIMESTAMP(t.modified) AS modified FROM ( SELECT id FROM articles ORDER BY created DESC LIMIT 10 ) art LEFT OUTER JOIN translations t ON art.id = t.art_id LEFT OUTER JOIN languages l ON l.code = t.lang
Les données récupérées sont stockées dans un tableau $results['articles'] dont voici un exemple de contenu :
Mon problème est que je ne sais pas comment générer le tableau en gérant le header et les lignes à la fois...
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 Array ( [2] => Array ( [0] => Array ( [id] => 5 [title] => Bonjour de paris [permalink] => bonjour-de-paris [lang] => fr [status] => closed [modified] => 1354147689 ) [1] => Array ( [id] => 6 [title] => Hello from paris [permalink] => hello-from-paris [lang] => en [status] => publish [modified] => 1354147689 ) [2] => Array ( [id] => 7 [title] => Hola de paris [permalink] => hola-de-paris [lang] => es [status] => closed [modified] => 1354147689 ) [3] => Array ( [id] => 8 [title] => Hallo aus paris [permalink] => Hallo-aus-paris [lang] => de [status] => publish [modified] => 1354147689 ) ) [1] => Array ( [0] => Array ( [id] => 1 [title] => Bienvenue chez moi [permalink] => Bienvenue-chez-moi [lang] => fr [status] => closed [modified] => 1354147689 ) [1] => Array ( [id] => 2 [title] => Welcome home [permalink] => welcome-home [lang] => en [status] => publish [modified] => 1354147689 ) [2] => Array ( [id] => 3 [title] => Bienvenida a casa [permalink] => bienvenida-a-casa [lang] => es [status] => publish [modified] => 1354147689 ) [3] => Array ( [id] => 4 [title] => Willkommen zu Hause [permalink] => willkommen-zu-Hause [lang] => de [status] => closed [modified] => 1354147689 ) ) ) 1
Merci pour votre aide.
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 $output = ''; $output .= "<tr>\n"; $output .= "<th>Article</th>\n"; $output .= "<th>FR</th>"; $output .= "<th>EN</th>"; $output .= "<th>DE</th>"; $output .= "<th>ES</th>"; $output .= "</tr>"; $lang = (isset($_GET['lang'])) ? $_GET['lang'] : 'fr'; foreach ($results['articles'] as $gouparticle) { $output .= "<tr>"; foreach ($gouparticle as $article) { if($article['lang'] == $lang) { $output .= "<td>{$article['title']}</td>"; $output .= "<td>{$article['lang']}</td>"; } if($article['lang'] != $lang){ $output .= "<td>{$article['lang']}</td>"; } } $output .= "</tr>"; } echo $output;
Cordialement
Partager