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

Langage PHP Discussion :

Utilisation d'un tableau 2 dimensions dans une requête Mysql


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Utilisation d'un tableau 2 dimensions dans une requête Mysql
    Bonjour tt le monde,

    Alors voila ma requête Mysql placé dans mon code PHP dans une loop for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("INSERT INTO reponses (ordre, numq, nums, txtReponse)
    VALUES ('$Compteur', '$_SESSION[numeroqu]', '$_SESSION[numerodes]', '$_POST[repquest][$Compteur]')");
    Mon problème se situe au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '$_POST[repquest][$Compteur]'
    car au lieu de me donner la valeur se trouvant dans l'array repquest (repquest se trouvant dans le tableau global POST) il me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array[0], Array[1], Array[2]...
    J'imagine que c'est une histoire d'apostrophe mal placé, si quelqu'un à une idée.
    En attendant j'utilise extract mais j'aimerais bien savoir ou je me trompe.

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est pas
    mais

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Parse error
    Merci pour ta réponse malheureusement quand j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VALUES ('$Compteur', '$_SESSION[numeroqu]', '$_SESSION[numerodes]', '$_POST['repquest'][$Compteur]')");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VALUES ('$Compteur', '$_SESSION[numeroqu]', '$_SESSION[numerodes]', $_POST['repquest'][$Compteur])");
    On me donne:
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\...

  4. #4
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Et comme ca ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VALUES ('.$Compteur.' .... )

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai seulement un problème avec la dernière valeur, le reste marche bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ..., '$_POST[repquest][$Compteur]')");
    En attendant de trouver une solution j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    extract($_POST);
    ..., '$repquest[$Compteur]')");
    et la ca marche j'ai la valeur attendu.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est normale c'est a toi d'échappé tes valeurs ou de bien gérer t'as concaténation

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Complètement d'accord et dans mon cas je fait ca comment ?

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par KKNDestroy Voir le message
    Complètement d'accord et dans mon cas je fait ca comment ?

    deja exporter ta requête dans un variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "SELECT blabla";
    mysql_query($sql);
    il suffis de faire un echo $sql pour voir comment est ta requete

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci du conseil ca rend le code un peu plus lisible.

    Par contre toujours pas trouvé comment faire sortir la valeur directement dans la requête Mysql, je me retrouve toujours avec [0],[1]...

    Donc je vais simplement l'assigner à une variable avant la requête Mysql et la pas de problème.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    fait un var_dump($_POST);

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    résultat de var_dump pour $_POST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...["repquest"]=>  array(5) { [0]=>  string(3) "123" [1]=>  string(3) "456" [2]=>  string(3) "789" [3]=>  string(3) "123" [4]=>  string(3) "456" }...
    J'avais déja utilisé print_r pour vérifier que le tableau n'avait pas de problème et je ne pense pas que c'est à ce niveau.

    D'ailleurs en assignant avant ca marche très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $resrepquest = $_POST['repquest'][$Compteur];
    $sql = "INSERT INTO ..., txtReponse) VALUES (..., '$resrepquest')";
    Je pense que c'est vraiment l'utilisation du tableau 2 dimension directement à l'interieur de la requête qui pose problème. d'ailleurs je n'ai pas trouvé d'autres exemples similaires en ligne...

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    que rend $resrepquest, $Compteur et $sql ?

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Quand j'utilise avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resrepquest = $_POST['repquest'][$Compteur];
    La valeur dans le tableau repquest correspondant à l'index $Compteur sors correctement et est assigné à la variable $resrepquest que j'utilise ensuite dans la requête MySQL et la no problem.

    par contre si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['repquest'][$Compteur]
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '$_POST[repquest][$Compteur]'
    directement dans la requête MySQL

    echo $sql me donne Array[0], Array[1]... ou [0],[1]...

    $Compteur étant le compteur pour une loop FOR de 0 à 5

  14. #14
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Pour utiliser un tableau, un Objet, etc ... directement dans une requête faut concaténer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "INSERT INTO ..., txtReponse) VALUES (..., '".$_POST['repquest'][$Compteur]."')";
    Mais utiliser directement des données extérieur comme GET, POST, sans vérification, sans précaution c'est toujours prendre un risque.

    Il faut au minimum utiliser mysql_real_escape_string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "INSERT INTO ..., txtReponse) VALUES (..., '".mysql_real_escape_string($_POST['repquest'][$Compteur])."')";

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour la solution :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/08/2010, 08h27
  2. [XL-2003] vba: Copier un tableau 1 dimension dans une feuille
    Par Gotita dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/09/2009, 18h17
  3. Comment passer un tableau à deux dimensions dans une fonction
    Par Niko_de_bordo dans le forum Débuter
    Réponses: 2
    Dernier message: 02/07/2009, 15h15
  4. Passage de tableau à deux dimensions dans une session
    Par keumlebarbare dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 28/11/2006, 18h42
  5. afficher un tableau 2 dimensions dans une fenetre
    Par igor24 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 29/04/2006, 13h50

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