Question Api et problème d'images

Eléphant du PHP | 283 Messages

05 déc. 2015, 16:45

Bonjour,

J'utilise l'api d'allociné pour mon site et je voudrais avoir quelques renseignements. J'enregistre directement l'affiche d'un film avec l'url des serveurs d'allociné et je me rend compte que ce n'est pas super tout compte fais car si elles changent je me retrouve sans image.

Ce qui m’amène à la question suivante : Serait-il possible d'afficher la liste des films dont les images ne se chargent pas ?

Merci à ceux qui pourront m'aider !

Mammouth du PHP | 2703 Messages

05 déc. 2015, 18:12

un code pour avoir le code de retour d'une url :
http://stackoverflow.com/questions/4084 ... 404-in-php

Eléphant du PHP | 283 Messages

05 déc. 2015, 18:22

Salut et merci de ton aide or 1 !
Serait-il possible d'avoir des explications sur le lien que tu m'as donné ? Je suis pas expert en anglais malheureusement. :/

Eléphant du PHP | 283 Messages

07 déc. 2015, 17:06

Quelqu'un pour m'expliquer le lien de Or 1 s'il vous plait ? Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

07 déc. 2015, 17:21

Bonjour,

Qu'entends tu par "les images ne se chargent pas" ?
Regarde dans la console réseau de ton navigateur (Ctrl+Maj+i > Réseau) et essaye de déterminer ce qui pose problème.

Si elles ne se chargent pas, le code HTTP renvoyé par le serveur est probablement en 4XX ou 5xx
Le lien fournit par or1 permet de récupérer quel est ce code et donc ensuite de faire le traitement que tu veux
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 283 Messages

08 déc. 2015, 17:21

Salut @rthur et merci de ton aide.
En fait vu que c'est l'api d'allociné, les liens enregistrés dans mon champ img (pour les affiches de films) ne sont pas présents sur mon serveur mais sur ceux d'allociné. Donc dès qu'allociné change un lien pour une affiche le mien n'affiche plus rien de mon coté. Voilà pourquoi j'aimerais faire une liste de tous les films présents dans ma bdd pour lesquels il n'y a plus d'images à afficher afin que je corrige de mon coté.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

08 déc. 2015, 17:27

ok donc la 2ème partie de ma réponse devrait fonctionner avec le lien de or1
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 283 Messages

08 déc. 2015, 19:30

D'accord merci !
Et du coup, comment ça se passe ? Je fais une boucle pour sélectionner l'ensemble des affiches dans ma table film ?
Et après c'est à l'affichage que j'utilise l'élément présent dans le lien ?

Eléphant du PHP | 283 Messages

11 déc. 2015, 21:16

Ou sinon, serait-il possible de sélectionner l'ensemble des films dont les images par défaut on pour nom empty.gif car apparemment c'est le nom de l'image que met allociné quand l'image ne peut pas se charger ?
Là encore avec une boucle mais je ne sais pas comment préciser dans ma requête pour le nom empty.gif. Car en fait dans ma table, il y a d'enregistré le lien de l'image et quand il est mort ça met par défaut empty.gif sans pour autant être enregistré dans ma table.

Je ne sais pas si j'ai été clair mais merci à ceux qui pourront m'aider avec ce problème que je ne sais vraiment pas comment résoudre.

Eléphant du PHP | 243 Messages

11 déc. 2015, 23:12

Salut,
Dans le cas où les liens sont enregistrés dans ta table, il te faudra :
  • - Créer une boucle qui parcourt les films à afficher
    - Pour chaque film, créer une condition qui reprend ce que t'a donné Or (en gros, tu test le lien, si une erreur est renvoyée alors tu affiches ton empty.jpeg, sinon tu affiches le lien
    - Puis on ferme tout et on va se coucher
Si y'a une étape que tu n'arrives pas à effectuer, ou alors que je suis complètement Hors Sujet, n'hésite pas ! 8-)
Modifié en dernier par Ascla le 12 déc. 2015, 00:25, modifié 1 fois.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphant du PHP | 283 Messages

11 déc. 2015, 23:33

D'accord merci infiniment pour ton aide, je croyais que j'allais laisser tomber.
Là ou je bloque c'est au niveau de la condition de Or.
Voici mon code :
<?php
    $stmt = $bdd->prepare("SELECT id, titre, img FROM `film` WHERE `active` = '1'  ORDER BY `id` ASC LIMIT 0,20");
    if (!$stmt->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    while ($getAffiche = $stmt->fetch()) {
<div class="collection">
      <img src="<?=$getAffiche ['img']; ?>" title="<?=$getAffiche ['titre']; ?>" alt="" width="120" height="158">
   </div>
    }
?>
Par contre je me demande si c'est vraiment la bonne solution car au final ceci doit fonctionner si cela retourne une ERREUR ?
Or quand un lien n'existe plus sur allociné ils affichent quand même une image "empty.gif". Donc au final est ce que ça retourne vraiment une erreur ? Ne faut-il pas plutôt faire en sorte de savoir si l'image ne s'appelle pas empty.gif ?
merci de votre aide en tout cas !

Eléphant du PHP | 243 Messages

12 déc. 2015, 00:38

Tu es sur la bonne voie !
Dans ta boucle while il faut faire la vérification.
Elle se présente de la façon suivante :
curl_getinfo ( resource $ch [, int $opt = 0 ] )
Ça donnerait donc un truc du genre :
<?php
$lien = curl_init($getAffiche['img']); //On stocke le lien dans $lien
curl_exec($lien); //On éxécute la fonction magique

if (curl_errno($lien)) // Si il y a une erreur
{
    echo "<div class="collection"><img src='http://lien.fr/empty.jpg' title=' ".$getAffiche['titre']." ' alt='' width='120' height='158'></div>";
}
else
{
    echo "<div class="collection"><img src=' ".$getAffiche['image']." ' title=' ".$getAffiche['titre']." ' alt='' width='120' height='158'></div>";
}
?>
Voilà, je n'ai pas testé le code mais ça devrait ressembler à un truc du genre !
En espérant que ça marche. Si tu as une question, n'hésite pas !
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphant du PHP | 243 Messages

12 déc. 2015, 00:54

Or quand un lien n'existe plus sur allociné ils affichent quand même une image "empty.gif".
Ah ça m'apprendra à ne pas tout lire (sans doutes la fatigue) :?

Dans ce cas là, pas besoin d'utiliser ce qui a été dit plus haut (qui ne marcherait que si le lien était complètement supprimé --> Erreur 404).
Mais j'ai une question, que se passe-t-il quand une image est supprimée. Le lien reste-t-il toujours valide ? Si oui, vers quel type d'image dirige-t-il ?
Dans le cas où le lien reste toujours valide et qu'il y a juste l'image qui change, je ne vois pas du tout comment on peut le faire en php !
Serait-il pas plus judicieux d'enregistrer l'image lors des ajouts dans la base de données ?

Bonne soirée !
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphant du PHP | 283 Messages

12 déc. 2015, 01:26

Voici ce que ça donne quand l'image est supprimé : http://fr.web.img3.acsta.net/pictures/1 ... 126445.jpg
En fait, j'ai l'impression que ça met par défaut une image.
Je pense en effet qu'il serait plus judicieux d'enregistrer directement les images sur mon serveur mais je ne sais pas comment modifier l'api pour faire ça et j'ai pas envie de faire des bêtises.

Mammouth du PHP | 2703 Messages

12 déc. 2015, 01:35

cette url retourne bien une 404.