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 :

Parse JSON et enregistrer dans variables


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Août 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 57
    Par défaut Parse JSON et enregistrer dans variables
    Hello tout le monde,

    Suite à un formulaire développé avec GravityForms sous Wordpress, j'obtiens un json que je veux enregistrer en BDD.
    Il d'agit d'horaires d'ouverture. Ce que je veux c'est récupérer les horaires pour chaque jour.
    Voila un exemple de ce que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [{"day":"Monday","daylabel":"lun","fromtime":"09:00","fromtimelabel":"9:00 am","totime":"12:00","totimelabel":"12:00 pm"},{"day":"Monday","daylabel":"lun","fromtime":"14:00","fromtimelabel":"2:00 pm","totime":"19:00","totimelabel":"7:00 pm"},{"day":"Wednesday","daylabel":"mer","fromtime":"07:30","fromtimelabel":"7:30 am","totime":"14:30","totimelabel":"2:30 pm"}]
    En gros, si day = Monday, j'enregistre l'heure d'ouverture "fromtime" et en fermeture "totime". Si il y a 2 fois le même jour, cela veut dire que le magasin ferme entre 12-14h donc j'enregistre les horaires de l'après midi.
    Je cherche donc à extraire les données de ce JSON et les intégrer dans des variables PHP ex: $horaireouverturelundimatin $horairefermeturelundimatin …

    Merci d'avance.

  2. #2
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour exploiter du JSON, tu peux utiliser json_​decode qui va transformer la chaine en objet (ou en tableau selon les paramètres que tu passes à la fonction).
    Il te reste plus qu'à boucler sur tes objets et à faire les insertions en base.
    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]

  3. #3
    Membre actif
    Inscrit en
    Août 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 57
    Par défaut
    Merci pour la réponse. C'est en effet ce que j'ai fait.
    Ensuite j'ai tenté de mettre en place des conditions pour enregistrer les horaires suivants les jours mais je coince…

  4. #4
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Il va falloir nous montrer un peu de code si tu veux qu'on t'aide (de préférence la version qui plante le moins )
    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]

  5. #5
    Membre actif
    Inscrit en
    Août 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 57
    Par défaut
    Voila ce que j'ai pour l'instant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	$test= '[{"day":"Monday","daylabel":"lun","fromtime":"09:00","fromtimelabel":"9:00 am","totime":"12:00","totimelabel":"12:00 pm"},{"day":"Monday","daylabel":"lun","fromtime":"14:00","fromtimelabel":"2:00 pm","totime":"19:00","totimelabel":"7:00 pm"}]';
     
     
        $json=json_decode($test,true);
     
    while($item = array_shift($json))
    {
        foreach ($item as $key => $value)
        {
            echo $key.' => '.$value."\n";
     
        }
    }
    Maintenant il faut mettre en place les conditions et récupérer les valeurs. J'ai donc essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    while($item = array_shift($json))
    {
        foreach ($item as $key => $value)
        {
            echo $key.' => '.$value."\n";
            if($value == 'Monday'){
            	echo 'ok';
            	$heure = $value;
            	echo $heure;
            }
        }
    }
    Sauf que évidement $value correspond au jour, logique. Comment récupérer les autres info dans ma boucle?

  6. #6
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je dirais que tu boucle un peu trop : ta variable $json contient un tableau de tableau, chaque sous-tableau correspondant à une entrée. Il faut donc boucler uniquement sur le tableau principal et exploiter les données du sous-tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($item = array_shift($json)) {
        if ($item['day'] == 'Monday') {
            $debut = $item['fromtime'];
            $fin = $item['totime'];
            echo 'lundi : ' . $debut . ' => ' . $fin . '<br />';
        }
    }
    Après il faut que tu saches ce que tu veux faire de ces variables et la structure de la table en bdd.
    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]

Discussions similaires

  1. [XL-2007] VBA ListBox multiselection enregistrement dans variable
    Par vivi4561 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2011, 16h50
  2. enregistrer des variables dans une table via requete sql
    Par Echizen1 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/09/2006, 15h15
  3. [MySQL] Pas d'enregistrement de variable dans ma BD
    Par Delf dans le forum PHP & Base de données
    Réponses: 32
    Dernier message: 20/07/2006, 17h17
  4. Réponses: 12
    Dernier message: 27/01/2006, 11h07
  5. enregistrer deux variable différente dans un seul champs
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 7
    Dernier message: 07/03/2004, 23h18

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