PHP IMAGE BLOB MYSQL

anwaarber Messages postés 10 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 9 octobre 2005 - 24 avril 2005 à 01:12
rexavry Messages postés 2 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 30 septembre 2009 - 30 sept. 2009 à 13:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30945-php-image-blob-mysql

rexavry Messages postés 2 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 30 septembre 2009
30 sept. 2009 à 13:02
slt altavista je viens d'executer ton code sur mon projet pour afficher une image stocker
dans la base de donnée dont le type de champ est blob
mrc si tu peux le corrigé
cs_Astalavista Messages postés 192 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 3 février 2010
29 mai 2008 à 17:25
Dans le principe, pour l'afficher directement, il suffit de fair le bonne header avec le type image et afficher :
header("Content-type: image/jpeg");
$connexion=mysql_connect("localhost","","");
mysql_select_db("db",$connexion);
$requete="select data_img from test where num_img=1";
$resultat=mysql_query($requete,$connexion);
mysql_close($connexion);
echo mysql_result($resultat, 0);
die(0);
kiki9741 Messages postés 9 Date d'inscription lundi 10 juillet 2006 Statut Membre Dernière intervention 4 juillet 2007
29 févr. 2008 à 14:58
Ne pas oublier la balise alt="" conformément au W3C
mehdi7604 Messages postés 118 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 6 mars 2015
10 sept. 2007 à 15:54
Vous copiez tous le meme code, pas de nouveau , je cherche à afficher l'mage directement sans créer de fichier et sans utiliser herader(...) , qqun à une idée?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 mai 2007 à 08:36
abdelkarimci, apprend le php avant de dire des sottises... pour qqn qui laisse ses fichiers accessibles a tous, alors la bdd n'est pas forcement la meilleur solution, ca fait des pertes de performances, et n'apporte que des stats precises sur les visites, et cote securite, ca facilite les injections sql alors que si l'image s'etait trouvee distante, ca aurait fait une requette de moins donc une faille de moins... voila donc deux possibilites, et pas une seule... et voila un cas ou l'autre possibilite est plus securisee que celle presentee ici...

l'avantage, c'est plutot cote clusters et cote sauvegardes...
abdelkarimci Messages postés 1 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 24 mai 2007
24 mai 2007 à 07:53
C'est excelent 10/10
Pour quelq'un qui stocke les photos dans la base de données c'est la meilleure solution
plutôt c'est la seule
les photos (images) ou tout autre type de fichier sont plus sécurisés dans la base que en tant que fichier dans un répertoire
la recherche et le classement sont tout à fait simple et fiable
la deuxième partie et bien plus utile que la première
Dans mon cas, une appli VB stocke les fichier dans la base MySQL et le site web permet d'afficher les images.

Merci beaucoup pour cette source très utile
BlastMan Messages postés 1 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 26 mars 2007
26 mars 2007 à 16:57
Je trouve ce code absolument désastreux à exécuter sur un serveur, surtout si il a un nombre de clients simultanés important.
En effet, quand un client demande à voir une image stockée dans la base, celle-ci est écrite sur sur le disque puis envoyée au client, elle fait donc déjà trois requêtes (en extrapolant) d'accès disque : une sur le SGBDR (MySQL par ex), une autre pour écrire le fichier et une troisième pour le lire.

Quant à faire un fichier temporaire qui ne l'est pas réellement comme l'a dit Vinyjones, ça pose des problèmes d'exclusion mutuelle des clients qui lisent le même NOM de fichier mais pas forcément le même contenu.

La solution est de lire dans la base comme sur le tuto, de faire un
echo $tableau;
en n'oubliant pas de mettre avant un header("Content-type: image/jpeg");

et tout marche ;)
vinyjones Messages postés 3 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 4 mai 2008
2 mars 2007 à 19:17
Bonjour,
La première partie rien à redire.

