Récupérations de données à partir d'une API

Fermé
Utilisateur anonyme - 30 sept. 2022 à 05:12
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 30 sept. 2022 à 10:59

Bonjour,
J'essaye de me mettre aux API et  un petit souci pour la récupération de données.
Mon API se présente comme telle

 

{
"adult": false,
"backdrop_path": "/rr7E0NoGKxvbkb89eR1GwfoYjpA.jpg",
"belongs_to_collection": null,
"budget": 63000000,
"genres": [
{
"id": 18,
"name": "Drame"
}
],
"homepage": "",
"id": 550,
"imdb_id": "tt0137523",
"original_language": "en",
"original_title": "Fight Club",
"overview": "Le narrateur, sans identité précise, vit seul, travaille seul, dort seul, mange seul ses plateaux‐repas pour une personne comme beaucoup d’autres personnes seules qui connaissent la misère humaine, morale et sexuelle. C’est pourquoi il va devenir membre du Fight club, un lieu clandestin où il va pouvoir retrouver sa virilité, l’échange et la communication. Ce club est dirigé par Tyler Durden, une sorte d’anarchiste entre gourou et philosophe qui prêche l’amour de son prochain.",
"popularity": 109.752,
"poster_path": "/6NdNO1dq9w54ujk2G4sK4ogsf0H.jpg",
"production_companies": [
{
"id": 508,
"logo_path": "/7cxRWzi4LsVm4Utfpr1hfARNurT.png",
"name": "Regency Enterprises",
"origin_country": "US"
},
{
"id": 711,
"logo_path": "/tEiIH5QesdheJmDAqQwvtN60727.png",
"name": "Fox 2000 Pictures",
"origin_country": "US"
},
{
"id": 4700,
"logo_path": "/A32wmjrs9Psf4zw0uaixF0GXfxq.png",
"name": "The Linson Company",
"origin_country": "US"
},
{
"id": 20555,
"logo_path": "/hD8yEGUBlHOcfHYbujp71vD8gZp.png",
"name": "Taurus Film",
"origin_country": "DE"
},
{
"id": 54051,
"logo_path": null,
"name": "Atman Entertainment",
"origin_country": ""
},
{
"id": 54052,
"logo_path": null,
"name": "Knickerbocker Films",
"origin_country": "US"
}
],
"production_countries": [
{
"iso_3166_1": "DE",
"name": "Germany"
},
{
"iso_3166_1": "US",
"name": "United States of America"
}
],
"release_date": "1999-10-15",
"revenue": 100853753,
"runtime": 139,
"spoken_languages": [
{
"english_name": "English",
"iso_639_1": "en",
"name": "English"
}
],
"status": "Released",
"tagline": "Le chaos. Confusion. Savon.",
"title": "Fight Club",
"video": false,
"vote_average": 8.433,
"vote_count": 24851
}

Mon script PHP est le suivant 

 

