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 01/12/2006, 11h48   #1
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Par défaut [SQL] addslashes et foreach

Bonjour,

voici mon probleme

J'ai un script d'upload multiple d'image qui marche bien. dans le formulaire j'ai un champs description
Code :
<td><input name="desimg[]" size="30" /></td>
qui est une description de chaque image envoyer qui est inserer dans SQL

mais le probleme viens au moment ou l'on met un ' ... sa deconne ! alors je voulais traiter la chaine mais j'ai du mal car avec le foreach sa ne fonctionne pas ...

voici le code

Code :
1
2
3
4
5
6
7
8
9
10
11
foreach ($_FILES['imgfile']['tmp_name'] as $key => $value) {
 
$file_tmp=$value;
 
$file_type = $_FILES['imgfile']['type'][$key];
$file_name = $_FILES['imgfile']['name'][$key];
$file_size = $_FILES['imgfile']['size'][$key];
 
$desimg = $_POST['desimg']; C'est ici que je voudrais mettre un addslashes() mais ceci ne fonctionne pas ... 
 
$sql  = mysql_query(" ********") or die( mysql_error());

J'ai tester
Code :
$desimg = addslashes($_POST['desimg']);
mais ca ne fonctionne pas

merci de votre aide
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 12h00   #2
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
fait :
Code :
1
2
3
4
 
echo $_POST['desimg'];
$desimg = addslashes($_POST['desimg']); 
echo $desimg;
et puis poste nous l'erreur SQL que tu as.

Voila !!
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 12h01   #3
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
bonjour,

j'avais exactement le meme problème et la seule solution que j'avais trouvé est de mettre magic_quotes_gpc à off dans le php.ini

d'ailleurs magic_quotes_gpc = off est quelque chose de conseillé si j'ai bien compris. mais par contre il faut appeller je ne sais pas quelle fonction pour se proteger du nom du fichier dans ton script.

on attendra les autres reponses pour savoir laquelle, mais en attendant tu peux deja essayé ce que je t'ai dis pour savoir si ca marche

Bon courage
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 12h10   #4
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Bojour,

J'ai fait ce que tu a demander

voici le resultat

et dans le champs description de sql j'ai une seule letre alors que j'ai mi du texte (avec ' pour tester)

ps : Des que l'enleve addslashes sans mettre de ' dans mon champs input sa marche tres bien, dans sql la descption est entiere.
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 12h23   #5
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
lol ... si tu as array, c'est que c'est un tableau

donc fait print_r($_POST['desimg']);
pour voir ce qui t'interesse dedans ...
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 12h26   #6
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Lol vi

sa se trouve dans une boucle
Code :
foreach ($_FILES['imgfile']['tmp_name'] as $key => $value) {
c'est bien sa le probleme ...
Je fait le print_r apres je vais a la soupe
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h35   #7
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Re bonjour

Voila le resultat de ce code

Code :
1
2
$desimg = addslashes($_POST['desimg']); 
print_r($_POST['desimg']);
resultat :
Code :
Array ( [0] => commentaire1 [1] => commantaire2 ) Array ( [0] => commentaire1 [1] => commantaire2 )
Alors je ne sais pas si on peu mettre un truc comme sa

$_FILES['imgfile']['tmp_name'] as $key as key1 => $value et rajouter $_POST[val] dedans ... avec le addslashes
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h43   #8
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Question surement un peu bete mais pourquoi ne fais tu pas :

Code :
1
2
3
 
$desimg = $_POST['desimg'];
$desimg = addslashes($desimg);
@+
cadou
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h44   #9
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
Citation:
Lol vi

sa se trouve dans une boucle
Code :

foreach ($_FILES['imgfile']['tmp_name'] as $key => $value) {
mais ca sert à rien de le mettre dans une boucle si tu n'appliques pas sur ce champs ce que tu appliques sur les autres, autrement dit : remplace
Code :
$desimg = addslashes($_POST['desimg']);
par
Code :
$desimg = addslashes($_POST['desimg'][$key]);
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h54   #10
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Code :
$desimg = addslashes($_POST['desimg'][$key]);
je pensai que sa marcherai mais non.

dans mon input je met un texte et quand je regarde j'ai que une seule lettre dans SQL dans la description de l'image .... :s sinon j'ai po d'autre erreur mais sa me tronque encore la chaine ....

en faite je sais pas mais est-ce possible de mettre $_POST et $_FILES dans le meme foreach ?
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 14h57   #11
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
tu sais quoi, donne moi le code de ton fichier où il y a les champs "input" comme ca je peux tester ici avant de poster le nouveau message
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 15h01   #12
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
voila le formulaire :


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
32
<form method="post" enctype="multipart/form-data" action="?direction=photo" >
 
Nom de album photo : <br>
<input  type="text" name="nom" size="30"><br>
Description : <br>
<textarea name="description" rows="5" cols="62"></textarea>
<table >
	<tr>
		<td><input type="file" name="imgfile[]" /></td>
		<td>Commentaire : </td>
		<td><input name="desimg[]" size="30" /></td>
	</tr>
	<tr>
		<td><input type="file" name="imgfile[]" /></td>
		<td>Commentaire : </td>
		<td><input name="desimg[]" size="30" /></td>
	</tr>
	<tr>
		<td><input type="file" name="imgfile[]" /></td>
		<td>Commentaire : </td>
		<td><input name="desimg[]" size="30" /></td>
	</tr>
	<tr>
		<td><input type="file" name="imgfile[]" /></td>
		<td>Commentaire : </td>
		<td><input name="desimg[]" size="30" /></td>
	</tr>
</table>
 
<input type="submit" class="bouton" value=" Envoyer " name="submit">
 
</form>
en faite je sais pas mais est-ce possible de mettre $_POST et $_FILES dans le meme foreach ?
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 15h21   #13
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
j'ai essayé ton code en faisant ca
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?
foreach ($_FILES['imgfile']['tmp_name'] as $key => $value)
{
	$file_tmp=$value;
	$file_type = $_FILES['imgfile']['type'][$key];
	$file_name = $_FILES['imgfile']['name'][$key];
	$file_size = $_FILES['imgfile']['size'][$key];
	$desimg = $_POST['desimg'][$key];

	echo("$file_type <--> $file_name <--> $file_size <--> $desimg<br>");
}
?>
et ca fonctionne tres bien, ca veut dire que j'ai pas de problème avec les apostrophes!! essaye de ton coté
Citation:
en faite je sais pas mais est-ce possible de mettre $_POST et $_FILES dans le meme foreach ?
mais dans quel cas de figure on peut avoir besoin d'un foreach sur $_POST?!
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 15h30   #14
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Je comprend pas

Je viens de faire comme toi

j'ai pas de message d'erreur a l'instertion dans SQL mais jai qu'un lettre dans la table :s

et quand j'enleve le [key] j'ai un message d'erreur ...

Code :
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'comment ' 1', section = 'album', nom_image ='jpg', id_auteur ='
Pour avoir ce message d'erreur j'ai mi dans le input des '
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 15h40   #15
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
voic une impression ecran de ce que j'ai dans SQL les lettre o, c , m devrai etre : com ' test

fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 15h40   #16
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
premierement tu ne peux pas et tu ne dois pas enlever [$key] car sinon tu vas te trouver avec un tableau et non pas une chaine de caractere.

deuxiement et si ca qui est important, le probleme chez toi ne se situe pas dans la recuperation d'une chaine avec des apostrophes par l'intermidiaire de $_FILE mais dans son insertion dans la BDD : ca veut dire qu'on est depuis quelques messages entrain de traiter un problème qui n'existe pas...!!

montre nous ta requete sql?
SegmentationFault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 15h56   #17
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
+1, il faut qu'on voit ta requete SQL formée !!
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 16h55   #18
Candidat au titre de Membre du Club
 
Inscription : août 2006
Messages : 144
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 144
Points : 11
Points : 11
Re bonjour,

Voici ma requete

Code :
$sql  = mysql_query(" INSERT INTO image SET description = '$desimg[$key]', section = '$section', nom_image ='$file_ext', id_auteur ='$id_auteur', rubrique = '$rubrique' ") or die( mysql_error());
fabien14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 18h02   #19
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
un coup tu fais $desimg = $_POST['desimg'][$key]; et un autre $desimg[$key]

NON !!

Si tu la stockes une fois dans $desimg, tu mets $desimg dans ta requete, oki ?

ou alors tu fais ton addslashes sur $desimg[$key] juste avant l'insertion dans la requete SQL.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 18h11   #20
Membre actif
 
Inscription : juillet 2003
Messages : 257
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 257
Points : 162
Points : 162
tu m'etonnes que ta requete ne fonctionne pas!! ou 'est ce que t'as trouvé ca : insert into XXX set! sans parler de toutes les apostrophes dans ta requete

Conseil ou plutot methode de travail : avant d'appeller mysql_query, fais tjs un echo de ta requete et essaye de l'executer à la main su la base de données (crois moi tu economiseras des heures à chercher les problèmes la où il y en a pas)

Bon courage
SegmentationFault 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 18h50.


 
 
 
 
Partenaires

Hébergement Web