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 :

Boucle foreach après requête "GROUP BY"


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut Boucle foreach après requête "GROUP BY"
    Bonjour à tous.

    Développant sur Joomla, je souhaiterais utiliser cette requête pour grouper mes articles par fournisseur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php $db = JFactory::getDBO();
    $query = "SELECT fournisseur, article, SUM(quantite*prix) AS total";
    $query. = " FROM ma_table GROUP BY fournisseur ORDER BY fournisseur ASC";
    $db->setQuery($query);
    $list = $db->loadObjectList(); ?>
    A partir de là, sans la clause GROUP BY, j'ajoute la boucle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php foreach ($list as $champ) {
    $fournisseur=$champ->fournisseur;
    etc... ?>
    <?php echo $fournisseur; ?>
    <?php } ?>
    Le problème, c'est que le fournisseur va se répéter sur chaque ligne...

    Or je souhaiterais avoir une présentation de la sorte :

    FOURNISSEUR 1
    Article prix
    Article prix
    Article prix

    FOURNISSEUR 2
    Article prix
    Article prix
    Article prix
    ...

    Comment faire pour isoler le fournisseur ? Je pense qu'il faut faire des boucles imbriquées, non ?

    Je vous remercie de votre attention.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Par défaut
    Pour commencer, il faut corriger ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php $db = JFactory::getDBO();
    $query = "SELECT fournisseur, article, SUM(quantite*prix) AS total";
    $query. = " FROM ma_table GROUP BY fournisseur,article ORDER BY fournisseur,article ASC";
    $db->setQuery($query);
    $list = $db->loadObjectList(); ?>
    Ensuite, tu peux faire un truc dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
    $current_fournisseur=null;
    foreach ($list AS $champ) {
      $fournisseur=$champ->fournisseur;
      etc... 
      if($current_fournisseur!=$fournisseur) {
        $current_fournisseur=$fournisseur
        echo  $fournisseur; 
      }
      echo   $article $prix  ; 
    }
    ?>

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut
    Merci Fred, je vais essayer cette méthode.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut
    Merci Fred.

    La méthode fonctionne. Peut-on l'adapter avec une boucle foreach imbriquée dans une autre ?

    Merci encore.

Discussions similaires

  1. [SQL-Server] Boucle foreach et requêtes sql
    Par anjolin dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 06/06/2012, 10h08
  2. [MySQL] Exécution d'une requête dans un boucle foreach
    Par sissi25 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/12/2011, 11h05
  3. [Requête/SQL]Pb de "quote" avec un type memo
    Par Tintou dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 26/04/2007, 15h47
  4. [MySQL] Affichage du menu en boucle après requête effectuer
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 08/02/2006, 14h44

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