Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/07/2006, 14h52   #1
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
Par défaut [SQL] Problème avec file_get_contents

bonjour à tous , suite à un lien qui m'a été donné dans le forum pour mettre des photos dans la base de donnée, il m'apparait un problème pour les envoyer dans mon formulaire:
j ai fais dans le formulaire:
Code :
>nom du fichier d'image 2 :</td><td><input type="file" name="bienimage2" value="<? echo $bienimage2 ?>"  size="50" maxlength="50" />
qui est envoyé par post sans oublié le multipart...
et je recois dans une autre page :
Code :
1
2
$img1 = file_get_contents ($_FILES['bienimage']);
$img2 = file_get_contents ($_FILES['bienimage2']);
et après dans la requête j ai mis
Code :
insert into bienimage2.. value '$img2'
et j ai ce message Warning: file_get_contents() expects parameter 1 to be string, array given in c:\program files\easyphp1-8\www\immobilier\admin\ajouterbien.php on line 6
quel paramètre aurais je oublié ?
je ne suis pas obligé de lui créer un nom a l image???
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 16h42   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Le paramètre $_FILES est un tableau et donc tu passes un tableau à une fonction qui prend comme paramètre une chaine de caractère...Tu vois où est le problème ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 18h11   #3
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
je comprend le problème mais je vois pas comment je peux faire alors pour envoyer mes données car comme c est une photo;
le $_post ['bienimage'] ne marcherait pas ????
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 18h45   #4
Membre chevronné
 
Avatar de Elwyn
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 836
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2006
Messages : 836
Points : 712
Points : 712
T'aurais pas oublié le ; ?

Elwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 21h43   #5
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
merci de vos réponses , le fait de ne pas avoir de ; ne change rien a mon affichage même si j'aurai du le mettre!
en faite je me suis mal exprimé dés le début ,
si dans un formulaire j ai :
Code :
nom du fichier d'image 10 :><input type="file" name="bienimage10" value="<? echo $bienimage10; ?>"  size="50" maxlength="50" />
et que dans le formulaire qui traite les valeurs je fais:
Code :
1
2
3
$bienimage10=$_POST['bienimage10');
$img10 = file_get_contents ($_POST['bienimage10']);
$query="insert into bien (bienimage10) values ('$img10')"
cela marchera t il ?
j ai essayé mais ca me renvoye a une erreur concernant cette ligne
Code :
$bienimage10=$_POST['bienimage10');
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 22h12   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
alors on va reprendre à zero :
si tu fais un
Code :
print_r($_FILES['bienimage']);
Tu verras de quoi est composé ta variable et par conséquent tu verras que name contient juste le nom et que tmp_name l'url du fichier.

Donc ton file_get_contents doit prendre comme paramètre $_FILES['bienimage']['tmp_name']


Pour ton erreur, tu veux dire que tu la vois pas ???
Et comme ceci :
Code :
$bienimage10=$_POST['bienimage10');
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 23h50   #7
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
excuses moi , l'erreur que j'ai faite n'étais pas dans mon code mais en le retapant sur developpez.com j ai omis le ].
j ai donc fais
Code :
1
2
$bienimage = $_POST['bienimage'];
$img1 = file_get_contents ($_POST['bienimage']['tmp_name']);
et dans ma requete j ai fais:
Code :
$query = "insert into bien (bienimage) values ('$img1') ";
mais il me met erreur pour les lignes :
Code :
1
2
$bienimage = $_POST['bienimage'];
$img1 = file_get_contents ($_POST['bienimage']['tmp_name']);
ce morceau de code est valide ??
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 23h54   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Il faut regarder mon code...Il y a pas de POST
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 11h16   #9
Membre chevronné
 
Avatar de Elwyn
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 836
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2006
Messages : 836
Points : 712
Points : 712
Lol ca peur pas marcher, tu veux inserer dans une table mysql le contenu d'un file_get_contents(); d'une image ...

