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 :

[Système] variable qui ne passe pas !!!


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut [Système] variable qui ne passe pas !!!
    Bonjour,

    J'ai un problème lorsque je veut faire passer plusieurs variable avec l'opérateur AND.

    Ci-dessous mon code sans le AND et qui fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?
    @$variable = $_SESSION["variable"];
    @$variable2 = $_SESSION["variable2"]; 
    @$variable3 = $_SESSION["variable3"];
    @$variable4 = $_SESSION["variable4"]; 
    {
     
    $reponse = mysql_query ("SELECT * FROM bca WHERE $variable='$variable2' ORDER BY nom")or die (mysql_error());
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
    ET celui ci avec le AND mais qui me génere une "syntax error".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?
    @$variable = $_SESSION["variable"];
    @$variable2 = $_SESSION["variable2"]; 
    @$variable3 = $_SESSION["variable3"];
    @$variable4 = $_SESSION["variable4"]; 
    {
     
    $reponse = mysql_query ("SELECT * FROM bca WHERE $variable='$variable2' AND $variable3='$variable4'ORDER BY nom")or die (mysql_error());
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
    Je pense qu'il faut concaténer quelques part mais je n'arrive pas à trouver ou !
    Pourriez vous m'aider?
    Merci à tous.

  2. #2
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    slt , kel est le message d'erreur
    la succession d'évènement que nous subissons toute notre vie n'est qu'un phénomène de compensation dont la nature en est l'arbitre.[Inéluctabilité de la nature ] Polace

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    celle la :
    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 '=''ORDER BY nom' at line 1

  4. #4
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    $reponse = mysql_query ("SELECT * FROM bca WHERE $variable='".$variable2."' AND $variable3='".$variable4."'ORDER BY nom")or die (mysql_error());

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Peux-tu un echo de cette variable pour recuperer ta requete constuite pour voire la requete avec les valeurs.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Peut être une faute de recopie, mais met un espace avant le ORDER

  7. #7
    Expert éminent
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Points : 8 237
    Points
    8 237
    Par défaut
    salut,
    dans ton deuxième code, tu as un { en trop juste après $_SESSION["variable4"];

    pour voir si tu obtiens une commande sql valide, essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?
    @$variable = $_SESSION["variable"];
    @$variable2 = $_SESSION["variable2"];
    @$variable3 = $_SESSION["variable3"];
    @$variable4 = $_SESSION["variable4"];
     
    $sql = "SELECT * FROM bca WHERE ".$variable."='".$variable2."' AND ".$variable3."='".$variable4."' ORDER BY nom";
    echo "Commande SQL : $sql";
     
    $reponse = mysql_query ($sql)or die (mysql_error());
    while ($donnees = mysql_fetch_array($reponse) )
    {
    }
    ?>

  8. #8
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    commence d'abord par créer un espace avant ORDER BY et essaye de nouveau.
    la succession d'évènement que nous subissons toute notre vie n'est qu'un phénomène de compensation dont la nature en est l'arbitre.[Inéluctabilité de la nature ] Polace

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    <?
    @$variable = $_SESSION["variable"];
    @$variable2 = $_SESSION["variable2"];
    @$variable3 = $_SESSION["variable3"];
    @$variable4 = $_SESSION["variable4"];

    $sql = "SELECT * FROM bca WHERE ".$variable."='$variable2' AND ".$variable3."='$variable4' ORDER BY nom";
    echo "Commande SQL : $sql";

    $reponse = mysql_query ($sql)or die (mysql_error());
    while ($donnees = mysql_fetch_array($reponse) )
    {
    }
    ?>

    Je pense que dans ton 2ieme code ce son les noms de tes attributs en variavle qui merdaient d'ou les mettre en ".$variable." pour les autres tu peux laisser '$variable2' y a pas de problème avec ca.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Tous d'abord merci de vos réponse si rapide
    Mais ça ne fonctionne pas mieux...
    L'espace qui manque avant le ORDER BY est une erreur de copie, quant à l'accolade elle est fermée plus bas.

    Apparement le faite de concaténer n'arrange rien j(ai toujours la meme erreur de syntaxe. Parcontre si je remplace les variable par les vrais noms ça fonctionne.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Fait unn echo de ta requete une fois les variables remplacees par leur valeur et execute la directement sur Mysql pour voir l'erreur ...
    Et reviens nous donner le resultat de l'echo et de l'erreur MySql.

  12. #12
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    si ça marche lorsque tu mets les vrais noms , c'est que tu as probablement un numeric à la place d'un varchar ou inversement.
    donne nous les valeurs de tes variables
    la succession d'évènement que nous subissons toute notre vie n'est qu'un phénomène de compensation dont la nature en est l'arbitre.[Inéluctabilité de la nature ] Polace

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Voila la copie de l'erreur :
    Commande SQL : SELECT * FROM bca WHERE referent='-------Choisir un référent-------' AND ='' ORDER BY nomYou have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '='' ORDER BY nom' at line 1

    ça passe jusqu'au 2 éme groupe de variable ou la sa coince.
    Je viens de vérifier et il apparait que $variable3 et $variable4 ne passe pas alors que $variable5 lui passe bien....

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Donc tu as des variables qui sont vides !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM bca WHERE referent='-------Choisir un référent-------' AND ='' ORDER BY nom
    => AND =''
    => $variable3 Est vide
    => $variable4 Est vide !!!!

    Ta requete ne peux pas fonctionner !

  15. #15
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    de kel type sont $variable3 et $variable4
    la succession d'évènement que nous subissons toute notre vie n'est qu'un phénomène de compensation dont la nature en est l'arbitre.[Inéluctabilité de la nature ] Polace

  16. #16
    Membre actif Avatar de allyson
    Inscrit en
    Août 2003
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 261
    Points : 277
    Points
    277
    Par défaut
    salut;
    je te conseille de tester tes variables avant de les utiliser et ce avec isset()!
    sinon le @ avant tes variables te cache les erreurs...
    .: and Justice for all :.
    ------------------------------------------------------------
    Membre du jury de l'élection de Mister DVP.com
    les règles du forum
    de penser au tag

  17. #17
    Membre éprouvé Avatar de trattos
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 000
    Points : 1 080
    Points
    1 080
    Par défaut
    C'est toujours mieux sans le @ devant les variables!

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    .. avant de faire une affactation de varaible il faut verifier que les "$_SESSION["variableX"]; " ne sont pas vide et surtout qu'elles ne sont pas vides avec isset() ... Et il faut aussi que tu test toute tes variables pour rechercher du code interdit du genre
    "DELETE * FROM ..." dans une te tes variables... Tres dangereux de faire comme ceci ... il vaut mieux ecrire en dure 5 requetes differents ( pour le nom de champs pas pour le valeur !! ).. pour eviter des injections de code SQL.

  19. #19
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    dev_php_205 t'a raison mais tu devrais plutot 'illustrer d'un exple appliquer à cette doléance
    la succession d'évènement que nous subissons toute notre vie n'est qu'un phénomène de compensation dont la nature en est l'arbitre.[Inéluctabilité de la nature ] Polace

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Holala... pas le temps....
    Mais il y a sur ce forum deja plusieurs explications tres bien detaillees et avec les liens qui vont bien ...

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

Discussions similaires

  1. [PHP 5.0] Variable POST qui ne passe pas.
    Par KIK83 dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2012, 07h04
  2. Variable qui ne passe pas du html au js
    Par zoreol dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2010, 17h27
  3. Réponses: 2
    Dernier message: 06/09/2007, 09h23
  4. Réponses: 7
    Dernier message: 10/05/2007, 15h53
  5. [Tableaux] variable qui ne passe pas
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2005, 02h56

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