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 :

requete sql qui ne donne pas le bon array [MySQL]


Sujet :

PHP & Base de donn�es

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    28
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 28
    Par d�faut requete sql qui ne donne pas le bon array
    Hello,

    J'ai trouv� un script qui fait une arborescence d'apr�s un tableau qui est dans le code. Le tableau ressemble � �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    $data[] = array(1,0,'BOISSONS');
    $data[] = array(2,0,'ALIMENTS');
    $data[] = array(3,1,'Alcool');
    $data[] = array(4,1,'Sans alcool');
    $data[] = array(5,2,'Legumes');
    $data[] = array(6,5,'salades')
    ce qui donne array(id,id_parent,sujet)

    J'aimerais remplacer ce tableau static par les r�sultats de ma base mysql. J'ai donc essay� de faire comme �a :

    $connect = "SELECT id, id_parent, sujet FROM message";
    $resultat = mysql_query($connect) or die('error : '.mysql_error());
    $data= mysql_fetch_array($resultat);
    Mais cela ne fonctionne pas. Comment puis-je faire ?

    Merci d'avance.

  2. #2
    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,
    ca d�pend �videmment du code mais si c'est un code r�cursif qui lie les cat aux sous-cat essaie d'ajouter ORDER BY id dans ta requ�te.
    Bye

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    28
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 28
    Par d�faut
    Hello,

    J'ai essay� d'ajouter ORDER BY id mais cela ne change rien.
    Effectivement c'est du r�cursif.
    Voici l'int�gralit� du code.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <?php
    /*cette fonction gère le décallage des éléments
    suivant leur position dans l'arborescence
    */
    function espace($rang)
        {
        $ch= '';
    for ($x=0;$x<$rang;$x++)
            {
            $ch.= '&nbsp;&nbsp;&nbsp;&nbsp;';
            }
        return $ch;
        }
     
    /*
    fonction récursive d'affichage de l'arbre
    $tab :tableau des éléments
    $pere :index de l'élément courrant
    $rang :décallage de l'élément
    */
    function recur($tab,$pere,$rang)
         {
    //ballayage du tableau
    for ($x=0;$x<count($tab);$x++)
            {
            //si un élément a pour père : $pere
            if ($tab[$x][1]==$pere)
                {
                 //on l'affiche avec le décallage courrant
                 echo espace($rang),$tab[$x][2],'<BR />',"\n";
     
                 /*et on recherche ses fils
                 en rappelant la fonction recur()
                 (+ incrémentation du décallage)*/
                 recur($tab,$tab[$x][0],$rang+1);
                }
            }
        }
    /*-------------------- MAIN -----------------------
    tableau des éléments de l'arbre:
    c'est un tableau à 2 dimensions.
    Une ligne représente un élément : data[$x]
    chaque ligne est décomposée en 3 données:
    - l'index de l'élément
    - l'index de l'élément parent
    - la chaîne à afficher
    ie: data[]= array (index, index parent, chaine )
    */
        //il faut d'abord déclarer un élément racine de l'arbre
        $data[] = array(0,-1,'racine');
     
        //puis tous les éléments enfants
    $connect = "SELECT id, id_parent, sujet FROM message ORDER BY id";
    $resultat = mysql_query($connect) or die('error : '.mysql_error());
    $data= mysql_fetch_array($resultat);
     
        //appelle de la fonction récursive (amorce)
        //avec recherche depuis la racine.
        recur($data,0,0);
     
     
    ?>

  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
    C'est peut-�tre un probl�me li� aux doubles entr�es cr��es par :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $data= mysql_fetch_array($resultat);
    essaie :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $data= mysql_fetch_assoc($resultat);
    d'autre part tu �crases $data en faisant cela, donc la ligne :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $data[] = array(0,-1,'racine');
    ne sert � rien.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    28
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 28
    Par d�faut
    Mince, j'ai essay� avec assoc mais ca ne fonctionne pas.

    Enfait voici le script original :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?php
    function espace($rang)
        {
        $ch= '';
    for ($x=0;$x<$rang;$x++)
            {
            $ch.= '&nbsp;&nbsp;&nbsp;&nbsp;';
            }
        return $ch;
        }
    function recur($tab,$pere,$rang)
         {
    for ($x=0;$x<count($tab);$x++)
            {
            if ($tab[$x][1]==$pere)
                {
                 echo espace($rang),$tab[$x][2],'<BR />',"\n";
                 recur($tab,$tab[$x][0],$rang+1);
                }
            }
        }
        $data[] = array(0,-1,'racine');
        $data[] = array(1,0,'BOISSONS');
        $data[] = array(2,0,'ALIMENTS');
        $data[] = array(3,1,'Alcool');
        $data[] = array(4,1,'Sans alcool');
        $data[] = array(5,2,'Legumes');
        $data[] = array(6,5,'salades');
        $data[] = array(7,6,'batavia');
        $data[] = array(8,6,'laitue');
        $data[] = array(9,5,'carottes');
        $data[] = array(10,5,'tomates');
        $data[] = array(11,2,'viandes');
        $data[] = array(12,11,'Jambon');
        $data[] = array(13,11,'steack haché');
        $data[] = array(14,0,'DIVERS');
        $data[] = array(15,14,'Dentifrice');
        $data[] = array(16,14,'sacs poubelles');
        $data[] = array(17,14,'lessive');
        $data[] = array(18,3,'biere');
        $data[] = array(19,3,'porto');
        $data[] = array(20,4,'eau');
        recur($data,0,0);
    ?>
    Il cr�e une arborescence avec le tableau ci dessus. Moi j'ai la m�me chose dans une base de donn�es, car les donn�es changent. Mais je n'arrive pas � remplacer ce tableau par les donn�es de ma base.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    $connect = "SELECT id, id_parent, sujet FROM message ORDER BY id ";
    $resultat = mysql_query($connect) or die('error : '.mysql_error());
    $data= mysql_fetch_array($resultat);

  6. #6
    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
    En fait il faut tu remplisses ton tableau compl�tement :

    mysql_fetch_array() ne retourne qu'une ligne de r�sultat, ca donnerait un truc du style :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    $data[] = array(0,-1,'racine');
    // Pour remplir le tableau avec toutes les lignes
    while($data[] = mysql_fetch_assoc($resulta)) {
    ;
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Excel 2007-2010]Requ�te SQL qui ne donne pas le bon r�sultat
    Par Davidw dans le forum Macros et VBA Excel
    R�ponses: 1
    Dernier message: 24/10/2012, 11h48
  2. requete SQL qui ne donne pas le bon r�sultat?
    Par siho90 dans le forum Langage SQL
    R�ponses: 14
    Dernier message: 24/01/2011, 18h01
  3. [Access] requete sql qui ne fonctionne pas
    Par pobrouwers dans le forum Langage SQL
    R�ponses: 4
    Dernier message: 15/03/2007, 12h33
  4. requete sql qui ne fonctionne pas
    Par pobrouwers dans le forum VB 6 et ant�rieur
    R�ponses: 5
    Dernier message: 15/03/2007, 09h37
  5. [hibernate]requete SQL qui ne passe pas
    Par Gromitou dans le forum Hibernate
    R�ponses: 8
    Dernier message: 09/06/2006, 12h18

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