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 :

probleme de syntaxe variable dans une requete sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Points : 101
    Points
    101
    Par défaut probleme de syntaxe variable dans une requete sql
    Salut,

    le probleme vient de la variable $arret qui ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $rien = "rien";
    $vente = "vente";
    $requete ="vente=:vente ";	
    $arret ="'vente' => $vente ";
    $login = $_SESSION['membre'];
     
    $req = $bdd->prepare('UPDATE membre_choix SET	'.$requete.' WHERE login=:$login');
    $req->execute(array($arret));
    voilà en gros la requête au complet, si je change $arret par 'vente' => $vente tout fonctionne impec.

    Je n'arrive pas à comprendre pourquoi ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 71
    Points : 70
    Points
    70
    Par défaut
    Bonsoir,

    Un petit echo $arret;die(); te donne quoi?

  3. #3
    Membre régulier Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par Lenézé Voir le message
    Bonsoir,

    Un petit echo $arret;die(); te donne quoi?
    Me donne la bonne syntaxe à savoir:
    'vente' => vente <-- plus de $

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ne peux pas créer un tableau PHP a partir d'une variable qui contient la syntaxe du code d'un tableau.
    array($arret) ça donne array(0=>"'vente' => $vente ")

    De plus soit tu passes ton login en paramètre =:login
    soit tu le mets en fixe =$login
    mais pas un mélange des deux.

  5. #5
    Membre régulier Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu ne peux pas créer un tableau PHP a partir d'une variable qui contient la syntaxe du code d'un tableau.
    array($arret) ça donne array(0=>"'vente' => $vente ")
    Salut sabotage,

    si je fait un echo sur mon array il me donne la bonne syntaxe et pas de tableau ?!

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand tu écris array($arret)
    ça donne array(0=>"'vente' => $vente ")
    pas array('vente' => $vente)

  7. #7
    Membre régulier Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Quand tu écris array($arret)
    ça donne array(0=>"'vente' => $vente ")
    pas array('vente' => $vente)
    echo ou print_r me donne bien 'vente' => vente ?!

    bref j'ai une 20° de champs checkbox à l'appuie à concaténer et aucune n'est obligatoire, c'est pour ça que j'utilise cette variable de cette manière, tu ferais comment toi ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    echo ou print_r me donne bien 'vente' => vente ?!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $vente = "vente";
    $arret ="'vente' => $vente ";
    print_r(array($arret));
    // Array ( [0] => 'vente' => vente )
    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
    $parametres = array('vente'=>'champ_vente', 'autrechose'=>'champ_autrechose');
    $sql_param ="";
    foreach ($parametres as $input=>$champsql) {
        if (isset($_POST[$champsql])) { // si la case est cochée 
            $sql_param .= $champsql . "= :" . $input; // on ajoute le paramètre
            $values[':' . $input] = $_POST[$champsql]; // et on stock la valeur
        } 
    }
     
    if ($sql_param != "") {
       $values[':login'] = $_SESSION['membre'];
       $sql = "UPDATE membre_choix SET " . $sql_param . " WHERE login=:login";
       $req = $bdd->prepare($sql);
       $req->execute($values);
    }
    Bon la c'est raccourci car je fais comme ci la valeur a mettre dans la base étant la value de la checkbox ; mais le principe est la.

  9. #9
    Membre régulier Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Points : 101
    Points
    101
    Par défaut
    Merci beaucoup sabotage,

    j'ai essayé ton code hier sans succès, puis j'ai revu les manières de faire (tuto...), puis j'ai refait des tests, café...puis finalement rien...

    Et puis ce matin j'ai repris ton code (les yeux ouverts ), et puis j'ai compris !!! ton code fonctionne très bien et je te remercie beaucoup d'avoir passé autant de temps à rédiger la réponse

    Encore une fois un grand

    Ps: je posterai le bout de code pour les autres d'ici quelques heures...

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

Discussions similaires

  1. Problème variable dans une requete SQL
    Par SimonAFDT dans le forum PL/SQL
    Réponses: 13
    Dernier message: 30/11/2009, 13h25
  2. Utililiser une variable dans une requete SQL
    Par le_misterioso dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/07/2009, 12h31
  3. BO 5.1 Champ variable dans une requete SQL
    Par Sergio63 dans le forum Deski
    Réponses: 1
    Dernier message: 21/05/2007, 12h45
  4. utilisation d'une variable dans une requete SQL
    Par ezneti dans le forum Visual C++
    Réponses: 1
    Dernier message: 30/04/2007, 10h47
  5. [PL/SQL]probleme affectation de variable dans une requete
    Par <% Bastien %> dans le forum SQL
    Réponses: 9
    Dernier message: 17/04/2007, 19h40

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