addslashes() : Erreur byzarre !

Fab14
Invité n'ayant pas de compte PHPfrance

27 nov. 2006, 22:45

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

Mammouth du PHP | 19672 Messages

27 nov. 2006, 22:57

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à.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

27 nov. 2006, 23:33

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

28 nov. 2006, 08:36

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

Code : Tout sélectionner

foreach ($_FILES['imgfile']['tmp_name'] as $key => $value) {

Mammouth du PHP | 19672 Messages

28 nov. 2006, 08:38

Comment est structuré ton formulaire ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 nov. 2006, 11:39

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 ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

28 nov. 2006, 21:14

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 nov. 2006, 13:38

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
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

29 nov. 2006, 19:08

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 21:37

Si qlq peu donnez un coup de main Car c'est assez chiant avec les ' !

ViPHP
ViPHP | 1961 Messages

30 nov. 2006, 21:59

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
}
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 23:02

ben je sais bien, mais la soluation ne marche pas ...

Dans ma table sql j'ai que une lettre de description.

ViPHP
ViPHP | 1961 Messages

30 nov. 2006, 23:12

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 ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein