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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Récupérer API via JSON et loop


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2007
    Messages : 95
    Points : 48
    Points
    48
    Par défaut Récupérer API via JSON et loop
    Bonjour,
    Je ne maitrise pas du tout JSON mais je me suis lancé dans l'inconnu.
    Je souhaite afficher la liste des arrêts d'un train SNCF en indiquant son numéro.
    J'y suis arrivé sauf que je ne parviens par à construire le loop pour ne faire qu'une ligne et qu'il affiche toutes les gares à chaque ligne.

    JSON:
    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
     
     object(stdClass)#11 (6) { 
    	["vehicle_journeys"]=> array(23) { 
    		[0]=> object(stdClass)#22 (10) { 
    			["stop_times"]=> array(4) { 
    				[0]=> object(stdClass)#29 (8) { 
    					["stop_point"]=> object(stdClass)#27 (6) { 
    						["name"]=> string(28) "Paris Gare de Lyon Hall 1 &2" 
    						["links"]=> array(0) { } 
    						["coord"]=> object(stdClass)#28 (2) { 
    							["lat"]=> string(9) "48.844945" 
    							["lon"]=> string(8) "2.373481" 
    						} 
    						["label"]=> string(36) "Paris Gare de Lyon Hall 1 &2 (Paris)" 
    						["equipments"]=> array(0) { } 
    						["id"]=> string(42) "stop_point:SNCF:87686006:LongDistanceTrain" 
    					} 
    					["drop_off_allowed"]=> bool(false) 
    					["utc_departure_time"]=> string(6) "145200" 
    					["headsign"]=> string(4) "6621" 
    					["arrival_time"]=> string(6) "155200" 
    					["utc_arrival_time"]=> string(6) "145200" 
    					["pickup_allowed"]=> bool(true) 
    					["departure_time"]=> string(6) "155200" 
    				} 
    				[1]=> object(stdClass)#32 (8) { 
                                    ...
                                    [2]
                                    ...
    Et ma page php où ça doit s'afficher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $url = "url de l'API avec mes variables";
    $reponse = file_get_contents($url);
    $parsed_json = json_decode($reponse, false); 
       echo 'Départ: '.$parsed_json->vehicle_journeys[0]->stop_times[0]->stop_point->name.' '.$parsed_json->vehicle_journeys[0]->stop_times[0]->departure_time.'<br/>';
       echo '&nbsp;|&nbsp;'.$parsed_json->vehicle_journeys[0]->stop_times[1]->stop_point->name.' '.$parsed_json->vehicle_journeys[0]->stop_times[1]->departure_time.'<br/>';
       echo '&nbsp;|&nbsp;'.$parsed_json->vehicle_journeys[0]->stop_times[2]->stop_point->name.' '.$parsed_json->vehicle_journeys[0]->stop_times[2]->departure_time.'<br/>';
    j'ai essayé avec foreach, count i ... tout ce que je peux trouver sur google.

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    avec "json_decode" mettez le 2e argument à TRUE pour créer un tableau associatif. le tableau peut parfois être plus simple à parcourir qu'un objet.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2007
    Messages : 95
    Points : 48
    Points
    48
    Par défaut
    en mettant "true", plus rien ne s'affiche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $reponse = file_get_contents($url);
    $parsed_json = json_decode($reponse, false); 
    $depart = 'Départ: '.$parsed_json->vehicle_journeys[0]->stop_times[0]->stop_point->name.' '.$parsed_json->vehicle_journeys[0]->stop_times[0]->departure_time."\n";
    $stop = '&nbsp;|&nbsp;'.$parsed_json->vehicle_journeys[0]->stop_times[1]->stop_point->name.' '.$parsed_json->vehicle_journeys[0]->stop_times[1]->departure_time."\n";
    $stop .= '&nbsp;|&nbsp;'.$parsed_json->vehicle_journeys[0]->stop_times[2]->stop_point->name.' '.$parsed_json->vehicle_journeys[0]->stop_times[2]->departure_time."\n";
    $stop .= '&nbsp;|&nbsp;'.$parsed_json->vehicle_journeys[0]->stop_times[3]->stop_point->name.' '.$parsed_json->vehicle_journeys[0]->stop_times[3]->departure_time."\n";
     
    //ETC ...
    //je fais
    echo $stop;
    j'ai la liste des arrêts, mais parce que je détaille chaque ligne (stop_times[0, 1, 2, ...])
    j'aimerai donc n'avoir qu'une ligne comme on peut faire un while en php mais je ne parviens pas à ce que la valeur entre [ ] change.
    J'ai vu sur google un espèce de foreach avec i++

Discussions similaires

  1. Réponses: 9
    Dernier message: 02/08/2018, 13h50
  2. Récupérer les données json d'une api
    Par enock97 dans le forum AJAX
    Réponses: 2
    Dernier message: 02/05/2018, 17h23
  3. [Android] Récupérer un tableau d'une API via REST Client et ClientDataSet
    Par delaio dans le forum Composants FMX
    Réponses: 16
    Dernier message: 07/12/2017, 11h12
  4. Réponses: 8
    Dernier message: 20/02/2016, 00h57
  5. Réponses: 2
    Dernier message: 28/10/2015, 10h57

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