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 :

Traitement hiérarchique des données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Traitement hiérarchique des données
    Bonjour tout le monde Top incruste !

    Ca y est j'me suis décidé, j'me lance dans le php,
    (vous allez me dire : oué, d'office sinon qu'est ce que tu foutrais ici ?)
    Bref, chui occupé à faire mon premier site et voilà mon premier gros blème :

    mettons que j'ai les 2 tables suivantes dans ma db :
    1. hero_gall (la liste des galeries d'héroines)
    2. hero (la liste des héroines)

    la 1ère table contiendrait les champs suivants :
    - hero_gall_id
    - hero_gall_name

    et ma 2e les champs suivants :
    - hero_id
    - hero_gall_id
    - hero_name

    Et donc en fait je voudrais afficher toutes les héroines et leur galeries correspondantes,
    mais sans répéter à chaque fois le nom de la galerie, donc au final je voudrais arriver à un truc du genre :

    Street Fighter :
    - Chun-li ;
    - Cammy ;
    - Sakura ;

    Final Fantasy :
    - Aeris ;
    - Tifa

    Pour l'instant j'ai fais comme ça :

    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
    $query = mysql_query
    ("
    select *
    from hero as t1 
    join hero_gall as t2
    on t1.gall_id = t2.gall_id
    order by hero_name
    ");
     
    while ($data = mysql_fetch_array($query))
    {
    ?>
     
    <p><strong><?php echo $data['gall_name']; ?></strong></p> 
    <p> - <?php echo $data['hero_name']; ?> ;</p>
     
    <?php
    }
    ?>
    Mais le truc, évidemment, c'est qu'il me remet à chaque fois le nom de la galerie à chaque héroine et ça, comme on dit dans le jargon, ça craint grave

    Help me, please....
    Dernière modification par Domi2 ; 06/03/2011 à 09h08.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Bah tu peut faire un truc du style :

    -Requête sur le nom des galleries
    -Pour chaque nom de galleries
    --- Tu l'affiches
    --- Requête des noms des héroïne correspondant à la gallerie afficher (join avec l'ID)
    --- Affichage des noms

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci, j'y suis presque :

    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
    $query = mysql_query
    ("
    select hero_gall_name*
    from hero_gall as t1
    order by hero_gall_name
    ");
     
    while ($data = mysql_fetch_array($query))
    {
    ?>
     
    <p><strong><?php echo $data['hero_gall_name']; ?></strong></p>
     
    <?php
    $query2 = mysql_query
    ("
    select hero_name
    from hero as t2
    join hero_gall as t1
    where t1.gall_id = t2.gall_id
    order by hero_name
    ");
     
    while ($data2 = mysql_fetch_array($query2))
    {
    ?>
     
    <p> - <?php echo $data['hero_name']; ?> ;</p>
     
    <?php
    }
    }
    ?>
    Y'a encore un problème sur mon 2e select,
    qqn peut-il m'aider ? j'ai du mal là ...
    Dernière modification par Invité ; 29/05/2009 à 11h54.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Points : 129
    Points
    129
    Par défaut
    bonjour,

    Une autre solution

    Tu garde ce que tu as fais en premier

    Tu trie sur le nom de la gallerie et sur le nom des Heros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $query2 = mysql_query
    ("
    select *
    from hero as t1 
    join hero_gall as t2
    on t1.gall_id = t2.gall_id
    order by hero_gal.gall_name,hero.hero_name
    ");
    ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    str_gallerie = '';
    while ($data = mysql_fetch_array($query))
    {
     
     if(str_gallerie != $data['gall_name'])
    {
    echo '<p><strong><'. $data['gall_name'].'</strong></p> '
    str_gallerie = $data['gall_name'];
    }
    echo '<p> - '. $data['hero_name']; .'</p>'
     
     
    }

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Pour continuer dans ma solution, comme ca ca devrait marcher :
    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
    $query = mysql_query
    ("
    select *
    from hero_gall
    order by hero_gall_name
    ");
     
    while ($data = mysql_fetch_array($query))
    {
    ?>
     
    <p><strong><?php echo $data['hero_gall_name']; ?></strong></p>
     
    <?php
    $query2 = mysql_query
    ("
    select hero_name
    from hero
    where hero.gall_id = hero_gall.gall_id
    AND hero.gall_id = ".$data['hero_gall_id']."
    order by hero_name
    ");
     
    while ($data2 = mysql_fetch_array($query2))
    {
    ?>
     
    <p> - <?php echo $data['hero_name']; ?> ;</p>
     
    <?php
    }
    }
    ?>
    Sinon la solution de rumulus est pas mal non plus...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci Romulus ^^

    Ta solution me parait encore plus alléchante du fait qu'il n'y a qu'un seul "SELECT" mais malheureusement la page ne s'affiche pas, snirf

    j'ai beau relire le code dans tous les sens je trouve pas ce qui ne va pas, ça vient sans doute de chez moi, jvais checker ça de plus près


    Well, Merci à vous Messeigneurs ^^

    ça me fait 2 soluces pour le prix d'une kr kr kr
    j'vais approfondir ça maintenant, pasque j'me perd un peu dans la syntaxe,
    jvais indenter le tout, pour le fun...

    J'vous recontacte si j'arrive toujours pas à afficher la page
    Dernière modification par Invité ; 29/05/2009 à 12h37.

  7. #7

  8. #8
    Invité
    Invité(e)
    Par défaut
    Merci pour l'info jreaux62, j'vais approfondir tout ça !

    bref, ça maaaaaaarche !!!

    thx again pals !!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/02/2012, 11h36
  2. Erreur "traitement local des donnée.." + framework
    Par mederik dans le forum Cognos
    Réponses: 1
    Dernier message: 21/04/2010, 17h01
  3. traitement des données avant envoie dans MySQL
    Par italiasky dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 07/02/2006, 22h50
  4. Réponses: 7
    Dernier message: 27/01/2006, 01h44
  5. renvoyer des données sous forme de XML hiérarchique
    Par DiGueDao dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/01/2005, 18h06

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