A voir également:
- Image de blob
- Image iso - Guide
- Acronis true image - Télécharger - Sauvegarde
- Reduire taille image - Guide
- Légender une image - Guide
- Image gratuite - Guide
2 réponses
Bonjour,
Petite parenthèse au cas où :.. c'est une mauvaise pratique.
Il est préférable ( pour des raisons de place et de performance) de ne stocker en bdd que le chemin vers l'image.... et de mettre l'image simplement dans un dossier de son site web.
Quoi qu'il en soit,
pour afficher une image stockée en blob ( je suis d'ailleurs étonné que tu n'aies pas trouvé la réponse sur le net .. tellement iil est facile de l'avoir ...) il suffit d'utiliser la syntaxe
En effet, pour faire des requêtes dans une bdd, il faut désormais PDO ou mysqli
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Mais au final, ta question concerne l'affichage de l'image .... ou le fait de réaliser des requêtes dans ta bdd ?
Personnellement, j'ai une grosse préférence pour PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
des images se trouvant dans ma base de donnée au format blob
Petite parenthèse au cas où :.. c'est une mauvaise pratique.
Il est préférable ( pour des raisons de place et de performance) de ne stocker en bdd que le chemin vers l'image.... et de mettre l'image simplement dans un dossier de son site web.
Quoi qu'il en soit,
pour afficher une image stockée en blob ( je suis d'ailleurs étonné que tu n'aies pas trouvé la réponse sur le net .. tellement iil est facile de l'avoir ...) il suffit d'utiliser la syntaxe
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';
mysql_query() qui ne semble plus marcher
En effet, pour faire des requêtes dans une bdd, il faut désormais PDO ou mysqli
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Mais au final, ta question concerne l'affichage de l'image .... ou le fait de réaliser des requêtes dans ta bdd ?
Personnellement, j'ai une grosse préférence pour PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Dis moi ce que ça donne
PS: J'ai corrigé ton message pour préciser le langage dans les balises de code.
Merci d'y penser à l'avenir
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
<?php //Affichage des erreurs php error_reporting(E_ALL | E_WARNING | E_NOTICE); ini_set('display_errors', TRUE); // connexion à la bdd ( moi je le mettrai dans un fichier à part que j'incluerai lorsque j'en ai besoin... try{ $bdd =new PDO('mysql:host=localhost;dbname=bdp;charset=utf8', 'root', 'root'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //récupération PROPRE des variables AVANT de les utiliser $id = isset($_GET["id"]) ? trim($_GET["id"]) : NULL; if ($id) { // préparation de la requête $sql = 'SELECT img_id, img_nom, img_type, img_blob FROM images WHERE img_id = :id '; $datas = array(':id' => $id); try{ $result = $bdd->prepare($sql); $result->execute($datas); $terme_trouve = $result->fetch(); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); if(!empty($terme_trouve)){ echo '<img src="data:image/jpeg;base64,'.base64_encode( $terme_trouve['img_blob'] ).'"/>'; //pour débuguer au cas où ça ne marche toujours pas : echo "<pre>"; print_r($terme_trouve); echo "</pre>"; // fin du debug. }else{ echo "Aucun résultat trouvé pour l'id : " . $id; } } ?>
PS: J'ai corrigé ton message pour préciser le langage dans les balises de code.
Merci d'y penser à l'avenir
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
J'ai éteint mon ordi mais je m'étais documenté sur internet et un site mavais conseiller de construire ma base ainsi :

Et je ne sais plus si je fais déjà un base_64 encode, je cous donnerai mes autres script demain...
L'image actuelle est une image jpg toute simple de très petite taille.
Encore merci pour votre patience...
Bonne nuit

Et je ne sais plus si je fais déjà un base_64 encode, je cous donnerai mes autres script demain...
L'image actuelle est une image jpg toute simple de très petite taille.
Encore merci pour votre patience...
Bonne nuit
Bonjour,
Voici mes autres script :
- Voici Index.php :
- et voici transfert.php :
Voici mes autres script :
- Voici Index.php :
<html> <head> <title>Index</title> </head> <body> <?php include ("transfert.php"); if ( isset($_FILES['fic']) ) { transfert(); } ?> <h3>Envoi image :</h3> <form enctype="multipart/form-data" action="#" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="250000" /> <input type="file" name="fic" size=50 /> <input type="submit" value="Envoyer" /> </form> </body> </html>
- et voici transfert.php :
<?php function transfert(){ $ret = false; $img_blob = ''; $img_taille = 0; $img_type = ''; $img_nom = ''; $taille_max = 250000; $ret = is_uploaded_file($_FILES['fic']['tmp_name']); if (!$ret) { echo "Problème de transfert"; return false; } else { // Le fichier a bien été reçu $img_taille = $_FILES['fic']['size']; if ($img_taille > $taille_max) { echo "Trop gros !"; return false; } $img_type = $_FILES['fic']['type']; $img_nom = $_FILES['fic']['name']; $img_desc = $_FILES['fic']['name']; try{ $bdd =new PDO('mysql:host=localhost;dbname=bdp;charset=utf8', 'root', 'root'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } $img_blob = file_get_contents ($_FILES['fic']['tmp_name']); $req = $bdd->prepare('INSERT INTO images(img_nom, img_taille, img_type, img_desc, img_blob) VALUES(:img_nom, :img_taille, :img_type, :img_desc, :img_blob)'); $req->execute(array( 'img_nom' => $img_nom, 'img_taille' => $img_taille, 'img_type' => $img_type, 'img_desc' => $img_desc, 'img_blob' => addslashes($img_blob))); return true; } } ?>
Merci beaucoup pour votre réponse, j'essaierai et reviendrai ici.
Oui j'ai cru comprendre que ce n'était pas une bonne pratique mais je ne vois pas comment faire d'autre pour récupérer les images que déposeront mes utilisateurs sur mon site... si vous avez des solutions pas trop compliqué je suis preneur :))
Encore merci, bonne soirée ????
Je n'obtiens pas de message d'erreur mais mon image ne s'affiche pas...Quant à votre propositions de mettre les images dans un répertoire, pourquoi pas mais comment dois-je m'y prendre ?