IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] addslashes et foreach


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $desimg = addslashes($_POST['desimg']);
    mais ca ne fonctionne pas

    merci de votre aide

  2. #2
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 127
    Par défaut
    fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo $_POST['desimg'];
    $desimg = addslashes($_POST['desimg']); 
    echo $desimg;
    et puis poste nous l'erreur SQL que tu as.

    Voila !!

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    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

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    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.

  5. #5
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 127
    Par défaut
    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 ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Lol vi

    sa se trouve dans une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Re bonjour

    Voila le resultat de ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $desimg = addslashes($_POST['desimg']); 
    print_r($_POST['desimg']);
    resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Question surement un peu bete mais pourquoi ne fais tu pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $desimg = $_POST['desimg'];
    $desimg = addslashes($desimg);
    @+
    cadou

  9. #9
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $desimg = addslashes($_POST['desimg']);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $desimg = addslashes($_POST['desimg'][$key]);

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 ?

  11. #11
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    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

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    voila le formulaire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  13. #13
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    j'ai essayé ton code en faisant ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é
    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?!

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 '

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    voic une impression ecran de ce que j'ai dans SQL les lettre o, c , m devrai etre : com ' test


  16. #16
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    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?

  17. #17
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 127
    Par défaut
    +1, il faut qu'on voit ta requete SQL formée !!

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Par défaut
    Re bonjour,

    Voici ma requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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());

  19. #19
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 127
    Par défaut
    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.

  20. #20
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Insertion SQL avec boucles foreach
    Par vinceom92 dans le forum Langage
    Réponses: 44
    Dernier message: 12/07/2014, 19h02
  2. [Débutant] Probleme d'insertion sql dans loop FOREACH
    Par harghan dans le forum C#
    Réponses: 1
    Dernier message: 24/06/2014, 15h21
  3. [MySQL] Peu importe la taille du tableau, SQL est censé tout enregistrer(non pas foreach :D )
    Par Dermiste dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/04/2008, 01h47
  4. [PHP/SQL] foreach sur array multiples
    Par Flushovsky dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2006, 10h49
  5. Réponses: 10
    Dernier message: 25/10/2005, 16h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo