Page 1 sur 2
Insérer une image pour une variable
Posté : 06 mai 2017, 07:19
par yoann38
Salut tt le monde.
J'affiche via ma base de donnée et via une variable les image de mes post
$image = !empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo']) ? '../annonce/img-big-format/miniature/'.$ligne['photo'] : '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
Exemple de résultat retourné
<img class="img-responsive" src="https://site.fr/static/images/vignettes/a_391941.gif">
A sàvoir que bien sur la fin ( a_391941.gif ) peut varier.
J'aimerais faire en sorte que si $image correspond à
https://site.fr/static/images/vignettes/.....gif ( alors on affiche 'echec', par exemple )
Si c'est plus simple si le format photo est .gif alors echec.
Merci pour les tuyaux

Re: Insérer une image pour une variable
Posté : 06 mai 2017, 08:45
par @rthur
Bonjour,
Mon conseil serait déjà que tu mettes ton if sur 3 lignes avec des accolades, ça rendra ton code + lisible et ça te permettra de mieux voir à quel niveau tu dois insérer ta nouvelle condition
Re: Insérer une image pour une variable
Posté : 09 mai 2017, 19:32
par yoann38
Actuellement c'est dans ma boucle et ca parcour mon repertoir afin de voir si l'image est présente ou pas
while($ligne = $req->fetch(PDO::FETCH_ASSOC)){
$image = !empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo']) ? '../annonce/img-big-format/miniature/'.$ligne['photo'] : '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
}else{
// code
}
Re: Insérer une image pour une variable
Posté : 09 mai 2017, 20:10
par @rthur
Mon conseil reste le même

Re: Insérer une image pour une variable
Posté : 10 mai 2017, 09:03
par kevin254kl
Bonjour,
Ce que veut dire @rthur c'est que à lire comme ça c'est difficile en un seul bloque,
http://a-pellegrini.developpez.com/tuto ... ing-style/
en développement en général plus ton code est compréhensible plus tu pourra avoir de l'aide facilement.
Re: Insérer une image pour une variable
Posté : 10 mai 2017, 19:30
par yoann38
oK OK,
Bon j'ai mis ça de façon plus claire enfin je pense
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
}else{
$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
}
J'ai vu un autre poste qui ma donné une idée

Enfait je souhaite faire en sorte que si l'image est plus petite disons que 10px ( je sais c'est très petit ) alors on affiche une image par defaut
Du coup je pensé faire quelque chose comme :
// Affiche d'une photo par defaut si la photo est inférieur à 10px
list($width, $height, $type, $attr) = getimagesize($ligne['photo']);
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
}elseif (!empty($ligne['photo']) && $height <10) {
$image = 'image par defaut';
}else{
$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
}
Mais il doit y avoir une couille dans le paté surement

Re: Insérer une image pour une variable
Posté : 10 mai 2017, 21:00
par yoann38
je me réponds à moi même :
// Affiche d'une photo par defaut si la photo est inférieur à 10px
list($width, $height, $type, $attr) = getimagesize($ligne['photo']);
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
}elseif ($height <10 ) {
$ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
}else{
$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
}
Le principe marche mais j'ai ce message d'erreur qui s'affiche comment faire pour l'éviter svp:
Warning: getimagesize(https://static.ticketmaster.fr/static/i ... 398186.gif): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\azerty\sortie.php on line 561
Re: Insérer une image pour une variable
Posté : 11 mai 2017, 01:09
par @rthur
Le principe marche mais j'ai ce message d'erreur qui s'affiche comment faire pour l'éviter svp:
Warning: getimagesize(https://static.ticketmaster.fr/static/i ... 398186.gif): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\azerty\sortie.php on line 561
Le message d'erreur est pourtant plutôt explicite :
failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
Et quand on clic sur le lien de ton image :
https://static.ticketmaster.fr/static/i ... 398186.gif
Re: Insérer une image pour une variable
Posté : 11 mai 2017, 07:01
par yoann38
Oui effectivement, une belle 404.
Du coup comment éviter ceci justement
// Affiche d'une photo par defaut si la photo est inférieur à 10px
list($width, $height, $type, $attr) = getimagesize($ligne['photo']);
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
}elseif ($height <10 ) {
$ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
}else{
$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
}
Merci du temps qui m'est accordé
Re: Insérer une image pour une variable
Posté : 11 mai 2017, 09:25
par @rthur
Soit tu mets ta fonction dans un try/catch et tu analyses le message d'erreur pour savoir si c'est bloquant ou pas.
Soit tu utilises la fonction get_headers() pour vérifier que l'url soit valide avant de faire ton traitement
http://php.net/manual/fr/function.get-headers.php
Re: Insérer une image pour une variable
Posté : 11 mai 2017, 22:04
par yoann38
Merci
Voici le résultat :
// Vérification de la photo
$url_inexistante = get_headers($ligne['photo'], 1);
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
// Si l'image renvoyé est une 404 ou inférieur à 10 px ...
}elseif (preg_match("#Not Found#i", $url_inexistante[0])) {
$ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
}else{
$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
}
Re: Insérer une image pour une variable
Posté : 12 mai 2017, 07:04
par yoann38
Bon en fait j'ai un message d'erreur une fois mis en ligne mais pas de pbm en local.
Warning: get_headers(): This function may only be used against URLs in /home/users6/n/nky7966/www/sortie.php on line 559
Le code est :
$url_inexistante = get_headers($ligne['photo'], 1);
if (!empty($ligne['photo']) && file_exists('annonce/img-big-format/miniature/'.$ligne['photo'])) {
$image = '../annonce/img-big-format/miniature/'.$ligne['photo'];
// Si l'image renvoyé est une 404 ou inférieur à 10 px ...
}elseif (preg_match("#Not Found#i", $url_inexistante[0])) {
$ligne['photo'] = '../annonce/img-big-format/defaut.jpg';
}else{
$image = '../annonce/remplacement/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
}
L'exemple du probème :
http://tripday.fr/sortie/sortir-voiron.html
Mais sur une autre page ou le code agit pareil aucun problème :
http://tripday.fr/sortie/sortir-avignon.html
Je ne comprends pas trop je dois dire
Mon Server est en php 7.0 ( si ça peut aider )
Re: Insérer une image pour une variable
Posté : 12 mai 2017, 09:06
par @rthur
Lis le message d'erreur, qu'est-ce que tu en comprends ?
Re: Insérer une image pour une variable
Posté : 12 mai 2017, 16:28
par yoann38
Je suis pas sur d'avoir compris, mais en gros je ne peut l'utiliser qu'une seule fois c'est pas ça ?
Mais comment régler ce soucis justement ?
Re: Insérer une image pour une variable
Posté : 12 mai 2017, 16:53
par @rthur
Non ça ne veut pas dire cela, fait un effort ou utilise Google Translate si tu ne parles pas anglais.
get_headers(): This function may only be used against URLs
Je ne vais pas te donner la solution clé-en-main car il faut que tu travailles un peu par toi même pour comprendre et apprendre, c'est comme cela que tu progresseras