Tu veux faire quoi en fait ? Explique d'abord en tout lettre ce que tu veux faire et apres on traduit en PHP
Elwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 12h35   #10
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ouh la j'avais sauté cette information...Pour la récupération c'est bien $_FILES pour avoir le chemin complet de l'image pour ce qui est de l'insertion dans la bdd il me semble que l'on a ce qu'il faut dans les cours : Tutoriel PHP/MySQL : Stocker des images dans MySQL
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 21h59   #11
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
merci de votre patience!!!

en faites, je suis parti de se tutorial dès le début car au début j'avais mis un répertoire et dans ma base je stockai juste le chemin d'accès mais c est moins pratique donc je préfére la méthode avec le blob car je pourrai facilement supprimer les photos après!!!

en faites , j ai fais un formulaire d'insertion de biens immmobilier ou je permet à la personne de renseigner 10 champs images de type blob:
Code :
<td align="right">nom du fichier d'image 3 :</td><td><input type="file" name="bienimage3" value="<? echo $bienimage3 ;?>"  size="50" maxlength="50" />
j'envoye tout ( les images , les champs nbre de pièces...) dans une nouvelle page par post dans ajouterbien.php qui doit aller mettre mes 10 photos dans la base.
cependant je ne fais pas comme dans le tutorial: je veux juste stocker la photo et pouvoir l afficher, je lui donne pas de nom ... comme dans le tutorial .
ainsi normalement j ai juste un champ blob a envoyer pour chaque photo ?
du coup j ai utilisé la méthode du tutorial:
Code :
1
2
$bienimage = $_POST['bienimage'];
$img3 = file_get_contents ($_POST['bienimage3']['tmp_name']);
et j ai insert dans ma base la value $img3 pour le champ blob bienimage3.
le problème c est que ca marche pas !!!
il me reconnait pas ma valeur que je passe en post .
voyez vous mon problème ?
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 22h07   #12
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Salut,

Un petit effort de lecture t'éviterais de tourner en rond. Les fichiers reçus par un formulaire sont à manipuler avec la variable globale $_FILES et non pas $_POST.

bbye
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 23h25   #13
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
oups excuses !!!!
si j ai regardé le manuel mais je connaissais pas l'existence des variables $_FILES.
j'ai donc fais:
Code :
$bienimage = $_FILES['bienimage'];$img1 = file_get_contents ($_FILES['bienimage']['tmp_name']);
la requete passe ( pas de message d erreur) mais dans mon champ blob quand je vais sur mysql , il n y a rien
ai je encore fais une erreur ??
merci
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 23h29   #14
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Sa se passe ici pour ces infos la :
http://fr3.php.net/manual/fr/features.file-upload.php

Sinon tu as bien mis le enctype dans le form ?

Autrement essais avec un move_uploaded_files d'abord car ce n'est pas dit que tu ais les droits de lecture sur le dossier temporaire.
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 23h31   #15
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Citation:
Envoyé par Kerod
alors on va reprendre à zero :
si tu fais un
Code :
print_r($_FILES['bienimage']);
Tu verras de quoi est composé ta variable et par conséquent tu verras que name contient juste le nom et que tmp_name l'url du fichier.

