Page 1 sur 1

affichage d'une image en fonction d'une réponse oui/non

Posté : 17 juil. 2011, 12:27
par koroce
Bonjour,
je bloque depuis un moment sur un probléme d'affichage de photo en fonction d'une réponse oui/non dans un formulaire. Si "oui" on affiche la photo uploader dans une base de donnée (iamges_binaires), jusque la pas de probléme. Si "non" on affiche les avatars choisis parmi 10 fichiers contenus dans un dossier de mon serveur local (MAMP), dont on enregistre le chemin dans un champ texte de ma base de données. Et là cela ne fonctionne pas ? Par contre si je vais voir directement dans mon fichier "afficher_image.php" je vois bien mes photos affichées en fonction de la réponse oui/non.
Mais lorsque je vais sur ma page d'accueil cela marche seulement pour la photo uploader.
//Voici mon fichier "afficher_image.php":
<?php
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=SiteRac', 'root', 'root', $pdo_options);
    
    $req = $bdd->prepare('SELECT prenom, donnees_binaires, type_fichier, reponse, avatar FROM images_binaires WHERE prenom=?');
    $req->execute(array($_GET['prenom']));
    while($donnees = $req->fetch())
    {
    	if ($donnees['reponse']=="oui")
    	{$donnees_binaires = $donnees["donnees_binaires"];
		$type_fichier = $donnees["type_fichier"]; 
		header ("content­type: $type_fichier"); 
		echo $donnees_binaires; }
		else{
		$donnees_binaires=$donnees["avatar"];
		echo  '<img src="PhotoId/'. $donnees_binaires .'"/>';}
    }
      
    $reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
	
?>

//Voici un bout du fichier où doit s'afficher ma photo (page d'accueil):

<div id="corp">
	<div id="petit_enfants">
		    <a class="corps_clement" href="page1.php?prenom=clement&photo=Photo/clement.jpg"><div id="clement"><br/><br/><br/>Clement<span>
		    <img src='afficher_image.php?prenom=clement'/></span></div></a>
		    <a class="corps_emma" href="page1.php?prenom=Emma&photo=Photo/emma.jpg"><div div id="emma"><br/><br/><br/>Emma<span>
		    <img src='afficher_image.php?prenom=Emma'/></span></div></a>
		    <a class="corps_adrien"href="page1.php?prenom=Adrien&photo=Photo/adrien.jpg"><div id="adrien"><br/><br/><br/>Adrien<span>
		    <img src='afficher_image.php?prenom=Adrien'/></span></div></a>
		    <a class="corps_dorian" href="page1.php?prenom=Dorian&photo=Photo/dorian.jpg"><div id="dorian"><br/><br/><br/>Dorian<span>
		    <img src='afficher_image.php?prenom=Dorian'/></span></div></a>
                    .........
J'espére ne pas avoir été trop obscur dans mes explications.
Merci pour votre aide et vos suggestions.

Re: affichage d'une image en fonction d'une réponse oui/non

Posté : 17 juil. 2011, 14:37
par Ryle
Ton script php est appelé par le navigateur quand il tente d'afficher l'image :
<img src='afficher_image.php?prenom=Dorian'/>
En l'état actuel, il faut donc que ton script retourne obligatoirement une image (c'est à dire le flux binaire correspondant à l'image sollicitée par la balise <img>. Le problème, c'est que lorsque l'image n'est pas en base, tu retournes une balise html et non pas l'image qu'elle doit afficher...

Au niveau de ton code, tu peux soit faire un simple header('Location:...') lorsque l'image n'est pas stockée en base, pour que le navigateur soit redirigé vers l'image physique (il récupérera donc le flux de l'image et l'affichera à l'endroit souhaité).

Soit, pour rester cohérent, mais c'est nettement moins optimisé, lorsque l'image n'est pas stockée en base, aller lire l'image physique sur le disque avec php, et retourner le flux de celle-ci comme lorsque celui-ci provient de ta base.

Dans les deux cas, le navigateur recevra bien une image et pourra l'afficher à l'écran :)

Re: affichage d'une image en fonction d'une réponse oui/non

Posté : 20 juil. 2011, 20:13
par koroce
Super, merci beaucoup cela fonctionne !!!!