Bonjour a tous,
J'ai beau chercher je n'arrive pas a trouver la requete.
Je veux sortir toutes les valeurs d'un champs dans un tableau avec $ROW.
Savez vous quelle est la ligne de code pour le faire de facon horizontal dans un tableau ?
Merci
Bonjour a tous,
J'ai beau chercher je n'arrive pas a trouver la requete.
Je veux sortir toutes les valeurs d'un champs dans un tableau avec $ROW.
Savez vous quelle est la ligne de code pour le faire de facon horizontal dans un tableau ?
Merci
Salut,
c'est du charabia
et sans plus de précision (code, présence de données d'exemple, résultat escompté)... pas d'aide.
J'ai rien compris non plus, mais vu qu'il est question de requête et d'affichage dans un tableau, peut-être que ce tuto peut t'aider : Affichage de données dans un tableau HTML
Dans les details, voici mon code
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 <?php $db = mysql_connect('localhost', 'root', 'root') or die('Erreur de connexion '.mysql_error()); mysql_select_db('ca_db',$db) or die('Erreur de selection '.mysql_error()); $sql3 = " SELECT Marque,Montant_CA,Year_CA FROM ca_web WHERE Customers='51489446' ORDER BY Marque ASC "; $combo3 = mysql_query($sql3) or die("Requete pas comprise"); $combo2 = mysql_query($sql3) or die("Requete pas comprise"); echo '<table border="1"><thead><tr>'; while ($row3 = mysql_fetch_array($combo3)) { echo '<th > ' . $row3[0] . '</th>' ; } echo '</tr>'; echo '<tr>'; while ($row3 = mysql_fetch_array($combo2)) { echo '<td >' . $row3[1] . '</td>' ; } echo '</tr></thead><tbody>'; ?>
J'obtien ce résultat.
M1 M1 M1 M2 M2 M2 M3 M3 M3 M4 M4 M4
30.0000 0.0000 0.0000 0.0000 0.0000 144.0000 900.5000 0.0000 0.0000 0.0000 144.0000 900.5000
Moi j'essaye d'obtenir ca
M1 M2 M3 M4
2014 30.0000 0.0000 144.0000 0.0000
2013 0.0000 144.0000 0.0000 0.0000
2012 0.0000 0.0000 900.5000 0.0000
Auriez-vous une idée ?
Merci
Salut,
ce que tu cherches à faire correspond à un tableau croisé dynamique et c'est autrement plus ardu qu'un banal affichage d'un tableau sur SELECT.
D'autant plus que MySql est très pauvre de ce côté...
Voici une soluce mais ça sort du four, je n'ai absolument rien testé :
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 $cnx = mysql_connect('localhost', 'root', 'root') or die ('Erreur de connexion '.mysql_error()); mysql_select_db('ca_db', $cnx) or die ('Erreur de selection '.mysql_error()); $sql = <<<'sql' SELECT Marque, Year_CA, COALESCE(SUM(Montant_CA), 0) AS total_ca FROM ca_web WHERE Customers = '51489446' GROUP BY Marque ASC, Year_CA DESC sql; $qry = mysql_query($sql) or die ('Requete pas comprise'); $brands = array(); $years = array(); $table = array(); $idx_brands = 0; $idx_years = 0; while ($row = mysql_fetch_assoc($qry)) { if ( ! isset($brands[$row['Marque']])) { $brands[$row['Marque']] = ++$idx_brands; } $i = $brands[$row['Marque']]; if ( ! isset($years[$row['Year_CA']])) { $years[$row['Year_CA']] = ++$idx_years; } $j = $years[$row['Year_CA']]; $table[$i][$j] = $row['total_ca']; } ksort($brands); krsort($years); echo <<<'html' <table border="1"> <thead> <tr> html; foreach ($brands as $brand => $idx) { echo '<th>', htmlspecialchars($brand), '</th>'; } echo <<<'html' </tr> </thead> <tbody> html; foreach ($years as $year => $j) { echo '<tr>'; foreach ($brands as $brand => $i) { echo '<td>', ((isset($table[$i][$j])) ? $table[$i][$j] : 0), '</td>'; } echo '</tr>'; } echo <<<'html' </tbody> </table> html;
Effectivement j'étais sur le mauvais chemin.
Un tres grand merci a vous pour le code, du coup vous me l'avez entièrement écrit.
Il fonctionne parfaitement, j'ai fait deux trois petites modif car j'avais une erreurCela venait des cotes sur les HTML.Parse error: syntax error, unexpected T_SL.
J'aimerais ne pas abuser de votre gentillesse mais comment est-il possible de l'avoir sous cette forme le tableau.
Un tres grand merci
Quelque chose comme ça :
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 $cnx = mysql_connect('localhost', 'root', 'root') or die ('Erreur de connexion '.mysql_error()); mysql_select_db('ca_db', $cnx) or die ('Erreur de selection '.mysql_error()); $sql = <<<'sql' SELECT Marque, Year_CA, COALESCE(SUM(Montant_CA), 0) AS total_ca FROM ca_web WHERE Customers = '51489446' GROUP BY Marque ASC, Year_CA DESC sql; $qry = mysql_query($sql) or die ('Requete pas comprise'); $brands = array(); $years = array(); $table = array(); $idx_brands = 0; $idx_years = 0; while ($row = mysql_fetch_assoc($qry)) { if ( ! isset($brands[$row['Marque']])) { $brands[$row['Marque']] = ++$idx_brands; } $i = $brands[$row['Marque']]; if ( ! isset($years[$row['Year_CA']])) { $years[$row['Year_CA']] = ++$idx_years; } $j = $years[$row['Year_CA']]; $table[$i][$j] = $row['total_ca']; } ksort($brands); krsort($years); echo <<<'html' <table border="1"> <thead> <tr> <th>Année</th> html; foreach ($brands as $brand => $idx) { echo '<th>', htmlspecialchars($brand), '</th>'; } echo <<<'html' <th>Total</th> </tr> </thead> <tbody> html; foreach ($years as $year => $j) { $total = 0; echo <<<html <tr> <td>{$year}</td> html; foreach ($brands as $brand => $i) { $ca = (isset($table[$i][$j])) ? $table[$i][$j] : 0; $total += $ca; echo '<td>', $ca, '</td>'; } echo <<<html <td>{$total}</td> </tr> html; } echo <<<'html' </tbody> </table> html;
Génial, effectivement je l'avais inclus dans la boucle forearch c'est pour cela que je n'arrivais pas a afficher correctement les données.
Si j'ai bien compris l'ordre des années dans le tableau est géré par la requete SQL avec GROUP BY Year_CA DESC, Marque ASC c'est bien ca ?
en partie oui, par le php aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ksort($brands); // pas nécessaire, je l'avoue krsort($years); // obligatoire
Ok merci beaucoup de toutes ces informations.
Je ne connaissais pas KSORT.
J'arrete de vous embeter je vais essayer de me debrouiller seul pour la suite
Encore un enorme merci pour votre aide.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager