[RESOLU] Débutant API afficher données JSON dans PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Débutant API afficher données JSON dans PHP

Re: Débutant API afficher données JSON dans PHP

par hbennis » 20 nov. 2024, 16:22

PS : je passe donc à présent à l'étape suivante qui consiste à me familiariser avec le fonctionnement de boucles comme foreach pour afficher ce dont j'ai besoin 8)

Re: Débutant API afficher données JSON dans PHP

par hbennis » 20 nov. 2024, 16:20

Merci @rthur !

Résolu* : 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 remarqué une fois 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 l'ajouter (puisque cela correspondait sans doute au resultat 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à !

*en ajoutant dans les premières lignes
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
et en supprimant l'inutile
$correct = substr(curl_exec($curl), 0, -1);

Re: Débutant API afficher données JSON dans PHP

par @rthur » 19 nov. 2024, 13:44

A priori je ne vois pas d'erreurs flagrantes, mais difficile juste en lisant le code.

Pour débuguer, un point important : n'utilise pas echo mais toujours var_dump()

Du coup remplace
echo $donnees->data[0]->id;
par
var_dump($donnees->data[0]->id);
Si ça ne renvoie rien ou une erreur, tu peux remonter d'objet en objet pour voir à quel niveau ça dysfonctionne
var_dump($donnees->data[0]);
var_dump($donnees->data);
var_dump($donnees);

Débutant API afficher données JSON dans PHP

par hbennis » 19 nov. 2024, 12:24

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 ...
$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;
... mais dont le résultat est bien décevant puisque toutes mes tentatives (après m'être inspiré aussi des réponses apportées dans un autre post de ce forum) affichent invariablement la même chose :
{
    "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"
      },
      ...
    ]
  }
Qu'en pensez-vous ? Qu'est-ce que je n'ai sans doute pas compris ? Quelle(s) erreur(s) flagrantes je commets ?

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