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 :

Tableau croisé PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut Tableau croisé PHP
    Bonjour,

    Alors voici mon problème. Je cherche depuis plus d'une semaine sur Google et pleins de forums mais sans succès, je me perd complètement dans mes requêtes, while, foreach et j'en passe.

    Voici donc :

    J'ai une table que je vais nommer 'dossiersactifs', laquelle contient les champs suivants :
    • id //Numéro de dossier unique
    • type //Type de dossier
    • agent //Agent assigné au dossier


    Évidemment, j'ai des tables types et agents reliées à dossiersactifs pour assurer l'intégrité mais là n'est pas la question.

    L'information recherchée est le nombre total de dossier (count) par agent (group) et par type (group).

    Je suis en mesure de faire une boucle à l'intérieur d'une autre mais je me trouve avec un long résultat dans le genre :

    Agent 1
    Type1 : 2 dossiers
    Type2 : 3 dossiers
    Type3 : 2 dossiers

    Agent 2
    Type1 : 4 dossiers
    Type2 : 2 dossiers

    etc...

    L'affichage des résultats serait souhaité dans le format de la capture (si petite soit-elle) au bas de ce message, soit, sous forme de tableau avec le nom des agents en tête de colonne et le type de dossier en tête de ligne, pour éviter de répéter le type de dossier à chacun des agents.

    Existe t-il un géni qui lira ma problématique et qui aura une solution ? Je le souhaite et s'il existe, je promet de lui payer une bière LOL !!

    Merci beaucoup !
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    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
    $sql = "SELECT COUNT(*) as nb, type, agent FROM dossiersactifs GROUP BY type, agent";
    $sth = $cnx->query($sql);
    while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            $data[$row['type']][$row['agent']] = $row['nb'];
            $tblAgents[$row['agent']] = $row['agent'];
    }
     
    echo '<table>
                 <tr><td></td>';
    foreach($tblAgents as $agent) {
            echo '<td>' . $agent . '</td>';
    }
    echo '</tr>';
     
    foreach ($data as $type=>$counts) {
         echo '<tr>
                        <td>' . $type . '</td>';
         foreach($tblAgents as $agent) {
               echo '<td>' . $counts[$agent] . '</td>';
         }
        echo '</tr>';
    }
    echo '</table>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Merciiiiiii !

    J'ai seulement dû changer fetch(PDO.... par pg_fetch_assoc(... car mon navigateur me donnait une erreur 500 malgré que PDO est enable sur mon serveur mais sinon tout est parfait !!!

    Il ne me reste qu'à trouver une manière d'ajouter en dernière ligne, le total pour chacun des agents... une idée ???

    Merci encore !

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    moi je te proposerais bien de voir la requête d'une autre manière.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Select COUNT agent FROM mission WHERE ( SELECT FROM ) ;

    ( etc , car on peu a partir de la, compléter la requête adverse )

    si tu test ce chemin, à mon avis, tu pourra si tu ne trouve pas le bon résultat du premier coup, fait une manip des résultats en php.. ( O pif : http://php.net/manual/fr/function.array-combine.php )

    bon courage en tout cas

Discussions similaires

  1. [MySQL] Tableau croisé en PHP
    Par orke22 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 08/04/2010, 15h12
  2. parcourir un tableau croisé excel avec php
    Par ballantine's dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2010, 14h32
  3. [MySQL] [PHP/MySQL] Un tableau croisé [quasi] dynamique.
    Par Maljuna Kris dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 17/03/2009, 23h33

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