Donc ton file_get_contents doit prendre comme paramètre $_FILES['bienimage']['tmp_name']
TOn problème de post t'avait été signalé plus haut , concernant le champ blob tu as bien suivi le tuto ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 12h17   #16
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
j ai mis pour mon form
Code :
echo "<form action='ajouterbien.php' enctype='multipart/form-data' method='post'>\n";
et dans ma base j ai pris un champ blob normal
il m affiche dans ma base [BLOB - 0 Octets].
cependant j ai pas fais tout comme dans le tutorial , j ai pas mis de nom , d extension au fichier.
on est pas obligé de spécifier ca ?
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 13h26   #17
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
en faite maintenant ca a l air de faire la requete mais j ai ca qui s affiche:
ÜWG®¨Ìôåïmïc‚[WšH¶y#<‘€¥¡@=`ŽKQ@)O*uäÛ©Ñ ÖRXåïí§¹¿•åi¬’“(R›¨¼V”ì4,ÍTäÚY>Ë|-¼Ù+Ë{¥ñÿ avec je sais pas combien de lignes, ca doit etre la photo converti en binaire.

et Erreur de syntaxe près de '' à la ligne 1.
ma ligne un n a pas d erreur, j ai mis :
Code :
1
2
<? 
$bienimage = $_FILES['bienimage'];
donc ca doit etre un autre problème.
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 13h28   #18
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
L'erreur doit se trouver plus bas dans ton code. Si le parser dit qu'il y 'à une erreur c'est qu'il y'en à effectivement une Le parser ne se trompe jamais.
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 13h36   #19
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Je viens de voir le tutoriel et c'est vraiment bien expliquer ...

Tu récuperes ton fichier de la manière suivante :
Code :
$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
Et tu l'ajoutes en bdd en faisant un addslashe avant

Si tu mets et surtout si tu fais le file_get_contents d'un array tu vas avoir des problème
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2006, 14h13   #20
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
merci !
mais je fais pas ca avec un tableau, j ai tout mes name de mes champs bien définis. j ai mis comme requête celle si ( juste pour essayer sur une image)
mais ca me renvoye tjs l erreur!
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
27
28
29
30
31
$query = "insert into bien (biennom,bientype,biendescription,bienprix,
addlashes bienimage,bienvideo,bienville,biendatecrea,bienreference,biensouscategorie,
bienimage2,bienimage3,bienimage4,bienimage5,bienimage6,bienimage7,
bienimage8,bienimage9,bienimage10,bienpiece,bienchambre,biensurfacehab,
biensurfacesejour,bienexposejour,bienjardin,bienetage,biennbetage,
biencodeetage,bienanneeconstr,biencuisine,bientypechauff,biennaturechauff,
biensurfcarre,bienwc,biensalledebain,biensalledeau,bienparkinginterieur,
bienparkingexterieur,bienbox,biencave,bienascenseur,bienbalcon,
bienterrasse,bienchargesmens,bientravaux,
bientaxehab,bientaxefonc,bieninfocompl,biendesign1,biendesign2,biendesign3,biendesign4,
biendesign5,biendesign6,biendesign7,
biendesign8,biendesign9,biendesign10,biendesign11,biendesign12,
biendesign13,biendesign14,biendesign15,bienm1,bienm2,bienm3,bienm4,bienm5,
bienm6,bienm7,bienm8,bienm9,
bienm10,bienm11,bienm12,bienm13,bienm14,bienm15,bientextepub) values ('$biennom','$categorie','$biendescription',
'$bienprix',"."'".addslashes($img1)."'',
'$vid1','$bienville','$biendatecrea','$bienreference','$biensouscategorie',
'$img2','$img3','$img4','$img5','$img6','$img7','$img8','$img9','$img10',
'$bienpiece','$bienchambre','$biensurfacehab','$biensurfacesejour',
'$bienexposejour','$bienjardin','$bienetage','$biennbetage','$biencodeetage',
'$bienanneeconstr','$biencuisine','$bientypechauff','$biennaturechauff',
'$biensurfcarre','$bienwc','$biensalledebain','$biensalledeau',
'$bienparkinginterieur','$bienparkingexterieur','$bienbox','$biencave',
'$bienascenseur','$bienbalcon','$bienterrasse','$bienchargesmens',
'$bientravaux','$bientaxehab','$bientaxefonc','$bieninfocompl','$biendesign1',
'$biendesign2','$biendesign3','$biendesign4','$biendesign5','$biendesign6',
'$biendesign7','$biendesign8','$biendesign9','$biendesign10','$biendesign11',
'$biendesign12','$biendesign13','$biendesign14','$biendesign15','$bienm1',
'$bienm2','$bienm3','$bienm4','$bienm5','$bienm6','$bienm7','$bienm8',
'$bienm9','$bienm10','$bienm11','$bienm12','$bienm13','$bienm14','$bienm15',
'$bientextepub')";
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h25.


 
 
 
 
Partenaires

Hébergement Web