Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2011, 16h57   #1
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Par défaut Groupage et dégroupage dans un tableau

Bonjour,

Je souhaites réaliser un tableau dont les données sont issue d'une table, et dans ce tableau je souhaite pouvoir grouper et degrouper mes lignes par pays et ville, quelqu'un peut-il m'éclairer sur la structure d'un tableau comprenant des groupages.
je souhaiteras obtenir le resultats present dans le Tableau# ci-dessous.

Table#

ID Pays Ville Nom Level
1 France Paris Philipe A
2 France Paris John B
3 France Lille Fred A
4 Italie Milan Tony A
5 Italie Venise Roberto C

Tableau#
+/- France (3)
.......+/- Paris (2)
..............Philipe, A
..............John, B
.......+/- Lille (1)
..............Fred, A
+/- Italie (2)
.......+/- Milan (1)
..............Tony, A
.......+/- Venise (1)
..............Roberto, C
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h37   #2
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
en PHP, les tableaux peuvent être indexés avec ce que tu veux, y compris des chaines de caractères. Et les valeurs d'un tableaux peuvent également être des tableaux.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
$tableau = array(
    "France" => array(
        "Paris" => array(
            "Philippe, A",
            "Johnn, B"
        )
    ),
    "Italie" => array(
        "Milan" => array(
            "Tony",
        )
    )
);
?>
Sinon, une solution plus propre serait de créer des classes (Une classe Pays qui contient plusieurs objets Ville, qui contiennent eux-même plusieurs objets Personne).
Climoo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/10/2011, 19h36   #3
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Oui je comprend bien le principe mais c'est le fait de faire des groupage issue d'une même table qui me bloque.
J'ai cherche sur le net, mais je n'ai pas trouve de tutoriel répondant a mon problème.
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 11h22   #4
Membre confirmé
 
Homme Lionel Chaumeau
Développeur Web
Inscription : octobre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Lionel Chaumeau
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2011
Messages : 75
Points : 264
Points : 264
Citation:
Envoyé par Budy123 Voir le message
Oui je comprend bien le principe mais c'est le fait de faire des groupage issue d'une même table qui me bloque.
J'ai cherche sur le net, mais je n'ai pas trouve de tutoriel répondant a mon problème.
Bonjour,
un 'group by' directement dans ta requête devrait résoudre ton problème, non ?
Code :
1
2
3
...
'group by pays, ville, nom'
...
après je suis assez d'accord avec budy123: un petit pattern composite pour respecter tes regroupements et hop...
__________________
My laptop, my bike and my double-sticks...
kalimukti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 12h13   #5
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Bonjour kalimukti,

Un group by ne résoudra pas le problème, je souhaites avoir un tableau avec la possibilité d'afficher le détail ou de le cacher un peu comme un groupage de lignes dans Excel.
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 12h20   #6
Membre confirmé
 
Homme Lionel Chaumeau
Développeur Web
Inscription : octobre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Lionel Chaumeau
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2011
Messages : 75
Points : 264
Points : 264
Citation:
Envoyé par Budy123 Voir le message
Bonjour kalimukti,

Un group by ne résoudra pas le problème, je souhaites avoir un tableau avec la possibilité d'afficher le détail ou de le cacher un peu comme un groupage de lignes dans Excel.
Un petit treeview alors, nan ? (cf jQuery Treeview Plugin, par exemple)
__________________
My laptop, my bike and my double-sticks...
kalimukti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 12h44   #7
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Oui c'est ce sur quoi je m'oriente, j'ai trouvé des exmples, mais aucun avec gestion de table SQL et je n'arrive pas insérer ma table sql.
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 14h12   #8
Membre confirmé
 
Homme Lionel Chaumeau
Développeur Web
Inscription : octobre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Lionel Chaumeau
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2011
Messages : 75
Points : 264
Points : 264
Citation:
Envoyé par Budy123 Voir le message
Oui c'est ce sur quoi je m'oriente, j'ai trouvé des exmples, mais aucun avec gestion de table SQL et je n'arrive pas insérer ma table sql.
c'est là où le pattern composite peut t'aider (si tu tappes sur google "pattern composite php", tu peux tomber sur un ou deux tutos...),
présentation

le principe:
- faire les group by que tu veux dans ta requête sql
- traduire ton tableau résultat en imbricrations de <ul> et <li>
(le pattern composite te permet de faire ça)
***(sinon, ben une imbrication de foreach devrait te permettre de bricoler ton code html)****
- convertir tes listes imbriquées html en treeview avec un code client comme le pluggin treeview de Jquery
(je peux t'envoyer le lien d'un tuto du pattern en php par MP si tu veux)
__________________
My laptop, my bike and my double-sticks...
kalimukti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 14h28   #9
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Excelent, c'est tout a fait dans l'esprit de ce que je cherchais.
Je viens bien que tu m'envoie le lien d'un tuto du pattern en php...

