Récupérations de données à partir d'une API
Ferméjordane45 Messages postés 38380 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 janvier 2025 - 30 sept. 2022 à 10:59
- Récupérations de données à partir d'une API
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
- Avatar facebook à partir de photo - Guide
- Annuaire portable gratuit a partir d'un nom ✓ - Forum Mobile
4 réponses
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.
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
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é )
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
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..