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

Langage PHP Discussion :

Récupérer des données en bdd seulement si des champs sont identiques


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Par défaut Récupérer des données en bdd seulement si des champs sont identiques
    Bonsoir tout le monde,

    Je travaille sur un projet symfony.
    Dans ce cadre, je récupère mes données en bdd de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $repo = $this
                    ->getDoctrine()
                    ->getManager()
                    ->getRepository('Bundle:Nom')
                ;
                $list = $repo->findBy(array('client' => $clientID));
    Ça ça fonctionne, j'arrive à afficher mes données avec twig.
    Mais ensuite ça se complique, je dois maintenant faire une synthèse de ces données. J'ai plusieurs champs dans ma table dont nom, option, prix.
    En gros, je dois faire une boucle (ou même plusieurs je pense) pour regrouper les lignes dont le nom + l'option correspondent pour faire un total du prix.
    J'aurai ainsi plusieurs sous groupe (enregistrés dans un tableau ?) certains avec une seule ligne, d'autres avec plusieurs et je pourrais ainsi faire une synthèse.

    Je sais pas si c'est très clair, si vous voulez des détails n'hésitez pas.
    J'aimerais bien résoudre ça ce soir

    Merci d'avance pour votre temps !

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    C'est peut-être clair pour certains mais en tout cas, pas pour moi !

    1- Tu donnes un code qui est censé récupérer tes données ; c'est quoi que tu as dans $list ?

    2-
    regrouper les lignes dont le nom + l'option correspondent pour faire un total du prix.
    Bizarre, quand on lit ça, je comprend nom+option=prix. C'est sûrement pas ça. Peux-tu préciser ?

    3- C'est quoi les sous-groupes dont tu parles ? Et y aurait quoi dedans ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Par défaut
    Oui je me doutais que ce n'était pas clair ^^

    Je vais essayé d'expliquer, voici une table d'exemple :

    Nom : Sans titre 1.jpg
Affichages : 226
Taille : 63,6 Ko

    Les sous groupes sont regroupés par couleur. Sachant que je ne peux pas utiliser la colonne prix car j'ai aussi un champ quantité donc les prix varient, là c'est juste pour l'exemple.

    Dans $list, j'ai toute la table.

    Je voudrais, à partir de ce $list ou avec d'autres requêtes faire les totaux de prix.

    Exemple :
    les ids 1, 2, 4 et 11 sont égals à 20
    les ids 6, 8 et 9 sont égals à 21
    etc (beaucoup de données à traiter)

    Est ce que c'est plus clair ?

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Fais une recherche dans ce forum avec le mot clef GROUP BY.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Oui, cette fois, c'est clair ; je sentais que la solution passait par une bonne requête SQL et je crois que ProgElecT donne la solution. Un truc du genre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom,option,SUM(prix) from nom_de_ta_table GROUP BY prix

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 126
    Par défaut
    Re, après quelques recherches sur groupBy et le queryBuilder, je m'en suis sortie !
    Merci de m'avoir fait penser à groupBy !

    Si ça peut aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function group()
     
        {
            $qb = $this->createQueryBuilder('m');
     
            $qb ->select('m.nom as noms, m.option as options, SUM(m.objets) as objets , SUM(m.prix) as sommePrix')
                  ->groupBy('m.nom, m.options');
     
     
            return $qb->getQuery()->getResult();
        }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/09/2018, 08h38
  2. [XL-2010] Mise à jour des données d'une feuille à partir des données d'une ListView
    Par TSAFACK-M dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/04/2018, 02h58
  3. récupérer des données de BDD sur la page JSP/servlet
    Par B.M.W83 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 02/02/2017, 17h47
  4. [AC-2013] Répliquer des données - décalage dans la cadence des données
    Par kimai dans le forum Access
    Réponses: 5
    Dernier message: 30/10/2015, 17h46
  5. Enregistrer et récupérer des données (sans BDD)
    Par Prodiguy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2013, 15h31

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