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 :

affichage résultat MYSQL et hiérarchie [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Par défaut affichage résultat MYSQL et hiérarchie
    Bonjour à tous,

    voila ma requete SQL qui me donne les valeurs que je veux :

    SELECT
    accounts.id as STRUCTUREID,
    accounts.`name` as STRUCTURE,
    accounts.date_entered as DATECREA,
    users.user_name as CREERPAR,
    accounts.date_modified as DATEMODIF,
    modifier.user_name as MODIFPAR,
    accounts_cstm.nature_structure_c AS NATURE,
    accounts_cstm.statut_juridique_c,
    accounts_cstm.secteur_activite_c,
    accounts_contacts.contact_id,
    contacts.first_name AS NOM,
    contacts.last_name AS PRENOM,
    contacts.id,
    contacts.date_entered,
    contacts.date_modified
    FROM
    accounts
    INNER JOIN users AS modifier ON accounts.modified_user_id = modifier.id
    INNER JOIN users ON accounts.created_by = users.id
    INNER JOIN accounts_cstm ON accounts_cstm.id_c = accounts.id
    INNER JOIN accounts_contacts ON accounts_contacts.account_id = accounts.id AND accounts_contacts.deleted = 0
    INNER JOIN contacts ON contacts.id = accounts_contacts.contact_id AND contacts.deleted = 0
    WHERE
    accounts.deleted = 0 AND
    accounts_cstm.nature_structure_c LIKE \"%cinema%\"
    ORDER BY
    accounts.`name` ASC

    et ensuite j'ai une simple page .php qui m'affiche

    STRUCTUREID | STRUCTURE | NOM | PRENOM ...

    tous ça est juste, mais comme j'ai plusieurs NOM (contacts.last_name ) par STRUCTURE (accounts.`name`)

    j'ai par exemple

    1 | le cinema machin | DUPONT |MICHEL
    1 | le cinema machin | FONTAINE |THOMAS
    1 | le cinema machin | LYON |JULIE
    2 | le cinema truc | BOB |TIM
    2 | le cinema truc | HULION |DOMINIQUE

    moi je voudrais afficher un beau truc comme ça :

    1 | le cinema machin
    > DUPONT |MICHEL
    > FONTAINE |THOMAS
    > LYON |JULIE

    2 | le cinema truc
    > BOB |TIM
    > HULION |DOMINIQUE

    vous voyez l'idée, ranger les contacts sous leurs structure ... il y a surement moyen de faire ceci, si vous avez une idée ...

    merci

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Deux solutions s'offrent à toi (à toi de voir ensuite laquelle te convient le mieux ou laquelle est la plus performante).

    La plus basique consiste à agir au niveau de l'affichage en ne changeant presque rien à la requête initiale si ce n'est d'ordonner les résultats par structure (order by STRUCTUREID). Ensuite coté PHP, tu initialises une variable $structure_id = false; puis dans ta boucle d'affichage tu ajoutes une condition pour afficher l'id et le nom de la structure uniquement quand celle ci change, tu dois aussi bien évidemment changer la valeur de $structure_id avec la nouvelle valeur courante:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $structure_id = false;
    while ($rec = $bidule->fetch()) {
        if ($structure_id != $rec['STRUCTUREID']) {
            $structure_id = $rec['STRUCTUREID'];
            echo "\n" . $rec['STRUCTUREID'] . ' | ' . $rec['STRUCTURE'] . "\n";
        }
        echo '> ' . $rec['NOM'] . ' | ' . $rec['PRENOM'] . "\n";
    }

    L'autre solution consiste à faire une partie du travail coté MySQL avec une requête de ce type:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select STRUCTUREID, STRUCTURE, group_concat(concat('> ', NOM, ' | ', PRENOM) separator '\n') as NPLIST from MATABLE group by STRUCTUREID order by STRUCTUREID;

    Dans ce cas, plus besoin de test:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($rec = $bidule->fetch()) {
        echo $rec['STRUCTUREID'] . ' | ' . $rec['STRUCTURE'] . "\n";
        echo $rec['NPLIST'] . "\n\n";
    }

    NB: Il faut aussi se demander qui a quel rôle entre php et MySQL et où commence l'extraction des données dont on a besoin et juste celles dont on a besoin (partie qui revient à MySQL avec éventuellement une structuration dans la partie Modèle de l'application) et où commence l'aspect présentation (qui revient à PHP et à sa partie Vue).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Par défaut
    et bien merci CosmoKnacki , j'ai fait un group_concat est tout est ok, bonne journée

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

Discussions similaires

  1. [MySQL] Affichage résultat requête SQL dans page HTML comme un tableau
    Par joxbl dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 14/03/2011, 14h26
  2. [MySQL] Alterner l'affichage de résultats MySQL
    Par Him dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2008, 00h47
  3. Affichage résultat de requête dans un champ
    Par dj-julio dans le forum WinDev
    Réponses: 1
    Dernier message: 18/01/2006, 10h51
  4. [SGBD] pb affichage BDD mysql
    Par shelko dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 01/11/2005, 15h36

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