<?php
            $rechercheFilm=file_get_contents("ici l'url de l'API");
            $resultatFilm= json_decode( $rechercheFilm, true );
                foreach($resultatFilm as $ficheFilm){
						$titre = $ficheFilm["title"];
	                    $date = $ficheFilm["release_date"];
						$histoire = $ficheFilm["overview"];
                              echo "Titre du film ".$titre. " sorti le ".$date."<br/>";
                              echo "Résumé : ".$histoire;
?>

J'ai les messages d'erreur suivants 
Warning: Trying to access array offset on value of type bool in [url-de-mon-site/page.php] on line 11
Warning: Trying to access array offset on value of type bool in [url-de-mon-site/page.php] on line 13
Warning
: Trying to access array offset on value of type bool in [url-de-mon-site/page.php] on line 16

Merci pour votre possible aide
Michel

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 sept. 2022 à 08:40

Bonjour

Commence par faire un var_dump de tes variables  $rechercheFilm et $resultatFilm

Pour t'assurer que tu reçois bien les bonnes données.


0
Utilisateur anonyme
30 sept. 2022 à 09:11

Bonjour Jordane,

J'avais fait un var_dump de $rechercheFilm qui me retournait le resultat de l'API que j'ai posté ci-dessus (sans mis en forme évidemment)
Je fais un copier/coller du var_dump
 

string(1841) "{"adult":false,"backdrop_path":"/rr7E0NoGKxvbkb89eR1GwfoYjpA.jpg","belongs_to_collection":null,"budget":63000000,"genres":[{"id":18,"name":"Drame"}],"homepage":"","id":550,"imdb_id":"tt0137523","original_language":"en","original_title":"Fight Club","overview":"Le narrateur, sans identité précise, vit seul, travaille seul, dort seul, mange seul ses plateaux‐repas pour une personne comme beaucoup d’autres personnes seules qui connaissent la misère humaine, morale et sexuelle. C’est pourquoi il va devenir membre du Fight club, un lieu clandestin où il va pouvoir retrouver sa virilité, l’échange et la communication. Ce club est dirigé par Tyler Durden, une sorte d’anarchiste entre gourou et philosophe qui prêche l’amour de son prochain.","popularity":75.766,"poster_path":"/6NdNO1dq9w54ujk2G4sK4ogsf0H.jpg","production_companies":[{"id":508,"logo_path":"/7cxRWzi4LsVm4Utfpr1hfARNurT.png","name":"Regency Enterprises","origin_country":"US"},{"id":711,"logo_path":"/tEiIH5QesdheJmDAqQwvtN60727.png","name":"Fox 2000 Pictures","origin_country":"US"},{"id":4700,"logo_path":"/A32wmjrs9Psf4zw0uaixF0GXfxq.png","name":"The Linson Company","origin_country":"US"},{"id":20555,"logo_path":"/hD8yEGUBlHOcfHYbujp71vD8gZp.png","name":"Taurus Film","origin_country":"DE"},{"id":54051,"logo_path":null,"name":"Atman Entertainment","origin_country":""},{"id":54052,"logo_path":null,"name":"Knickerbocker Films","origin_country":"US"}],"production_countries":[{"iso_3166_1":"DE","name":"Germany"},{"iso_3166_1":"US","name":"United States of America"}],"release_date":"1999-10-15","revenue":100853753,"runtime":139,"spoken_languages":[{"english_name":"English","iso_639_1":"en","name":"English"}],"status":"Released","tagline":"Le chaos. Confusion. Savon.","title":"Fight Club","video":false,"vote_average":8.433,"vote_count":24857}"


Le var_dump de $resultatFilm me retourne
 

Warning: Array to string conversion in [url de mon site/fichier php] on line 11
string(5) "Array"

Michel

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 sept. 2022 à 09:27

le message d'erreur me semble étrange.

Et ton api ne retourne les infos que d'un seul film ?  Tu n'as donc pas besoin de boucle...

Si je prends le contenu de ton var_dump je peux directement faire :

$rechercheFilm = '{"adult":false,"backdrop_path":"/rr7E0NoGKxvbkb89eR1GwfoYjpA.jpg","belongs_to_collection":null,"budget":63000000,"genres":[{"id":18,"name":"Drame"}],"homepage":"","id":550,"imdb_id":"tt0137523","original_language":"en","original_title":"Fight Club","overview":"Le narrateur, sans identité précise, vit seul, travaille seul, dort seul, mange seul ses plateaux‐repas pour une personne comme beaucoup d’autres personnes seules qui connaissent la misère humaine, morale et sexuelle. C’est pourquoi il va devenir membre du Fight club, un lieu clandestin où il va pouvoir retrouver sa virilité, l’échange et la communication. Ce club est dirigé par Tyler Durden, une sorte d’anarchiste entre gourou et philosophe qui prêche l’amour de son prochain.","popularity":75.766,"poster_path":"/6NdNO1dq9w54ujk2G4sK4ogsf0H.jpg","production_companies":[{"id":508,"logo_path":"/7cxRWzi4LsVm4Utfpr1hfARNurT.png","name":"Regency Enterprises","origin_country":"US"},{"id":711,"logo_path":"/tEiIH5QesdheJmDAqQwvtN60727.png","name":"Fox 2000 Pictures","origin_country":"US"},{"id":4700,"logo_path":"/A32wmjrs9Psf4zw0uaixF0GXfxq.png","name":"The Linson Company","origin_country":"US"},{"id":20555,"logo_path":"/hD8yEGUBlHOcfHYbujp71vD8gZp.png","name":"Taurus Film","origin_country":"DE"},{"id":54051,"logo_path":null,"name":"Atman Entertainment","origin_country":""},{"id":54052,"logo_path":null,"name":"Knickerbocker Films","origin_country":"US"}],"production_countries":[{"iso_3166_1":"DE","name":"Germany"},{"iso_3166_1":"US","name":"United States of America"}],"release_date":"1999-10-15","revenue":100853753,"runtime":139,"spoken_languages":[{"english_name":"English","iso_639_1":"en","name":"English"}],"status":"Released","tagline":"Le chaos. Confusion. Savon.","title":"Fight Club","video":false,"vote_average":8.433,"vote_count":24857}';
$resultatFilm= json_decode( $rechercheFilm, true );

  $titre = $resultatFilm["title"];
  $date = $resultatFilm["release_date"];
  $histoire = $resultatFilm["overview"];
  echo "Titre du film ".$titre. " sorti le ".$date."<br/>";
  echo "Résumé : ".$histoire;

Tu voix que ça fonctionne...

Pourrais tu nous partager l'url exacte de l'api pour qu'on teste ?? ( au pire, envoies la moi en message privé )

0
Utilisateur anonyme
30 sept. 2022 à 10:41

Non , j'ai pris l'exemple d'un seul film pour avoir un résultat mais en fait le site est constitué d'un formulaire a partir duquel on saisit le titre du film. Pour cela l'id du film est stocké en tant que variable (pour mon problème j'ai mis id du film "en dur"). Faire un site pour afficher les données d'un seul film n'a aucun intérêt. C'est bien pour cela que je fais une boucle.
En fait je me demande si mon probleme ne vient pas de l'array.
Juste après le string(1841), il n'y a pas de crochets (qui définissent un array me semble t-il).
Certains autres resultat comportent un results[ liste de l'API]. 
Pour ce cas de figure, je code ma boucle en mettant le results entre crochets de la façon suivante
 

<?php
            $rechercheFilm=file_get_contents("ici l'url de l'API");
            $resultatFilm= json_decode( $rechercheFilm, true );
                foreach($resultatFilm['results'] as $ficheFilm){
						$titre = $ficheFilm["title"];
	                    $date = $ficheFilm["release_date"];
						$histoire = $ficheFilm["overview"];
                              echo "Titre du film ".$titre. " sorti le ".$date."<br/>";
                              echo "Résumé : ".$histoire;
?>

Mais la vu que je n'ai pas cet array, je ne sais pas comment le coder. j'ai essayé sans crochets, avec crochets "vides" ... Rien ne fonctionne

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 sept. 2022 à 10:59

Le code que je t'ai donné fonctionne pour un seul film..

Et tant que je n'aurai pas un exemple complet/ concret de l'API.. je ne pourrai pas faire mieux..

0