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 :

WHILE en cascade. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut WHILE en cascade.
    Bonjour le forum,
    Je voudrais afficher l'integralité d'une table et la classer.

    Exemple
    3 champs
    Rubrique
    Theme
    Nom

    6 insert
    Jeux video TOTO
    Jeux Carte TITI
    film Action TUTU
    Mode Bijoux TATA
    Mode Fringues TYTY
    Mode Shoes TTTTT
    Mode Shoes PPPP

    Je voudrais les afficher comme suit :


    Jeux
    ......Video
    ............. TOTO
    ......Carte
    ..............TITI
    Film
    ......Action
    ...............TUTU
    Mode
    ......Bijoux
    ............... TATA
    ......Fringues
    ............... TYTY
    ......Shoes
    ................TTTTT
    ................PPPP

    (Les points c'est juste pour aider a la lecture )

    J'ai essayé avec des cascades de while mais cela ne fonctionne pas, comment puis je faire selon vous, s'il vous plait.

    Merci pour votre lecture.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Peut etre pas la solution la plus propre mais essaie
    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
     
    $requete="select distinct rubrique from table order by rubrique asc";
    $exe=mysql_query($requete);
    if($exe){
       while($lis=mysql_fetch_array($exe,MYSQL_ASSOC)){
            echo $lis[rubrique];
            $requete="select theme from table where rubrique = '".$lis[rubrique]."' order by theme asc";
           $exec=mysql_query($requete);
           if($exec){
                while($list=mysql_fetch_array($exec,MYSQL_ASSOC)){
                     echo '<br>.....'.$list[theme];
     $requete="select nom from table where rubrique = '".$lis[rubrique]."' and theme='".$list[theme]."' order by nom asc";                
                     $exes=mysql_query($requete);
                     if($exes){    
                         while($liste=mysql_fetch_array($exes,MYSQL_ASSOC)){
                              echo '<br>...........'.$liste[nom];
                         }
                     }            
                }
           }
       }
    }
    Manque bien sur les mysql_free_result mais dans l'idée ca devrait etre bon.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Merci de m'avoir répondu, j'ai testé ce code et il fonctionne en partie, c'est deja vachement bien, et je t'en remercie, mais il y a un bug de réitération, lorsque l'on a la meme rubrique et le meme theme dans un insert SQL, mais un nom différent, on obtient cela (autant d'affichage qu'il y de nom différents avec rubrique et theme identiques):

    Shoes
    ...........PPPP
    ...........TTTTT

    .....Shoes
    ...........PPPP
    ...........TTTTT


    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
    $requete="select distinct rubrique from tabletest order by rubrique asc";
    $exe=mysql_query($requete);
    if($exe)
    {
       while($lis=mysql_fetch_array($exe,MYSQL_ASSOC))
       {
           echo '<br>.....'.$lis[rubrique];
           $requete="select theme from tabletest where rubrique = '".$lis[rubrique]."' order by theme asc";
           $exec=mysql_query($requete);
           if($exec)
    	   {
                while($list=mysql_fetch_array($exec,MYSQL_ASSOC))
    			{
                  echo '<br>.....'.$list[theme];
                  $requete="select nom from tabletest where rubrique = '".$lis[rubrique]."' and theme='".$list[theme]."' order by nom asc";               
                  $exes=mysql_query($requete);
                     if($exes)
    				 {    
                         while($liste=mysql_fetch_array($exes,MYSQL_ASSOC))
    					 {
                           echo '<br>...........'.$liste[nom];
      					 }
                     }            
                }
           }
       }
    }
    Voici l'url d'un exemple : http://www.test-internet.com/test.php

    Merci a toi pour cce premier opus

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    sinon tu peux faire ca en une seule requête avec des variables temporaires :

    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
    $currentCat = '';
    $currentTheme = '';
     
    $sql = "SELECT * ORDER BY rubrique, themes";
    $res = mysql_query($sql);
    while($row = mysql_fetch_assoc($res)) {
    if($row['cat'] != $currentCat) {
    echo $row['cat'].'<br/>';
    }
    if($row['theme'] != $currentTheme) {
    echo $row['theme'].'<br/>';
    }
    echo $row['nom'].'<br/>';
    $currentCat = $row['cat'];
    $currentTheme = $row['theme'];
    }
    bye

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Merci beaucoup, en corrigeant ton code j'ai réussi a faire focntionner mon script grace a toi :

    Voici le code corrigé pour ceux qui le souhaitent :

    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
    $currentCat = '';
    $currentTheme = '';
     
    $sql = "SELECT * FROM tabletest ORDER BY rubrique, theme";
    // tu n'avais pas identifié la table (tabletest)
    $res = mysql_query($sql);
    while($row = mysql_fetch_assoc($res)) {
    if($row['rubrique'] != $currentCat) {
    echo '<br>'.$row['rubrique'];
    // tu parles de cat alors que c'est rubrique
    }
    if($row['theme'] != $currentTheme) {
    echo '<br>.....'.$row['theme'];
    }
    echo '<br>..........'.$row['nom'];
    $currentCat = $row['rubrique'];
    // tu parles de cat alors que c'est rubrique
    $currentTheme = $row['theme'];
    }

    Mais franchement mille fois merci, sans toi j'aurai galéré, je tiens également a remercier Raideman qui m'avait donné egalement un code fort interessant, trés bonne journée aux membres du forum.

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

Discussions similaires

  1. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20
  2. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02
  3. delete en cascade
    Par bruno270579 dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/12/2003, 17h17
  4. suppresion en cascade + postgres
    Par bruno270579 dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/12/2003, 16h27
  5. Réponses: 3
    Dernier message: 25/11/2002, 14h15

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