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 :

Difficulté pour créer un objet json [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Difficulté pour créer un objet json
    Bonjour à tous,

    Je dois reproduire un objet json comme celui-ci :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var data =[
        {
            "data" : "Developpement web",
            "attr":{"rel":"directory"},
            "children" : [ {"data":"PHP","attr":{"rel":"file"}}, {"data":"ASP","attr":{"rel":"disabled"}} ]
        },
        {
            "data" : "Developpement applicatif",
            "attr":{"rel":"directory"},
            "children" : [ {"data":"C++","attr":{"rel":"file"}}, {"data":"Java","attr":{"rel":"file"}} ]
        }
    ];

    Pour ce faire, je fais une première requête sql dans une certaine table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $q = DB::getInstance()->query("SELECT id, nom FROM type_technologies ORDER BY nom");
    $technologies = $q->fetchAll(PDO::FETCH_OBJ);
    Je filtre ensuite dans une seconde table les informations qui m'intéressent (par rapport à l'id de la requête ci-dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($technologies as $technologie)
    { 
        $q = DB::getInstance()->query('SELECT id, nom FROM technologies WHERE type_technologies_id = '.$technologie->id.' ORDER BY nom');
        $arr_technologies = $q->fetchAll(PDO::FETCH_OBJ);
    }
    J'ai donc :

    Développeemtn web
    PHP
    ASP
    ...

    Développement applicatif
    C++
    C
    Java...
    Je devrais créer un objet json comme indiqué ci-dessus.

    J'ai déjà ce début de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour.= array_push($retour,array("data"=>$technologie->nom,));
    Je ne vois pas comment je peux continuer cet objet json.

    Merci d'avance pour votre aide.

    bee

  2. #2
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Je me suis fait mon array qui sera transformé en json avec json_encode :

    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
    $q = DB::getInstance()->query("SELECT id, nom FROM type_technologies ORDER BY nom");
                $technologies = $q->fetchAll(PDO::FETCH_OBJ);
     
                $arr = array();
                foreach($technologies as $technologie)
                {
                   $q = DB::getInstance()->query('SELECT id, nom FROM technologies WHERE type_technologies_id = '.$technologie->id.' ORDER BY nom');
                   $arr_langages = $q->fetchAll(PDO::FETCH_OBJ);
     
                   array_push($arr,array
                   (
                      "data"=>$technologie->nom, 
                      "attr"=>
                      array
                      (
                         'rel'=>'directory'
                      ),
                         'children'=>array(array('data'=>$arr_langages[0]->nom,'attr'=>array('rel'=>'file')))
                   )
                   ); 
                }
     
    return $arr_json = json_encode($arr);
    La dernière difficulté reste à remplir cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'children'=>array(array('data'=>'C++','attr'=>array('rel'=>'file'))
    Avec tous les langages de programmation trouvés dans une catégorie.

    Là, je sèche... Je n'arrive qu'à mettre le premier pour chaque catégorie, je ne vois pas comment je peux faire pour les afficher tous.


    J'ai tenté ceci, mais (bien sûr), ça ne fonctionne pas :

    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
    array_push($arr,array
                   (
                      "data"=>$technologie->nom, 
                      "attr"=>
                      array
                      (
                         'rel'=>'directory'
                      ),
                         for($i=0;$i<$arr_langages.count();$i++)
                         {
                            'children'=>array(array('data'=>$arr_langages[$i]->nom,'attr'=>array('rel'=>'file')))   
                         }
     
                   )
                   );
    Après plusieurs heures de travail et de recherche, voici enfin la solution :

    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
    public static function remplir_tree()
          {
                //DD: code qui permet de créer :
                // 1) un array qui va contenir les types de techno et leurs technos
                $q = DB::getInstance()->query("SELECT id, nom FROM type_technologies ORDER BY nom");
                $technologies = $q->fetchAll(PDO::FETCH_OBJ);
     
                $arr = array();
                foreach($technologies as $technologie)
                {
                   $q = DB::getInstance()->query('SELECT id, nom FROM technologies WHERE type_technologies_id = '.$technologie->id.' ORDER BY nom');
                   $arr_langages = $q->fetchAll(PDO::FETCH_OBJ);
     
                   //je crée d'abord un array ($arr2) avec les technologies (par exemple php, asp,... pour dév web)
                   $arr2 = array();
                   foreach($arr_langages as $langage)
                   {
                      array_push($arr2,array(array('data'=>$langage->nom,'attr'=>array('rel'=>'file'))));
                   }
                   //je crée l'array qui va être transformé en json, j'y inclus plus bas $arr2 avec array_push
                   array_push($arr,array
                   (
                      "data"=>$technologie->nom, 
                      "attr"=>
                      array
                      (
                         'rel'=>'directory'
                      ),
                      'children'=>$arr2
                   )
                   ); 
                }
                //2) de transformer cet array en json
                return $arr_json = json_encode($arr);
          }
    Pour info, cela permet de remplir un jstree avec des données provenant d'une bd (ici 2 tables)
    bee

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

Discussions similaires

  1. Application pour retourner un objet JSON
    Par fujitsu4 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 22/11/2014, 17h38
  2. Réponses: 7
    Dernier message: 30/03/2014, 22h01
  3. utiliser hashcode pour créer un objet
    Par lightedge dans le forum Général Java
    Réponses: 13
    Dernier message: 19/03/2010, 12h21
  4. Problème pour créer des objets de la même classe
    Par Dietzer dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 25/06/2009, 17h01
  5. [VB6][débutant] Créer un objet COM pour XSLT
    Par trent94 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/01/2006, 15h42

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