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 :

Variable invisible pour requête SQL !?


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut Variable invisible pour requête SQL !?
    Bonjour,
    J'ai un problème bien curieux; je récupére des variables de sessions qui existent bien, puisque elles s'affichent avec un echo() mais par contre lorsque je les insére dans une requête sql, elles sont nulles !
    Au début de mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start();
    $identifiant = $_SESSION['login'];
    et un peu plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = "UPDATE tbl_user SET Nom = '$identifiant' WHERE identifiant = 'azerty' LIMIT 1";
    La requête fonctionne mais le champ reste vide !
    A contrario si je déclare une variable bidon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start();
    $variablebidon = "Roger";
    Le champ est remplis
    C'est à n'y plus rien comprendre...

    D'avance merci pour votre aide

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    donne quoi ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    peut etre qu'entre temps ta session se termine. essai de voir si tes sessions n'ont pas une durée de vie

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Non pour la durée de vie de session c'est ok.
    Par contre un echo() me renvoie bien mes valeurs :
    UPDATE tbl_user SET Nom = 'Login' WHERE identifiant = 'azerty' LIMIT 1

    Je viens de remarquer un truc, si j'execute le script deux fois de suite, alors la variable est prise en compte !?
    Première éxécution : champ vide
    Deuxième exécution : champ remplis avec la valeur de $identifiant

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Points : 201
    Points
    201
    Par défaut
    D'après ton message initial, tout devrait marché si $identifiant est bien rempli.

    Fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $identifiant;
    Juste avant la requète pour vérifier que la varible est toujours pleine...

    Oups! tu as posté entre temps...

    Bon, c'est peut être un problème dans la BDD, tu as 2 fois la meme ligne, tu la remplie une fois, et, tu regarde la mauvaise...

    Retire le LIMIT 1 pour voir...

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si tu passes cette requête sous phpMyAdmin, est-ce que tu as le comportement attendu ?

    Sinon mon petit doigt me souffle que peut-être tu récupères les infos à afficher avant de modifier la base...

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Points : 201
    Points
    201
    Par défaut
    Mais pourtant, si il nous dit que ca requète est complète au moment de l'envoyer, ca devrait marcher!

    Et le reste du code, ca donne quoi?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    kalash_jako > avec ou sans LIMIT 1 ca ne change rien, idem dans la bdd je n'ai pas deux fois la même ligne.

    Mr N. > Heu je ne comprends pas bien ta remarque ? le script se déroule comme ça :
    - démarrage de la session
    - récupération de la variable
    - requête sql
    - echo
    C'est correct ?!

    Sous phpMyAdmin ca fonctionne du premier coup

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Merci de vous pencher sur mon problème, c'est cool
    Alors le code je l'ai simplifié au maximum pour trouver d'ou venait l'erreur :
    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
     
    <?php
    session_start();
    $identifiant = $_SESSION['login'];
    $variablebidon = "Roger";
    //require 'prive/verifconnexion.php';
    require_once('prive/db.inc.php');
    //
    ConnectdB();
            $req = "UPDATE tbl_user SET Nom = '$identifiant' WHERE identifiant = 'azerty'";
            $ret = mysql_query ($req) or die (mysql_error ());
            echo($req);
            return true;
            mysql_close();
    ?>

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Et alors ? Elle venait d'où ?

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Ha heu je croit que je me suis mal fait comprendre, j'ai simplifié le code au maximum pour isoler l'erreur mais je n'ai toujours pas trouvé pourquoi ca ne fonctionne pas !
    Petite précision je suis hébergé chez online, mais je ne pense pas que ca puisse venir de leur configuration, car j'ai d'autre parties de scripts utilisant les session qui fonctionnent parfaitement.

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Peux-tu tester 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
    session_start();
    $identifiant = $_SESSION['login'];
     
    require_once('prive/db.inc.php');
    ConnectdB();
     
    echo '<pre>';
     
    $sql = "SELECT Nom FROM tbl_user WHERE identifiant = 'azerty'";
    var_dump($sql);
    $req = mysql_query ($sql) or die (mysql_error ());
    var_dump(mysql_num_rows($req), mysql_fetch_assoc($req));
     
    $sql = "UPDATE tbl_user SET Nom = '$identifiant' WHERE identifiant = 'azerty'";
    var_dump($sql);
    $req = mysql_query ($req) or die (mysql_error ());
    var_dump(mysql_affected_rows($req));
     
    $sql = "SELECT Nom FROM tbl_user WHERE identifiant = 'azerty'";
    var_dump($sql);
    $req = mysql_query ($sql) or die (mysql_error ());
    var_dump(mysql_num_rows($req), mysql_fetch_assoc($req));
    ?>

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Je viens de tester et ca me renvoie ça :

    string(53) "SELECT Nom FROM tbl_user WHERE identifiant = 'azerty'"
    int(1)
    array(1) {
    ["Nom"]=>
    string(7) "1212121"
    }
    string(62) "UPDATE tbl_user SET Nom = 'Login' WHERE identifiant = 'azerty'"
    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 'Resource id #3' at line

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    En corrigeant la faute à la ligne 17, ça renvoie ça :

    string(53) "SELECT Nom FROM tbl_user WHERE identifiant = 'azerty'"
    int(1)
    array(1) {
    ["Nom"]=>
    string(0) ""
    }
    string(62) "UPDATE tbl_user SET Nom = 'Login' WHERE identifiant = 'azerty'"



    Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in upimage.php on line 48

    NULL
    string(53) "SELECT Nom FROM tbl_user WHERE identifiant = 'azerty'"
    int(1)
    array(1) {
    ["Nom"]=>
    string(5) "Login"
    }

  15. #15
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    fais voir le bout de code que tu as corrigé concernant l'update ?

    En tout cas ça marche bien l'update non ?
    "" => "Login" !

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    J'ai corrigé ça, à la troisième ligne :

    $sql = "UPDATE tbl_user SET Nom = '$identifiant' WHERE identifiant = 'azerty'";
    var_dump($sql);
    $req = mysql_query ($sql) or die (mysql_error ());
    var_dump(mysql_affected_rows($req));

    "mysql_query ($sql)" au lieu de "mysql_query ($req)"

    Pour l'update oui ça marche... mais seulement si je lance le script une deuxième fois ! je ne comprends pas on dirais que la variable de session n'est pas remplie alors que mes variables de sessions sont créées dans un autre script qui appelle celui là une fois qu'il a finis son execution, et donc qu'il a remplis toute les variables !!

  17. #17
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je ne comprends pas quel est ton problème. Malgré une erreur dans la dernière trace, on voit bien que Nom est passé de "" à "Login". Sans faire deux updates.

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Oui ça fonctionne effectivement mais parceque c'est le retour aprés l'avoir lancé une deuxième fois, la première fois l'update n'est pas effectuée.
    je ne peut pas avoir un retour de echo la première fois car c'est un swf qui appelle un php pour créer la session, une fois la session créée et les variables enregistrées dans une table sql le flash appelle un deuxième php (donc celui en cause) qui uploade une image directement dans la bdd depuis flash.
    J'ai fait des echo() à gogo php reçoit bien toutes les varaibles envoyés par flash, donc celui-ci est hors de cause, c'est bien au moment ou je veux modifier le contenu de la table (à savoir enregistrer l'image) que ca déconne.
    Ca déconne simplement car cette **** de variable de session est vide aux yeux de la bdd. Heu j'éspére avoir été clair ?

  19. #19
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    AMHA tu t'emmeles les pinceaux plus qu'autres choses.
    Flash n'a rien a voir dans le developpement php, c'est un client comme un autre Donc oublie flash, utilise un bon vieux navigateur pour pouvoir appeler tes pages et voir si le résultat obtenus est conforme à tes attentes (comprendre "conforme aux attentes de ton anim flash").
    Ensuite une bdd n'a aucune notion de la session en cours. Donc soit tu gères mal ta session, soit tu fais mal ta requête. On a vu que pour la requête c'était bon. Donc le problème se situe plus sur ta gestion de la session.

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Ok ouais je vois ce que tu veux dire, mais là le problème est quand même cerné de toutes parts ?
    - php recois bien toutes les données
    - la requête sql est ok
    DONC le problème viendrais plus de la session...
    Pourtant comme dis la session est créée dans un script en amont :
    Premières lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    session_start();
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Cache-Control: post-check=0, pre-check=0",false); 
    header("Pragma: no-cache");
    //
    $lognew = $_POST['lognew'];
    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['login'] = $lognew;
    La session est créée correctement pourtant ?!

Discussions similaires

  1. [AC-2007] Récupération variable VBA pour requête SQL
    Par Axe_Débutant dans le forum Requêtes et SQL.
    Réponses: 20
    Dernier message: 20/10/2012, 09h01
  2. Réponses: 2
    Dernier message: 12/10/2012, 08h04
  3. Syntaxe pour requête SQL avec variables
    Par molibri dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2010, 14h50
  4. Récupération de variables de menus déroulants pour requète SQL
    Par Thibaut_Dupont dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/07/2006, 14h24
  5. [MySQL] Problème récupération variable pour requête SQL !!
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2006, 16h08

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