Insérer image dans une base de données mysql

Fermé
niam Messages postés 3 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 20 juillet 2006 - 15 juin 2006 à 17:08
 mido - 12 avril 2011 à 02:54
bonjour,

Voilà mon problème: j'ai besoin d'insérer une image dans une table mysql.je suis allé voir sur des forum et voilà ce que j'ai mis dans mon code à la suite de ça.

j'ai un fichier premiere_page_ajouter où j'ai :

<form method="post" action="premiere_page_ajouter_confirmer.php" enctype="multipart/form-data" onsubmit="return offre_ajouter(this)" >
...
<tr class="fiche_voyage_ligne">
<td class="fiche_voyage_rubrique">Image </td>
<td><input name="fichier_image" type="file" accept="image/jpeg"></td>
</tr>

et un autre fichier premiere_page_ajouter_confirmer où j'ai :

...
$str_image = addslashes(fread(fopen($_POST['fichier_image'],"r"),filesize($_POST['fichier_image'])));

$requete_une = "INSERT INTO `premieres_pages` ( `jour` , `mois` , `annee` , `titre`, `texte`, `image`) VALUES ('$_POST[jour]','$_POST[mois]','$_POST[annee]', '$_POST[titre]', '$str_description', '$str_image')";
if($resultat_un = mysql_query($requete_une))
print("<br /><br />Le nouveau voyage a bien été inséré. ");

après cela, toutes les informations sont enregistréees dans la base sauf l'image.(l'image est de type BLOB dans mysql et est à null par défaut). il est affiché 0 octets pour l'image.

merci d'avance pour vos réponses.
A voir également:

3 réponses

salut tout le monde
bah j essayé ce type de code
mais ca marchera pas toujours,
il ya des ""notices"" qui s'affiche dont le contexte est que le nom du champ file ou j'insére mon image n'est pas défini !!!

voici une parti de mon code :



//connection à la base
$cnx=MySQL_Connect("localhost","root","mysql") or die("erreur de connexion");
MySQL_select_db("agencevoyage",$cnx)or die ("base non trouvé");

// récolte des données du fichier 1:
$img_tmp = $_FILES["image"]["tmp_name"]; //ligne 115
$img_name = $_FILES["image"]["name"]; //ligne 116
$img_size = $_FILES["image"]["size"]; //ligne 117
$img_type = $_FILES["image"]["type"]; //ligne 118

echo"$img_name<br>";

// ajout dans la table:
$donnees = addslashes(fread(fopen($img_tmp, "r"),$img_size));


$result = mysql_query("INSERT INTO 'agencevoyage'.'photo1_desc'
('id_photo',
'donnees_binaires',
'nom_fichier',
'taille_fichier',
'type_fichier',
'Nom_hotel')
VALUES (NULL, '$donnees','$img_name','$img_size','$img_type','$nh')");
$id = mysql_insert_id();

//fermeture de la base
mysql_close();

=============
les notices affichée :

Notice: Undefined index: image in E:\...\desc_photo_ajout.php on line 115
Notice: Undefined index: image in E:\...\desc_photo_ajout.php on line 116
Notice: Undefined index: image in E:\...\desc_photo_ajout.php on line 117
Notice: Undefined index: image in E:\...\desc_photo_ajout.php on line 118

===================
help, j'en ai vraiment besoin !!!
3
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
15 juin 2006 à 17:35
Salut,

Le traitement de l'image posté ne me semble pas correct. Regardes du coté de
la doc PHP (en français) :
https://www.php.net/manual/fr/features.file-upload.php

A+, crabs
2
déterrage de sujet mort. m'enfin tant pis ça sort encore sur google... Dans un formulaire avec l'attribut "enctype=multipart/form-data" les input de types files sont à retrouver dans le tableau $_FILES[nom_du_champ] et non dans $_POST[nom_du_champ]

Chaque fichier est ensuite accédé par ce tableau

$_FILES[nom_du_champ][name] = nom du fichier avant upload
$_FILES[nom_du_champ][type] = type MIME
$_FILES[nom_du_champ][tmp_name] = le fichier sur le serveur avec son nom temporaire (sous unix/linux /tmp/bidulechoz ou %WINDIR%\temp\bidulechoz sous ms windows)
$_FILES[nom_du_champ][size] = la taille du fichier en octets.

Sinon oui RTFM me parait être une bonne réponse aussi...
2