afficher une image a partir d'un champs blob
Bonjours,
J'ai un petit problème, je stock des photos dans un champs blob de ma table et je n'arrive pas a les afficher.
voici ma table:
CREATE TABLE `ploopi_mod_annuaire_photo` (
`id_photo` INT NOT NULL AUTO_INCREMENT ,
`nom` VARCHAR(50) NOT NULL ,
`desc` VARCHAR(100) NOT NULL ,
`photo` BLOB NOT NULL ,
`type` VARCHAR(25) NOT NULL ,
PRIMARY KEY (`id_img`)
)
que je remplis comme il suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <html>
<head>
<title>Envoyer une image</title>
</head>
<body>
<h1>Envoyer une photo</h1>
<form enctype="multipart/form-data" action="traitement.php" method="post">
<input type="text" name="nom" size="50" />
<input type="text" name="desc" size="100" />
<input type="file" name="photo" />
<input type="submit" name="validation" value="Envoyer" />
</form>
</body>
</html> |
traitement.php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?php
if(isset($_POST['validation'])) {
if(!is_uploaded_file($_FILES['photo']['tmp_name'])) {
echo 'Un problème est survenu durant l opération. Veuillez réessayer !';
} else {
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo']['name'], '.');
if(!in_array($extension, $extensions)) {
echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg.';
} else {
define('MAXSIZE', 300000);
if($_FILES['image']['size'] > MAXSIZE) {
echo 'Votre image est supérieure à la taille maximale de '.$maxtaille.' octets';
} else {
//on se connecte
$connexion = mysql_connect("localhost", "stagiaire", "stagiaire") or die (mysql_error());
$database = mysql_select_db("stagiaire2") or die (mysql_error());
$photo = mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name']));
mysql_query("INSERT INTO ploopi_mod_annuaire_photo VALUES('', '".$_POST[nom]."', '".$_POST[desc]."', '".$photo."', '".$_FILES[photo][type]."')") or die (mysql_error());
mysql_close();
echo 'L insertion s est bien déroulée !';
}
}
}
}
?> |
Jusque la pas de soucis les photo sont bien enregistré dans la base par contre impossible de les afficher, voici mon code pour l'affichage:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?php
if(isset($_GET['id_photo'])) {
$connexion = mysql_connect("localhost", "stagiaire", "stagiaire") or die (mysql_error());
$database = mysql_select_db("stagiaire2")or die (mysql_error());
$apercu = mysql_query("SELECT id_photo, type, photo FROM ploopi_mod_annuaire_photo WHERE id_photo =1");
$reponse = mysql_fetch_assoc($apercu);
if(!$reponse[id_photo]) {
echo 'L image n existe pas !';
} else {
header ("Content-type: ".$reponse[type]);
echo $reponse[photo];
}
} else {
echo 'Vous n avez pas sélectionné d image !';
}
?> |
dans ma requête je l'oblige a chercher la photo stocké a l'id 1, pour tester. Et malgré cela il me resoort a chaque fois que je n'ai aps d'image sélectionné.(le dernière echo)
j'utilise des lien dans un premier temps pour visualiser les photos :
Code:
1 2 3 4 5 6 7 8
| <?php
$affichage = mysql_query("SELECT id_photo, nom FROM ploopi_mod_annuaire_photo") or die (mysql_error ());
while($result = mysql_fetch_array($affichage)) {
echo '<a href="affiche.php?id='.$result[id_photo].'">'.$result[nom].'</a>';
}
?> |
Et comme dit précédement les liens me renvoie a chaque fois vers le message :"Vous n avez pas sélectionné d image !".
Donc si une personne aurais la solution.
Merci.