logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
51 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 109 413 333

  • Nb. de membres 8 696
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Le coin des codeurs »» insertion image ds mysql

insertion image ds mysql#4160

16Contributeur(s)
AnonymedeveloppeursnipekaraparscedruskofaxelSilverXargosstivhawkloutPSTLralaryGawaxdonaldmarcTitosvigan
3 Modérateur(s)
developpeurjpbJireck
Anonyme Anonymeicon_post
J'aimerai bien insérer une image dans une base de donnée mysql, la récupérer et l'afficher. Si quelqu'un a une idée, je suis prenneur.
Merci d'avance.
bobkrown
Anonyme Anonymeicon_post
L'image doit toujours se trouver quelquepart à une adresse précise.
Ensuite tu dois posséder un champ image ds une table ou tu auras taper l'adresse en question.
Regarde ds le script user ou memberlist.
gaston33
Anonyme Anonymeicon_post
ben oui, je sais tout ça mais ça m'arrange pas de trop. Y a moyen de le faire, je l'ai vu avec des .swf mais il utilisait du xml, j'aimerai le faire en php pure.
merci tout de meme
snipe snipeicon_post
gaston tu vas bientot voir un nouveau moyen :)

moi la photo elle est dans un rep que tu peut acceder et pourtant tu la vera :)
karapars karaparsicon_post
pas de prob il y a moyen.

Attend je vais te chercher les ligne dans mon script et te mettre des explications.

J'arrive....
karapars karaparsicon_post
voila la reponse :
dabord exemple du form :
<form enctype=multipart/form-data action=../base/basephoto.php method=post>
<td>
<input type=hidden name=MAX_FILE_SIZE value=100000 />
photo 1 <input type=file name=photo1 />
</td>
<input type=submit NAME=Enregistrement>
</center>
</form>

Maintenant voici le code pour le php :


// définition de l'espace destiné à recevoir les fichiers
$repository="/home/photo/";
// si un fichier maphoto a bien été transféré
if (is_uploaded_file($_FILES["photo1"]["tmp_name"])) {
// recupération de l'extension du fichier
// autrement dit tout ce qu'il y a après le dernier point (inclus)
$photo1 = $_FILES["photo1"]["name"];
$extension = substr($photo1, strrpos($photo1, "."));
// Contrôle de l'extension du fichier
if (eregi("^ph", $extension)) {
die("Les fichiers en .ph* ne sont pas autorisés.");
}
$chemin1 = $id . "_photo1" . $extension;
rename($_FILES["photo1"]["tmp_name"], $repository.$chemin1);
}

if (is_uploaded_file($_FILES["photo2"]["tmp_name"])) {
// recupération de l'extension du fichier
// autrement dit tout ce qu'il y a après le dernier point (inclus)
$photo2 = $_FILES["photo2"]["name"];
$extension = substr($photo2, strrpos($photo2, "."));
// Contrôle de l'extension du fichier
if (eregi("^ph", $extension)) {
die("Les fichiers en .ph* ne sont pas autorisés.");
}
$chemin2 = $id . "_photo2" . $extension;
rename($_FILES["photo2"]["tmp_name"], $repository.$chemin2);
}
if (is_uploaded_file($_FILES["photo3"]["tmp_name"])) {
// recupération de l'extension du fichier
// autrement dit tout ce qu'il y a après le dernier point (inclus)
$photo3 = $_FILES["photo3"]["name"];
$extension = substr($photo3, strrpos($photo3, "."));
// Contrôle de l'extension du fichier
if (eregi("^ph", $extension)) {
die("Les fichiers en .ph* ne sont pas autorisés.");
}
$chemin3 =$id . "_photo3" . $extension;
rename($_FILES["photo3"]["tmp_name"], $repository.$chemin3);
}

// Exemple de requete de stockage en BD avec MySQL
// et une table qui aurait pu être créée par
// CREATE TABLE matable (login varchar(64), image varchar(64), icone varchar(64));
$db = mysql_connect("localhost","root","") or die("Connexion impossible");
mysql_select_db("voiture") or die("Connexion impossible2");
$id = $id;
$chemin1 = "$chemin1";
$chemin2 = "$chemin2";
$chemin3 = "$chemin3";
$sql = "UPDATE voiture SET photo1='$chemin1',photo2='$chemin2',photo3='$chemin3' WHERE ID=$id";
$RET = @mysql_query($sql,$db);
if ($RET<1){ print("Pas de mise à jour de l'enregistrement $id\n");}
else {
$resultat=mysql_query (" SELECT * FROM `TABLE'
WHERE id=$id");
$row = mysql_fetch_array($resultat);

$id = $row['id'];
echo "
<body bgcolor=336666>
<center>
<u> <font size=4 color=red>VOTRE ENREGISTREMENT A ETE CORRECTEMENT ENCODE
</u></font>

<center>
<br>
<font size=4 color=red>identifiant=$id
</font>
<br>
<table width=600>
<tr border=1 >
<td>
<table border=2 width=300>
<td>
<font color=FFFF99 size=2><b>photo</font></b>
<font color=white size2> $photo
</font>
</td>
</table>
</td>
"
;}
mysql_close($db);
?>

Voila tout le code php et le code mysql avec verification de la base de donne .
J'espere t'avoir bien aider.
Et tu peux meme ajouter et modifier des partie du scrip pour securise.
L.interdiction de certain type de fichier.
Au fait ce script ne permet que l'upload de fichier de moin de 2 MB sinon le script ommet une erreur du au fait que si je me trompe pas, c'est de paramettre dans la config de apache qui blocque la taille de l'upload.

Voila bon amusement.


KarAParS ThE OnE LovE Sensi

(DEV desole, je savais pas qu'il fallait desactiver le html.. moi aussi je suis novice..)
Anonyme Anonymeicon_post
merci du fond du coeur
bobkrown
karapars karaparsicon_post
De rien. C'etais avec plaisir.
J'espere que tu as reussi.
Euu fait attention a ne pas oublier de mettre dabord une requete de verification dans la base de donne pour ne pas uploader 2 fichier different mais sous le meme non ou alors ce que tu vas avoir comme prob c'est l'update de l'image ou changer l'image va etre difficile. Si 2 fichier du meme nom, tu aurra une erreur.
Des que je trouve le moyen de faire la suppresion de fichier par formulaire ou la reecriture... je le post.

KarAParS ThE OnE BY LovE
Anonyme Anonymeicon_post
Bonjour à tous

il y a un moyen beaucoup plus simple et plus rapide : c'est de stocker l'image directement dans la base MySQL, sans qu'elle soit dans un répertoire online. Il suffit pour cela d'utiliser un champ binaire.
Si le script intéresse quelqu'un, qu'il le dise, je le mettrais. Ca ne fait que quelques lignes ;)

@+ Ysandril.
developpeur developpeuricon_post
moi je veut bien voir !
Anonyme Anonymeicon_post
Citation : "22-04-2003 13:52, Anonyme a écrit
il y a un moyen beaucoup plus simple et plus rapide : c'est de stocker l'image directement dans la base MySQL, sans qu'elle soit dans un répertoire online. Il suffit pour cela d'utiliser un champ binaire.
Si le script intéresse quelqu'un, qu'il le dise, je le mettrais. Ca ne fait que quelques lignes ;)

