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 :

Conception d'un structure JSON(problème d'arrays)


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Points : 28
    Points
    28
    Par défaut Conception d'un structure JSON(problème d'arrays)
    Bonjour,

    Je m'explique on a :
    - Furil comme Parent (=parentServ)
    - Toto,tata,titi,Jean comme enfants(= childServ) et les terrains de jeux respectifs(=childServAnt)
    - trop de terrain de jeux alors je les regroupe dans Antennes(=childServ) et lorsque que je déroulerai Antennes j'aurai tout les terrains de jeux.


    Mais problème je n'arrive pas à regrouper les terrains de jeux dans "Antennes" Je travaille à partir d'une bdd sous MySQL, donc les valeurs id, name(parents,enfants, antennes) sont généré dans les boucles. La valeur "Antennes"(n'étant pas présente dans la base de données) qui regroupera toutes les antennes, sera une valeur statique et dans cette valeur je veux stocker par exemple tous les terrains de jeux(=antennes).
    Ce que je cherche a faire au final c'est encoder toute la structure au format JSON. De ce coté là c'est bon, c'est juste l'ajout d'une valeur statique "Antennes" qui me pose problème, je n'arrive pas à stocker les terrains de jeux dans Antennes.
    Voilà la partie de code qui nous intéresse :

    Code php : 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
     
     
        //Creation d'un array qui sera encodé pour le js parent-child org
         $JsonArray = array();
         /*while($data = mysql_fetch_assoc($sqlCDS)){
         
          echo $data['nom_agent'];
          } */
         //echo '<table>';
         while($parentServ = mysql_fetch_assoc($sqlCDS))
         {
           $temp2 = array(
            "id" => $parentServ["No_agent"]
            ,"name" => $parentServ["nom_agent"]
            );
            //echo $temp['id'];
            //echo $temp['name'];
            $children = array();
           while ($childServ = mysql_fetch_assoc($sqlAGENT))
           {
             $children[] = array(
             "id" => $childServ["No_agent"]
             ,"name" => $childServ["nom_agent"]
             );
            //echo $temp['id'];
            //echo $temp['name'];
           }
          //$temp[] = $children;
          //$JsonArray[] = $temp;
          while($childServAnt = mysql_fetch_assoc($sqlAntenne))
           {
            $children[] = array(
            "id" => $childServAnt["No_antenne"]
            ,"name" => $childServAnt["Lib_antenne"]
            );
           }
     
          //Insertion des données dans une structure commune
          $JsonObj['id'] = $temp2['id'];
          $JsonObj['name'] = $temp2['name'];
          $JsonObj['children']=$children;
         }
         //echo'</table>';
         //encodage des données au format JSON
         echo json_encode($JsonObj);

    Voilà un exemple de sorties que j'aimerai avoir :

    {"id":"1234","name":"Furil","children":[
        {"id": "123", "name":"Jean"},
        {"id": "124", "name":"toto"},
        {"id": "125", "name":"titi"},
        {"id": "126", "name":"tete"},
        {"id": "127", "name":"Antennes","children":[
            {"id":"128","name":"gymnase"},
            {"id":"129","name":"stade"},
            {"id":"130","name":"ecole"}
        ]}
    ]}
    Voilà ma sortie pour le moment :
    {"id":"1234","name":"Furil","children":[
        {"id": "123", "name":"Jean"},
        {"id": "124", "name":"toto"},
        {"id": "125", "name":"titi"},
        {"id": "126", "name":"tete"},
        {"id": "128", "name":"gymnase"},
        {"id": "129", "name":"stade"},
        {"id": "130", "name":"ecole"}
    ]}

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Bon pour faire simple, JSON c'est une structure de données du genre XML mais en plus léger, ce qui nous intéresse c'est de créer une structure, un ensemble qui va me permettre de l'encoder en JSON.
    Cette ensemble est objet composé de :

    • un id (=id)
    • un nom(=name)
    • un tableau(=children)


    Dans ce tableau(=children) on répète la possibilité qu'il y a un enfant composé de 3 valeurs :

    • un id (=id)
    • un nom(=name)
    • un tableau(=children)

    On utilise les tableaux associatifs pour avoir la structure que j'ai cité dans le premier post.
    On me dira simple à faire avec ce que j'ai déjà sous la main mais je dois ajouter un enfant qui ne sera pas dans la base de données et donc pas généré dynamiquement. Vous l'avez compris c'est l'enfant "Antennes" qui sera lui aussi composé :

    • un id (=id)
    • un nom(=name)
    • un tableau(=children)


    A la différence que lui aura obligatoirement un résultat dans son tableau c'est à dire tous les terrains de jeux(=Antennes).

    Voilà où j'en suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {"id":"1234","name":"Furil","children":[
        {"id": "123", "name":"Jean"},
        {"id": "124", "name":"toto"},
        {"id": "125", "name":"titi"},
        {"id": "126", "name":"tete"},{"0":
        {"id": "127", "name":"Antennes"},"children":[
            {"id":"128","name":"gymnase"},
            {"id":"129","name":"stade"},
            {"id":"130","name":"ecole"}
        ]}
    ]}
    Ce que je ne comprend pas c'est d'où vient le : {"0": .
    J'aimerai enlever les parties qui sont ici surligné en rouge dans la structure

    Voilà le code correspondant à cette structure :

    Code php : 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
    //Creation d'un array qui sera encodé pour le js parent-child org
         $JsonArray = array();
     
     
         while($parentServ = mysql_fetch_assoc($sqlCDS))
         {
           $temp2 = array(
            "id" => $parentServ["No_agent"]
            ,"name" => $parentServ["nom_agent"]
            );
            //echo $temp['id'];
            //echo $temp['name'];
            $children = array();
            $children2 = array();
            $ant = array();
     
           //On exécute la requête permettant de récupérer tous les enfants
     
           while ($childServ = mysql_fetch_assoc($sqlAGENT))
           {
             $children[] = array(
             "id" => $childServ["No_agent"]
             ,"name" => $childServ["nom_agent"]
             );
     
            //echo $temp['id'];
            //echo $temp['name'];
           }
          //-------------------------------------------------
          //$temp[] = $children;
          //$JsonArray[] = $temp;
     
          //Déclaration de la structure qui va regrouper les antennes 
     
          $ant[] = array(
          "id" => "1"
          ,"name" =>"Antennes"
          );
     
         //On execute la requête permettant d'avoir tous les terrains de jeux
          while($childServAnt = mysql_fetch_assoc($sqlAntenne))
           {
            $children2[] = array(
            "id" => $childServAnt["No_antenne"]
            ,"name" => $childServAnt["Lib_antenne"]
            );
           }
        //-----------------------------------------------
          $ant['children'] = $children2; //on stocke les terrains de jeux dans "Antennes"
          $children[] = $ant; //on met "Antennes" au même niveau que les enfants
     
     
          //Insertion des données dans une structure commune
     
          $JsonObj['id'] = $temp2['id'];//stockage du 1er paramètre du parent
          $JsonObj['name'] = $temp2['name']; // 2nd paramètre du parent
          $JsonObj['children']=$children; // tous le reste : tata,titi, Antennes(...)
         }
     
         //encodage des données au format JSON
         echo json_encode($JsonObj);

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu as juste un niveau de trop dans $ant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ant[] = array(
    	"id" => "1"
    	,"name" =>"Antennes"
    );
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ant = array(
    	"id" => "127"
    	,"name" =>"Antennes"
    );
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Bonjour Celia,

    Grand merci, erreur bête de ma part . Enfin maintenant c'est noté et ça marche.

    Merci et bonne journée

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

Discussions similaires

  1. [JSON] Problème de Cast Array en String
    Par helter_skelter dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 21/10/2009, 12h02
  2. [RegEx] problème d'array / regex
    Par IP-Fix dans le forum Langage
    Réponses: 14
    Dernier message: 25/02/2007, 03h50
  3. [Tableaux] Problème d'array dynamique
    Par Peacecraft95 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 15h24
  4. Problème+for+array+get
    Par xmane85 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/05/2006, 17h35
  5. Problème d'array...
    Par Empty_body dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/04/2006, 08h39

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