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 :

Récréer le JSON d'un arbre intervallaire


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut Récréer le JSON d'un arbre intervallaire
    Salut à tous,

    j'ai un arbre intervallaire stocké dans une table mySQL, et je voudrais en php recréer le fichier JSON me permettant d'alimenter mon treegrid.

    J'ai cherché sur le net et autres forums mais hélas aucun ne propose une fonction "BuildJsonStructureFromMySQL".

    Auriez vous une bout de code en sachant que ma table a cette structure:
    id | caption | bg| bd | leaf
    int | text | int | int | bool
    Mes données par exemple suite à la requête suivante:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT name, bg, bd FROM project WHERE (bg BETWEEN $bg AND $bd) ORDER BY bg ASC

    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {"name":"root","bg":"1","bd":"20","leaf":"0"},
    {"name":"Miscellaneous","bg":"2","bd":"7","leaf":"0"},
    {"name":"Misc Feuille G","bg":"3","bd":"4","leaf":"1"},
    {"name":"Misc Feuille D","bg":"5","bd":"6","leaf":"1"},
    {"name":"My Projects","bg":"8","bd":"19","leaf":"0"},
    {"name":"Projet Feuille G","bg":"9","bd":"10","leaf":"1"},
    {"name":"Projet Feuille D","bg":"11","bd":"12","leaf":"1"},
    {"name":"airbus","bg":"13","bd":"18","leaf":"0"},
    {"name":"GB3456687 G","bg":"14","bd":"15","leaf":"1"},
    {"name":"FR1423564 D","bg":"16","bd":"17","leaf":"1"}


    Je galère un max en ce moment pour reconstruire mon fichier JSON....

    voici un exemple (pas avec les données ci-dessous mais avec la même strcuture)
    Code json : 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
    [
        {
                "name"      : "Miscellaneous",
                "expanded"  : false,
                "leaf"      : false,
                "children": [
                            {
                                "name": "Kitchen supplies",
                                "leaf": true
                            },
                            {
                                "name": "Bathroom supplies",
                                "leaf": true
                            }
                    ]
                },
                {
                    "name"      : "My Project",
                    "expanded"  : false,
                    "leaf"      : false,
                    "children": [
                                {
                                    "name": "Car supplies",
                                    "leaf": true
                                },
                                {
                                    "name": "Bicycle supplies",
                                    "leaf": true
                                }
                        ]
                }
    ]

    Merci pour votre aide,
    Bruno

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Re Bonjour tout le monde,

    J'ai un petit peu (manque de temps) avancé dans mon projet car j'ai trouvé une librairie qui permet de faire pas mal de chose.
    Elle est disponible à cette adresse (tout en bas avec une page test): http://www.hexadec.ch/hexalab/article/nested-sets

    Elle est vraiment pas mal, et il y a surtout un affiche de l'arbre avec indentation.

    Seulement voilà, l'indentation c'est bien mais cela ne referme pas les } ] d'une structure JSON

    Est-ce quelqu'un aurait une idée de comment se servir du format avec indentation pour créer le fichier JSON ?
    J'arrive à tous les ouvrir, à en fermer quelqu'uns mais pas tous.

    j'ai ajouté dans la class une fonction nstPrintSubtree_json qui remplace nstPrintSubtree dans l'appel.

    Voici mon bout de 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
      function nstPrintSubtree_json($node, $attributes)
      {
        $walk = $this->nstWalkPreorder($node);
     
        while($curr = $this->nstWalkNext($walk)) {
            /* Print Indentation */
            print(str_repeat(" ", $this->nstWalkLevel($walk)*4));
     
            /* Print Attributes */
            $att = reset($attributes);
            while($att){
                print ("{<br/>");
                print(str_repeat("&nbsp;", $this->nstWalkLevel($walk)*4));
                print ("\"text\" : \"". $walk['row'][$att] . "\"");
     
                // A t il des enfants
                if ($this->nstHasChildren($curr)) {
                    print (",<br/>");
                    print(str_repeat("&nbsp;", $this->nstWalkLevel($walk)*4));
                    print ("\"children\" : [<br/>");
                } else
                    // A t il un frere ?
                    if ($this->nstHasNextSibling($curr)) {
                        print ("<br/>");
                        print(str_repeat("&nbsp;", $this->nstWalkLevel($walk)*4));
                        print ("},<br/>");
                    } else
                    {
                        print ("<br/>");
                        print(str_repeat("&nbsp;", $this->nstWalkLevel($walk)*4));
                        print ("}<br/>");
                        print(str_repeat("&nbsp;", $this->nstWalkLevel($walk)*4));
                        print ("]<br/>");
                        print(str_repeat("&nbsp;", $this->nstWalkLevel($walk)*4));
                        print ("}<br/>");
                    }
     
                $att = next($attributes);
            }
            //print ("<br/>");
        }
      }

Discussions similaires

  1. Requête ardue avec un arbre intervallaire
    Par renaud26 dans le forum Requêtes
    Réponses: 6
    Dernier message: 20/04/2011, 01h02
  2. Récupération d'un nœud d'un arbre intervallaire
    Par Wisvaton dans le forum Requêtes
    Réponses: 0
    Dernier message: 10/10/2010, 15h14
  3. Déplacement d'un élément dans un arbre intervallaire
    Par Larson dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 17/09/2008, 15h57
  4. notion d'arbre intervallaire
    Par nieleny dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/03/2008, 19h30

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