Merci pour le coup de main..
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 16h30   #10
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
J'ai les tutos pattern composite et je n'ai pas réussi à le mettre en application, je me suis donc orienté vers un bricolage de code (ci-dessous) mais le groupage dégroupage ne fonctionne pas pour les accounts.


Code :
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
 
<div id="container">
	<div id="content">			
		<ul id="sitemap">
			<li><a href="#">Country</a>
				<ul>
					<?php 	
					$connection = mysql_connect($db_host, $db_user, $db_pass) or die ("Unable to connect to DB"); 
					mysql_select_db($db_name, $connection); 
					$query = "SELECT * FROM `warehouseoccupancy` GROUP BY Facility_City "; 
					$result = mysql_query($query, $connection);  
					while ($r__ = mysql_fetch_array($result)) { 		
					echo "
					<li><a href='#'>".$r__['Facility_City']."</a>
					";
			   	}
					$query_ = "SELECT * FROM `warehouseoccupancy` WHERE Facility_ID = ".intval($r__['Facility_ID'])." GROUP BY Account_Name ";
					$result_ = mysql_query($query_, $connection); 
					while ($r___ = mysql_fetch_array($result_)) { 		
					echo "
					<ul>
					<li><a href='#'>".$r___['Account_Name']."</a></li>
					</ul></li>
					";	
 
			     } 	
					?>
				</ul>		
			</li>
		</ul>
	</div>
</div>
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 16h42   #11
Membre confirmé
 
Homme Lionel Chaumeau
Développeur Web
Inscription : octobre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Lionel Chaumeau
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2011
Messages : 75
Points : 264
Points : 264
tu pourrais mettre le var_dump du $result de ta requête complète ?
(genre, si je reprend ton exemple:
Citation:
+/- France (3)
.......+/- Paris (2)
..............Philipe, A
..............John, B
.......+/- Lille (1)
..............Fred, A
+/- Italie (2)
.......+/- Milan (1)
..............Tony, A
.......+/- Venise (1)
..............Roberto, C
Code :
1
2
3
select pays, ville, nom, prenom
from table
group by pays, ville, nom, prenom
(enfin, une partie du var_dump si c'est long)
__________________
My laptop, my bike and my double-sticks...
kalimukti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 16h55   #12
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
je vois pas trop comment l'appliquer..
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 17h03   #13
Membre confirmé
 
Homme Lionel Chaumeau
Développeur Web
Inscription : octobre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Lionel Chaumeau
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2011
Messages : 75
Points : 264
Points : 264
Citation:
Envoyé par Budy123 Voir le message
je vois pas trop comment l'appliquer..
var_dump
(c'est pour voir comment faire un petit jeu de foreach...)
__________________
My laptop, my bike and my double-sticks...
kalimukti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 18h01   #14
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
J'ai trouvé la solution en imbricant les foreach....
Merci kalimukti pour ton aide

Code :
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
 
<div id="container">
	<div id="content">			
		<ul id="sitemap">
 
					<?php 	
					$q = "SELECT ISOCountryCode, DistrictDescription, SUM(AmbientCap) as SUMAmbientCap FROM `warehouseoccupancy` GROUP BY ISOCountryCode "; 
					$res = mysql_query($q, $connection);  
					while ($r_ = mysql_fetch_array($res)) {		
					echo "
					<li><a href='#'>***** ".$r_['ISOCountryCode']." - ".$r_['DistrictDescription']." (".$r_['SUMAmbientCap'].")</a>
					";
					echo"<ul>";
					$query = "SELECT * FROM `warehouseoccupancy` WHERE ISOCountryCode = '".$r_['ISOCountryCode']."' GROUP BY ISOCountryCode, Facility_ID "; 
					$result = mysql_query($query, $connection);  
					while ($r__ = mysql_fetch_array($result)) {		
					echo "
					<li><a href='#'>".$r__['Facility_City'].",(".$r__['Facility_Description'].", ".$r__['Facility_ID'].")</a>
					";
 
					$query_ = "SELECT * FROM `warehouseoccupancy` WHERE Facility_ID = ".intval($r__['Facility_ID'])." ";
					$result_ = mysql_query($query_, $connection); 
					echo"<ul>";
					while ($r___ = mysql_fetch_array($result_)) { 		
					echo " 
					<li><a href='#'>".$r___['Account_Name']."</a></li>
					";
					}
					echo"</ul></li>";} 
			    echo"</ul></li>"; } 	
 
					?>
 
			<li><a href="#">FR</a>
				<ul>
				<li><a href="#">Test</a></li>
				</ul>
		</ul>
	</div>
</div>
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 18h55   #15
Membre confirmé
 
Homme Lionel Chaumeau
Développeur Web
Inscription : octobre 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Lionel Chaumeau
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2011
Messages : 75
Points : 264
Points : 264
Citation:
Envoyé par Budy123 Voir le message
J'ai trouvé la solution en imbricant les foreach....
Merci kalimukti pour ton aide
you're welcome budy
__________________
My laptop, my bike and my double-sticks...
kalimukti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h02.


 
 
 
 
Partenaires

Hébergement Web