Question Api et problème d'images

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 : Question Api et problème d'images

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 22:27

D'accord merci pour toute ton aide en tout cas !

Re: Question Api et problème d'images

par Ascla » 13 déc. 2015, 18:38

Ah ça je ne peux rien y faire !
A toi de trouver soit une machine plus rapide, ou alors un autre système de condition.
Par exemple stocker la date de la dernière vérification, et si celle ci est inférieur à 1 semaine (ce n'est qu'un exemple !), alors on ne s'en occupe pas.

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 18:34

Ah c'est bon ça fonctionne ! Tu avais raison en fait. Ma requête précisait uniquement les 20 derniers films ajoutés. Sauf qu'il n'y avait pas de problèmes d'images pour celles ci. Donc en étendant le nombre de films à afficher c'est bon ça fonctionne.
Seul problème quand je veux en afficher une grosse quantité comme 5000 ça bug et le script est trop long à charger.

Re: Question Api et problème d'images

par Ascla » 13 déc. 2015, 18:26

Et bien enlève la condition (WHERE) de ta requête.
$stmt = $bdd->prepare("SELECT id, titre, img FROM `fiche_film`");

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 18:15

Oui justement le but est d'afficher les données quand les images retournent une erreur 404, car il s'agira des affiches de films à modifier car elles sont vides ou en l’occurrence elles affichent une image par défaut.

Re: Question Api et problème d'images

par Ascla » 13 déc. 2015, 18:11

Bah comme je te l'avais dit, c'est une condition inutile. Mais lorsque tu récupères les données (active=1), existe-t-il au moins une donnée possédant une image vide ?
Car le code que tu m'as montré n'affiche les données QUE si l'image renvoie une erreur 404.

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 18:03

Je ne sais pas du tout d'où pourrait venir l'erreur. Il doit manquer quelque chose. Ne faudrait-il pas rajouter getimagesize ?

Re: Question Api et problème d'images

par Ascla » 13 déc. 2015, 17:51

Bon et bien il va falloir que tu regardes ligne par ligne pour connaitre l'endroit où il y a un problème.
Tout d'abord vérifier si toutes les données que tu appelles sont bien transmises.
Puis regarde si tous les liens sans image sont bien vus comme des pages 404.
Si tout ceci fonctionne, il n'y a pas de raisons pour que ça ne marche pas.

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 17:42

J'ai essayé avec des echo ça fonctionne correctement. Donc je ne vois pas d'où pourrait venir le problème surtout que ça ne m'affiche absolument rien, même pas de message d'erreur.

Re: Question Api et problème d'images

par Ascla » 13 déc. 2015, 17:36

Eh bien ça ne se fait pas. Je pense même que ça pourrait générer des erreurs (à vérifier).
Si rien ne se passe, ça doit venir de ta requête qui appelle les données. Essaye de regarder si elle est te renvoie bien des données en utilisant des echo.

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 17:28

Bonne question, je fais à chaque fois comme ça vu qu'en générale je ferme pour laisser du html.

Re: Question Api et problème d'images

par Ascla » 13 déc. 2015, 17:24

Pourquoi refermer php pour le ré-ouvrir ensuite ?

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 17:18

D'accord merci !
J'ai testé ça mais ça n'a pas l'air de fonctionner :
<?php
    $stmt = $bdd->prepare("SELECT id, titre, img FROM `fiche_film` WHERE `active` = '1'  ORDER BY `id` ASC LIMIT 0,20");
    if (!$stmt->execute()) {
        echo 'ERREUR';
        exit; //pas obligatoire
    }
    while ($getAffiche = $stmt->fetch()) {?>
	<?php
$lien = $getAffiche['img']; //image a verifier
$lien_image_empty = "./images/icons/no_affiche_film.jpg"; //image a afficher si vide

$handle = curl_init($lien);

curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);

/* Check for 404 (file not found). */
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
    /* Handle 404 here. */
    echo '<div class="collection"><img src=" '.$lien_image_empty.' " title=" '.$getAffiche['titre'].' " width="148" height="197" class="img-indent"></div>';
}
curl_close($handle);

/* Handle $response here. */?>
   <?php } ?>

Re: Question Api et problème d'images

par Ascla » 13 déc. 2015, 17:09

Oui on reste sur le même principe.
$handle = curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);

/* Check for 404 (file not found). */
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
    /* Handle 404 here. */
}

curl_close($handle);

/* Handle $response here. */
Tu as juste à créer une boucle qui parcourt tous les liens de ta bdd, et lorsque tu reçois un message 404, tu effectues la modification désirée.

Re: Question Api et problème d'images

par Larker » 13 déc. 2015, 16:56

Et bien j'ai envie de dire que ça fonctionne ! :D Merci !!!
Par contre dernière petite question : Si je veux afficher avec une boucle toutes les images que je remplace avec mon image empty c'est possible ? Sa sera plus facile comme ça pour les remplacer que de devoir chercher les films qui n'ont pas d'images manuellement.
<?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>
    }
?>
Faut il juste reprendre la fonction que tu m'as donné ci dessus ? merci encore en tout cas ! :D