Bonjour,

Je souhaite formater les données issues d'une requête PDO sous forme de tableau croisée dynamique 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 |
+-----------------+-----+-----+-----+-----+
La requête PDO se compose comme ceci:

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 :

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
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
$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;
Merci pour votre aide.

Cordialement