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 :

Transformation de JSON en PHP puis de PHP en JSON


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant L3 MIAGE
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant L3 MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut Transformation de JSON en PHP puis de PHP en JSON
    Bonjour,

    J'ai un problème qui je pense va vous faire sourire par sa simplicité mais je "bloque" dessus et comme j'ai le nez dessus je n'arrive pas a voir où est le problème et a prendre du recul sur la petite partie de code que je vais vous transmettre.
    Je souhaite récupérer le contenu d'un fichier JSON dans un tableau PHP, y ajouter les variables POST renvoyées par mon formulaire, encoder mon tableau PHP en JSON puis renvoyer tout ça en JSON ...

    Voilà mon formulaire (basique) :
    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
     
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <form method="post" action="controller1.php">
            <div class="form-group">
                <label>Nom</label>
                <input type="text" class="form-control" name='nom' placeholder="Entrez le nom" >
            </div>
                <div class="form-group">
                <label>Preom</label>
                <input type="text" class="form-control" name='prenom' placeholder="Entrez le prenom" >
            </div>
            <button type="submit" class="btn btn-success" >Enregistrer le nouvel acteur <i class="fa fa-thumbs-o-up" ></i></button>
            </form>
        </body>
    </html>
    voilà mon controller :
    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
     
    <?php
    $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];
     
    $file='bdd.json';
    $contenu = file_get_contents($file);
    $contenu = json_decode($contenu,true);
    $fic=fopen($file, 'w');
    ftruncate($fic, 0);
     
    $array = array($contenu);
    $array1 = array('nom_pers' => $nom, 'prenom_pers' => $prenom);
    array_push($array, $array1);
    print_r($array);
    $array=json_encode($array);
    fwrite($fic,$array);
     
    ?>
    Si vous avez une petite idée .. j'ai un peu honte de demandé ça j'avoue aha !


    EDIT :

    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
     
    <?php
    $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];
     
    $file = 'bdd.json';
    $contenu = file_get_contents($file);
    $contenu = json_decode($contenu, true);
    $fic = fopen($file, 'w');
    ftruncate($fic, 0);
     
    $array = $contenu;
    $array1 = array('nom_pers' => $nom, 'prenom_pers' => $prenom);
    if(!$array==null){
    array_push($array, $array1);
    }else{
        $array['0']=$array1;
    }
    $array = json_encode($array);
    fwrite($fic, $array);
    ?>
    Cela fonctionne comme je le souhaite dans le principe mais je n'ai plus d'index sur mes données JSON
    Une idée ?!

  2. #2
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    Le format json n'affiche pas les index sur les tableaux à clés numériques, donc ce comportement est normal.
    php transforme les clés string qui contiennent uniquement des chiffres ordonnés de manière ascendante et non préfixés en clés numériques.

    exemple:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    	$a=array("0"=>array("prenom"=>"francis"),"1"=>array("prenom"=>"marie"), "2"=>array("prenom"=>"pascal"));
    	echo json_encode($a);
    //[{"prenom":"francis"},{"prenom":"marie"},{"prenom":"pascal"}]
    ?>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    	$a=array("2"=>array("nom"=>"francis"),"1"=>array("nom"=>"marie"), "0"=>array("nom"=>"marc"));
    	echo json_encode($a);
    //{"2":{"nom":"francis"},"1":{"nom":"marie"},"0":{"nom":"marc"}}
    ?>
    0x4F

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant L3 MIAGE
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant L3 MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Tout à fais, du coup j'utilise comme "index" leur position dans le fichier JSON et ça marche niquel !
    Merci de ta réponse en tout cas

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

Discussions similaires

  1. Réponses: 50
    Dernier message: 03/03/2010, 08h27
  2. les accent entre PHP et JQuery et encodage json
    Par nicko_73 dans le forum jQuery
    Réponses: 1
    Dernier message: 22/12/2009, 15h43
  3. [MySQL] Enregistrer en BDD une requête Mysql contenant des variables PHP puis l'exécuter
    Par ChriGoLioNaDor dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/11/2009, 02h13
  4. [SQL] Sauvegarde base puis telechargement PHP
    Par pierre50 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/11/2006, 10h07
  5. Envoyer une variable a php (puis mysql)
    Par gostbuster dans le forum Flash
    Réponses: 2
    Dernier message: 18/11/2006, 00h43

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