@+ Ysandril."

Bonjour à tous,

Oui, moi je suis interressé.

Si tu peux me l'envoyer à etrolle@free.fr

Merci.

ET
Anonyme Anonymeicon_post
salut,

pas de problème je t'envoie le code.

@+
Ysandril
developpeur developpeuricon_post
pense à moi aussi SVP
Anonyme Anonymeicon_post
J'ai envoyé le script à cos adresses respectives. Si vous avez des questions particulières, n'hésitez pas à m'e faire part.

@+
Ysandril
Anonyme Anonymeicon_post
Citation : "22-04-2003 13:52, Anonyme a écrit :
Bonjour à tous

il y a un moyen beaucoup plus simple et plus rapide : c'est de stocker l'image directement dans la base MySQL, sans qu'elle soit dans un répertoire online. Il suffit pour cela d'utiliser un champ binaire.
Si le script intéresse quelqu'un, qu'il le dise, je le mettrais. Ca ne fait que quelques lignes ;)

@+ Ysandril."
----------

Ca m'interressait beaucoup. Si tu ne peux pas le mettre ici, saurais -tu me l'envoyer ? ceridwen@free.fr merci d'avance :)
cedruskof cedruskoficon_post
Ysandril: PLEASE I NEED YOUR SCRIPT

s'il vous plait aidez moi. ma vie en depend :)

je passe mon BTS dans une semaine et j'ai un projet à rendre avec une base de données de textures ( snif).
Si quelqu'un pourrait me mailer ce fameux petit script magique qui me sauverais la vie. je gallère comme un rat mort depuis 3 semaines.
Merci d'avance et merci NPDS :-o

Mail: cedruskof@hotmail.com
axel axelicon_post
dis dnc, c pas un peu tard, pour bosser tonBTS ? :-D ??
Anonyme Anonymeicon_post
Salut,

Bon devant à la demande générale :b voici le script :


page affiche_image.php qui contient le code de récupération de l'image dans
la base MySQL :

<?
session_start();
!!include!!("scripts/parametres.php"); // page qui contient les
infos de connexion à la base, au choix du développeur
$db = mysql_connect("$dbhost", "$dblogi", "$dbpass");
mysql_select_db("$dbbase",$db);

$row=mysql_query("select * from images where id=$id");
$type=mysql_result($row,0,"i_type");
$name=mysql_result($row,0,"i_name");
$size=mysql_result($row,0,"i_size");
$image=mysql_result($row,0,"image");
header("!!content-type:!! $type");
echo $image;
?>


ensuite, sur n'importe quelle page, il suffit de mettre ces 2 lignes pour
afficher l'image :

<?
$image_aff = <img src=\"affiche_image.php?id=".$id."\">"; // $id
est la variable qui contient l'identifiant de l'enregistrement dans lequel
se trouve l'image
echo $image_aff;
?>


script de création de la table MySQL : (bien-sur, il est possible d'intégrer
ces champs dans une autre table)

CREATE TABLE images (
id int(11) NOT NULL auto_increment,
image longblob NOT NULL,
i_name varchar(100) NOT NULL default '',
i_size varchar(50) NOT NULL default '',
i_type varchar(50) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;


et voila, c'est pas plus compliqué que ca ;-)

N'hésitez pas si vous avez des questions :-)

A bientot,
Ysandril

[ Message édité par : developpeur : 03-05-2003 22:36 ]
Anonyme Anonymeicon_post
arf, me suis fait avoir :#

la balise a été interprétée, donc il met la fameuse croix rouge
voici donc la ligne de code modifiée : (celle ou y'a la croix rouge)

$image_aff = <img src=\"affiche_image.php?id=".$id."\">";

voila, @+
Ysandril
developpeur developpeuricon_post
reste à faire le script qui charge l'image dans la base. L'utilisation d'un chmap blob est bien et permet de gérer pleins de truc en binaire.

Merci