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 :

Afficher certaines données d'un JSON dans une page PHP


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2024
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Afficher certaines données d'un JSON dans une page PHP
    Bonjour à toutes et à tous,

    Novice en beaucoup de choses, je cherche à afficher via une page php certaines des données issues d'une API qui les met à disposition sous la forme d'un json.

    Après avoir réussi à franchir un premier obstacle (puisque les requêtes à l'api devaient apparemment passer par curl ...) puis un deuxième obstacle (pour une raison que j'ignore, un caractère "1" semblait s'ajouter à la fin de la réponse obtenue ...), je butte sur un 3ème obstacle .

    Âmes sensibles s'abstenir 8-| ... voici le morceau de code qui me semblait pouvoir permettre d'afficher un élément précis dans l'arborescence des données ainsi récupérées ...

    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
    $curl = curl_init();
     
    curl_setopt($curl, CURLOPT_URL, "LURLDELAPI");
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Accept : application/json","client-name: MONNOM","client-secret: MONSECRET", "Bearer MONSECRET"));
     
    //$response = json_decode(curl_exec($curl), true);
    //$response = json_decode(substr(curl_exec($curl), 0, -1), true);
    $correct = substr(curl_exec($curl), 0, -1);
     
    var_dump($correct);
     
    $donnees = json_decode($correct, false);
     
    echo $donnees->data[0]->id;
    //echo $donnees;

    Qu'en pensez-vous ? Qu'est-ce que je n'ai sans doute pas compris ? Quelle(s) erreur(s) flagrantes je commets ? ... Puisque toutes mes tentatives affichent invariablement la même chose (à titre d'exemple ci-dessous), c'est à dire l'équivalent (!?) de ce que donnerait par ailleurs echo $donnees :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    {
        "status": 200,
        "count": 50,
        "data": [
          {
            "id": 1125899906842626,
            "ohme_id": 2,
            "email": "test2[at]example[dot]com",
            "firstname": "Maggie",
            "lastname": "Paul",
            "civility": "Madame",
            "birthdate": "1970-08-24T00:00:00+01:00",
            "address": {
              "street_prefix_1": null,
              "street_prefix_2": null,
              "street": "5, avenue de Lagarde",
              "street_2": null,
              "city": "Joly-les-Bains",
              "state": null,
              "post_code": "17457",
              "country": "France",
              "country_code": "FR"
            },
            "phone": "0601020304",
            "structures": ["MonAsso"],
            "structure_ohme_ids": [1],
            "structure_position_names": ["Président"],
            "tags": ["Mon étiquette"],
            "groups": ["Groupe 1", "Groupe 2"],
            "emailing_lists": [          {            "name": "Abonnés Newsletter",            "app_name": "Brevo",            "external_id": "123"          }        ],
            "secondary_emails": [],
            "attachments": [{          "id": 1125899906842625,          "name": "MonFichier.pdf"        }],
            "segment_ids": [1, 2],
            "created_at": "2019-11-04T11:25:04+01:00",
            "updated_at": "2019-11-04T11:25:04+01:00"
          },
          {
            "id": 1125899906842625,
            "ohme_id": 1,
            "email": "test[at]example[dot]com",
            "firstname": "Léon",
            "lastname": "Gauthier",
            "civility": "Monsieur",
            "birthdate": "1982-07-03T00:00:00+01:00",
            "address": {
              "street_prefix_1": "Appt. 2",
              "street_prefix_2": "Entrée C",
              "street": "66, avenue de Vidal",
              "street_2": "3e droite",
              "city": "Carlierdan",
              "state": null,
              "post_code": "57277",
              "country": "France",
              "country_code": "FR"
            },
            "phone": "0601020304",
            "structures": [],
            "structure_ohme_ids": [],
            "structure_position_names": [],
            "tags": ["Mon étiquette"],
            "groups": [],
            "emailing_lists": [],
            "secondary_emails": ["testing[at]example[dot]com"],
            "attachments": [],
            "segment_ids": [],
            "created_at": "2019-11-04T11:25:03+01:00",
            "updated_at": "2019-11-04T11:25:03+01:00"
          },
          ...
        ]
      }


    Merci beaucoup pour votre aide, quelle qu'elle soit.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 473
    Points : 5 027
    Points
    5 027
    Par défaut
    Bonjour,

    Êtes-vous sûr de cette ligne substr(curl_exec($curl), 0, -1); ? Puis de quel "1" parlez vous, je ne le vois pas dans le résultat de var_dump...

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 469
    Points : 15 857
    Points
    15 857
    Par défaut
    si $donnees contient le résultat que vous nous montrez, vous êtes presque arrivé au but.

    affichez le contenu de cette variable avec var_dump ou var_export pour bien voir ce qu'elle contient.

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 934
    Points : 6 778
    Points
    6 778
    Par défaut
    Si tu ne configure pas l'option CURLOPT_RETURNTRANSFER à true, curl_exec affichera le résultat directement sur la sortie standard.

    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
    $url = 'LURLDELAPI';
    $header = [
        'Accept: application/json',
        'client-name: MONNOM',
        'client-secret: MONSECRET',
        'Bearer MONSECRET'
    ];
     
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
     
    $correct = curl_exec($curl);
     
    if (curl_errno($curl) !== CURLE_OK) {
        throw new RuntimeException(curl_error($curl));
    }
     
    curl_close($curl);
     
    $donnees = json_decode($correct, false);
     
    echo $donnees->data[0]->id;
    J'ai ajouté aussi une exception au cas où la requête échouerait.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2024
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci à tous les 3,

    La question de Toufik83 avait commencé à me mettre sur la voie et c'est exactement ça CosmoKnacki :

    comme je ne savais pas que curl_exec affiche par défaut le résultat sauf si on lui demande explicitement (via CURLOPT_RETURNTRANSFER) de ne pas le faire ... cela explique à la fois cette étrange impression que j'avais que la page affichait invariablement la même chose, quoique je fasse ... sauf une fois ou deux où j'essayais de plus en plus n'importe quoi ... et où j'avais par d'autre part remarqué que la dernière ligne du résultat affiché se terminait par "}]}1" au lieu de "}]}" ... que j'avais donc cherché à neutraliser par ce substr(curl_exec($curl), 0, -1); alors que je n'aurais jamais du ajouter (puisque cela correspondait sans doute au resultats d'un echo sur un bool(true) ou un Int(1) issu d'une autre ligne de mon propre code), tout capotant sans doute encore plus à partir de là !


    Je vais donc tout reprendre plus proprement d'abord grâce à tes explications CosmoKnacki et je reviens vers vous très vite avec, qui sait, des var_dump plus facilement interprétables ensemble du coup

    merci beaucoup donc déjà !

  6. #6
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2024
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    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
    $url = 'LURLDELAPI';
    $header = [
        'Accept: application/json',
        'client-name: MONNOM',
        'client-secret: MONSECRET',
        'Bearer MONSECRET'
    ];
     
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
     
    $correct = curl_exec($curl);
     
    if (curl_errno($curl) !== CURLE_OK) {
        throw new RuntimeException(curl_error($curl));
    }
     
    curl_close($curl);
     
    $donnees = json_decode($correct, false);
     
    echo $donnees->data[0]->id;
    J'ai ajouté aussi une exception au cas où la requête échouerait.
    Cela fonctionne parfaitement

    Et var_dump($donnees) donne bien à présent, en raccourci pour pas surcharger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    object(stdClass)#19048 (3) { ["status"]=> int(200) ["count"]=> int(1) ["data"]=> array(1) { [0]=> object(stdClass)#19046 (97) { ["id"]=> int(1125899958154819) ["ohme_id"]=> int(3766) ["email"]=> string(16) **************************************  } } }
    C'est top, il ne me reste plus qu'à me familiariser à présent avec le fonctionnement de boucles comme foreach pour afficher ce dont j'ai besoin

    Merci !

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

Discussions similaires

  1. Afficher les réponses JSON dans une page jsp
    Par momjunior dans le forum Spring Boot
    Réponses: 1
    Dernier message: 13/06/2019, 23h56
  2. Afficher du JSON dans une page web en PHP
    Par MInfo25 dans le forum CodeIgniter
    Réponses: 2
    Dernier message: 13/12/2016, 18h16
  3. [ODBC] Afficher une requête croisée dynamique dans une page PHP
    Par resterzen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/08/2006, 17h24
  4. Afficher une page php dans une page php
    Par griese dans le forum Langage
    Réponses: 9
    Dernier message: 09/06/2006, 18h24
  5. afficher une page PHP dans une page PHP ?
    Par sirbaldur dans le forum Langage
    Réponses: 4
    Dernier message: 05/05/2006, 20h42

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