IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Groupage et dégroupage dans un tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    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

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    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 : 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
     
    <?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).

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    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.

  4. #4
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 262
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    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.

  6. #6
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 262
    Par défaut
    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)

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    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.

  8. #8
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 262
    Par défaut
    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)

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    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..

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    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 : 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
     
    <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>

  11. #11
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 262
    Par défaut
    tu pourrais mettre le var_dump du $result de ta requête complète ?
    (genre, si je reprend ton exemple:
    +/- France (3)
    .......+/- Paris (2)
    ..............Philipe, A
    ..............John, B
    .......+/- Lille (1)
    ..............Fred, A
    +/- Italie (2)
    .......+/- Milan (1)
    ..............Tony, A
    .......+/- Venise (1)
    ..............Roberto, C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    je vois pas trop comment l'appliquer..

  13. #13
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 262
    Par défaut
    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...)

  14. #14
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Par défaut
    J'ai trouvé la solution en imbricant les foreach....
    Merci kalimukti pour ton 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
    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>

  15. #15
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 262
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01
  3. Réponses: 2
    Dernier message: 23/11/2003, 18h44
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo