Page 1 sur 1
addslashes() : Erreur byzarre !
Posté : 27 nov. 2006, 22:45
par Fab14
Hello
Voila j'ai mon formulaire
foreach ($_FILES['imgfile']['tmp_name'] as $key => $value) {
$file_tmp=$value;//nom reel de l'image
$file_type = $_FILES['imgfile']['type'][$key];
$file_name = $_FILES['imgfile']['name'][$key];
$file_size = $_FILES['imgfile']['size'][$key];
$desimg = addslashes($_POST['desimg']);
//check file extension//////////////////////
$ext = strrchr($file_name,'.');
tou marche bien sauf la ligne
$desimg = addslashes($_POST['desimg']);
si je met
$desimg = $_POST['desimg'];
sa marche tres bien dans la boucle mes image on leur description mais dés que je met cela
$desimg = addslashes($_POST['desimg']);
pu rien ne marche ... et jai que une lettre dans la descrtiption .... qlq c'est pourquoi ?
merci
Posté : 27 nov. 2006, 22:57
par Cyrano
Une boucle sert éventuellement à traiter des tableaux indexés : de la manière dont tu as mis ça, ta variable $_POST['desimg'] est traitée à chaque tour, nombre de tour déterminé en fonction d'une autre variable qui est $_FILES : il y a un os dans le fromage là.
Posté : 27 nov. 2006, 23:33
par Invité
Humm
On ne peu pas faire sa en boucle ?
Comment peu t'on dire a la fonction addslash de fonctionner si on peu pas la mettre dans la boucle ?
Posté : 28 nov. 2006, 08:36
par Invité
J'ai trouver un code qui devrai pouvoir marcher cependant je n'arrive pas a l'adpater avec le foreach
foreach($_POST as $key => $value) {
$tablo[$key] = addslashes($value);
et celui ci
Posté : 28 nov. 2006, 08:38
par Cyrano
Comment est structuré ton formulaire ?
Posté : 28 nov. 2006, 11:39
par Ryle
C'est surtout le type et la valeur de $_POST['desimg'] qu'il faudrait connaître... A priori, en dehors du fait d'écraser inutilement ton $desimg par la même valeur à chaque itération, ça ne devrait pas poser de problème.
Au pire, tu peux sortir cette ligne là de ta boucle en la plaçant avant, le résultat sera le même

(en plus performant

)
Je serais curieux de savoir "ce qui ne marche pas". Tu as un message d'erreur ? ca serait bien de le partager

Tu n'as pas le résultat souhaité ? As-tu affiché tes variables $_POST['desimg'] et $desimg ? avec et sans le addslashes ?
Posté : 28 nov. 2006, 21:14
par Invité
Bonjour voici le formulaire
<form method="post" enctype="multipart/form-data" action="?direction=photo&ajout=ok" >
Nom de l'album photo :
<input type="text" name="nom" size="30">
Description : <br>
<textarea name="description" rows="5" cols="62"></textarea>
<br>
<input type="file" name="imgfile[]" />
<input name="desimg[]" size="30" />
<input type="file" name="imgfile[]" />
<input name="desimg[]" size="30" />
<input type="file" name="imgfile[]" />
<input name="desimg[]" size="30" />
<input type="file" name="imgfile[]" />
<input name="desimg[]" size="30" />
<p><input type="submit" class="bouton" value=" Envoyer " name="submit" onClick="if(verif(this.form)) { return true; } else { return false; }"></p>
</form>
En faite ceu qui ne marche pas c'est desimg[] avec le addslash car des qUE l'on met des ' sa ne marche plus ...
Merci de votre aide
Posté : 29 nov. 2006, 13:38
par Ryle
Ah bah oui, mais non !

(ouais je sais, ça veut rien dire)
addslashes est une fonction qui s'applique à une chaine. Dans ton cas $_POST['desimg'] est un tableau contenant une chaine pour chaque image. Il ne faut donc pas appeler la fonction sur le tableau, mais sur chaque chaine.
Par ailleurs tu dois avoir un soucis sur l'association de la description et le fichier.. il te faudrait un compteur pour suivre les fichiers et trouver la description corresondante
$cpt = 0; // compteur de position
foreach($_FILES...) {
...
$desimg = addslashes($_POST['desimg'][$cpt]); // la $cpt ième description pour le $cpt ième fichier
$cpt++; // incrémentation
}
Posté : 29 nov. 2006, 19:08
par Invité
Merci de ta réponse.
Mais j'avais vu ceci
Code : Tout sélectionner
reset($_POST);
$tablo = array();
foreach($_POST as $key => $value) {
$tablo[$key] = addslashes($value);
}
$message = ...
Il est pas possible de mettre tou sa dans le foreach ?
Posté : 30 nov. 2006, 21:37
par Invité
Si qlq peu donnez un coup de main Car c'est assez chiant avec les ' !
Posté : 30 nov. 2006, 21:59
par Ajoloca
Bonjour,
Je ne suis pas sur que ton "up" soit apprécié, déjà par son fait mais en plus si deux post plus haut on t'a donné la solution.
Ah bah oui, mais non !

(ouais je sais, ça veut rien dire)
addslashes est une fonction qui s'applique à une chaine. Dans ton cas $_POST['desimg'] est un tableau contenant une chaine pour chaque image. Il ne faut donc pas appeler la fonction sur le tableau, mais sur chaque chaine.
Par ailleurs tu dois avoir un soucis sur l'association de la description et le fichier.. il te faudrait un compteur pour suivre les fichiers et trouver la description corresondante
$cpt = 0; // compteur de position
foreach($_FILES...) {
...
$desimg = addslashes($_POST['desimg'][$cpt]); // la $cpt ième description pour le $cpt ième fichier
$cpt++; // incrémentation
}
Posté : 30 nov. 2006, 23:02
par Invité
ben je sais bien, mais la soluation ne marche pas ...
Dans ma table sql j'ai que une lettre de description.
Posté : 30 nov. 2006, 23:12
par Ajoloca
Comment veux-tu qu'on devine ce genre de choses ?
Dans ton post tu ne parles que de récupérer la valeur, pas comment tu vas l'utiliser.
ben je sais bien, mais la soluation ne marche pas ...
Là aussi, ça veux dire quoi, ça ne marche pas ?
Tu as des erreurs ?
Si oui, lequelles ?
Quel est ton code ?