Par contre, je ne vois pas l'intérêt de la seconde:
Puisque tu écris l'image sur le serveur.
Donc si un client A requière une page qui appelle ton script pour une image(1)
il reçoit dans le code html
puis il va télécharge l'image avec ce lien
sauf qu'entre temps un client B a fait une requête qui appelle ton script pour une image (2)

conséquence: les deux clients téléchargent l'image(2) (dommage pour A)
On pourrait donne un nom pour chaque image mais quel est l'intérêt de réécrire le ficher image depuis la base de données à chaque requête?
Alors autant ne référencer dans la base que les liens vers les images et les mettre sur le serveur

Avec un serveur Web vos scriptes peuvent être appelés à tout moment et simultanément pensez-y.
lolobedo Messages postés 1 Date d'inscription lundi 27 novembre 2000 Statut Membre Dernière intervention 29 novembre 2005
29 nov. 2005 à 01:06
T'as pas honte à la fin d'écrire "Bonne chanse", internet et l'informatique ne signent pas la fin du francais correct SVP
anwaarber Messages postés 10 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 9 octobre 2005
25 avril 2005 à 22:05
salut a vous tous.
g bien aimer vos suggestion é voila g tou rectifier é g mm coriger le code d'affichage é ca marche tros bien. mnt je v faire une boucle pour afficher un ensemble de photo puis de lé lire aprés c cool de rechercher une information qui nous tracasse mais c plus cool si on pose aussi ce kon a trouvé.
merci pour tous ceux qui pense de la mm façons :).
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2005 à 11:27
Hello,

et il faut aussi preciser que cette methode, mettre une image dans un champ de type blob dans une base, est a n'utiliser que si vraiment on a une bonne raison de proceder ainsi.
C'est tres gourmand...trop!
La meilleure methode est toujours d'enregistrer les images sur le serveur, et de ne stocker que les url pointant vers ces images.
Mingain Messages postés 44 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 février 2006
24 avril 2005 à 18:01
Voici le lien vers une étude sur la rapidité/optimisation du code PHP :

http://www.vulgarisation-informatique.com/optimiser-php.php

ça peut servir sur de trés gros sites et je trouve ça super !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 avril 2005 à 15:32
normal qu'il ne te l'afiche pas...

faut que tu enregistre ta variable dans un fichier et que tu mette :
touch($filename);
$f=fopen($filename, 'w');
fputs($f,$row['data_img']);
fclose($f);
echo '';

ou alors tu mets une entête à ton fichier et tu vire tout le html qu'il y a avant...


les manipulations d'images peuvent êtres très longues, alors utilise les ' à la place des "...

utlises aussi les <?php à la place des <?
Mingain Messages postés 44 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 février 2006
24 avril 2005 à 14:45
Pas mal du tout sauf que heuu ... T'execute pas $result ^^

fais un :

if($result){
echo"Requete effectuée";
}
else echo mysql_error();

Je me trompe peut-être :-/ Sinon, merci bien pour ce bout de code que je vais tenter d'adapter à mon site !
samueldr Messages postés 121 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 3 juillet 2005
24 avril 2005 à 06:49
J'ai une solution à ton problème...

j'utilise cette méthode depuis un petit bout...
bien sûr, ce n'est que la base, à toi d'ajouter le code d'upload des images !
http://www.spoono.com/php/tutorials/tutorial.php?id=42
(bien sûr, il faut être à l'aise avec l'anglais...)
(ce site contient bien d'autre tutoriels, pas juste en PHP, allez voir !!!)
En espèrant avoir pu t'aider
SamuelDr
anwaarber Messages postés 10 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 9 octobre 2005
24 avril 2005 à 01:12
re,
apres la verification de mon code il ny a que la partie d'ajout dans la DB qui marche sinon pour l'affichage je vous di pas!!!!!!!!!
il n y a que des chifres et des numero non significatifs.
mais avec MySQL front je peux voir la photo introduite ou est le probleme je c pas a vous de me dir ce qu'il faut faire ok. merci a vous.
Rejoignez-nous