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 :

Membre connecte UPDATE de champ


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut Membre connecte UPDATE de champ
    Bonjour

    Je vous expose mon problème,

    J'essaie de mettre en place e nsystème qui permet de voir les membres en ligne sur le site, j'ai pensé du coup a créer une table dans la structure UTILISATEUR qui se nome CONNECTE en tiyint (1) Null et défaut 0.

    J'ai donc pensé quand un membre valide une connexion, la table CONNECTE reçoit 1
    Et quand il se deconnecte il reçoit 0

    Par contre au niveau de la page validationconnexion ( pour la requête quand il clique sur connexion ) je n'arrive pas a injecter le 1 dans la table CONNECTE

    voici mon script de connexion

    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
    $IdUser = $_POST['UserId'];
    $PassUser = $_POST['UserPass'];
    $query=$bdd->prepare('SELECT PASS, CODEVALIDATION, ID FROM UTILISATEUR WHERE PSEUDO = :PSEUDO');
    $query->bindValue(':PSEUDO',$IdUser, PDO::PARAM_STR);
    $query->execute();
    $data=$query->fetch();
    $PassRetour = $data['PASS'];
    $Code = $data['CODEVALIDATION'];
    if($PassRetour == md5($PassUser)){
        if($Code == 'OK'){
            $_SESSION['ID'] = $data['ID'];
            $_SESSION['PSEUDO'] = $IdUser;
            echo  'OK';
        }
        else{
            echo 'NONVALIDE';
        }
    }
    else{
        echo 'KO';
    }
    Donc j'ai essayé de rajouter cette ligne mais ne marche pas ... Je me connecte bien mais pas de 1 dans la table CONNECTE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql= "UPDATE UTILISATEUR SET CONNECTE = '1' WHERE PSEUDO='$_POST[UserId]'";

  2. #2
    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
    Déjà utilise une requête préparée et active les erreurs PDO.
    Ensuite comme tu ne nous montres pas ou va cette ligne, c'est difficile de te dire ce qui ne va pas.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Oui je suis désolé, voici le code complet de la page avec la ligne intégré :

    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
    <?php
    session_start();
    include 'ConnexionBDD.php';
    $IdUser = $_POST['UserId'];
    $PassUser = $_POST['UserPass'];
    $query=$bdd->prepare('SELECT PASS, CODEVALIDATION, CONNECTE, ID FROM UTILISATEUR WHERE PSEUDO = :PSEUDO');
    $query->bindValue(':PSEUDO',$IdUser, PDO::PARAM_STR);
    $query->execute();
    $data=$query->fetch();
    $sql = 'UPDATE FOND SET VALEUR = 1 WHERE PSEUDO="'.$_POST['UserId'].'"';
    $PassRetour = $data['PASS'];
    $Code = $data['CODEVALIDATION'];
    if($PassRetour == md5($PassUser)){
        if($Code == 'OK'){
            $_SESSION['ID'] = $data['ID'];
            $_SESSION['PSEUDO'] = $IdUser;
            echo 'OK';
        }
        else{
            echo 'NONVALIDE';
        }
    }
    else{
        echo 'KO';
    }
    ?>

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Salut,

    Tu n’exécutes pas ta requête $sql dans ton code après ta ligne tu dois rajouter du code genre ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql= "UPDATE UTILISATEUR SET CONNECTE = '1' WHERE PSEUDO='$_POST[UserId]'";
    $stmt = $conn->prepare($sql);
    $stmt->execute();

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse j'ai essayé avec l'execute mais impossible de se connecter maintenant sa actualise rien ...

    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
    <?php
    session_start();
    include 'ConnexionBDD.php';
    $IdUser = $_POST['UserId'];
    $PassUser = $_POST['UserPass'];
    $query=$bdd->prepare('SELECT PASS, CODEVALIDATION, CONNECTE, ID FROM UTILISATEUR WHERE PSEUDO = :PSEUDO');
    $query->bindValue(':PSEUDO',$IdUser, PDO::PARAM_STR);
    $query->execute();
    $data=$query->fetch();
    $sql = 'UPDATE FOND SET VALEUR = 1 WHERE PSEUDO="'.$_POST['UserId'].'"';
    $stmt = $conn->prepare($sql);
        $stmt->execute();
    $PassRetour = $data['PASS'];
    $Code = $data['CODEVALIDATION'];
    if($PassRetour == md5($PassUser)){
        if($Code == 'OK'){
            $_SESSION['ID'] = $data['ID'];
            $_SESSION['PSEUDO'] = $IdUser;
            echo 'OK';
        }
        else{
            echo 'NONVALIDE';
        }
    }
    else{
        echo 'KO';
    }
    ?>

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Enfaite c'est du PDO mysql j'ai essayé d'intégrer du mysql ca ne pouvait pas marcher d'après ce que j'ai pu lire on ne peut pas intégrer 2 API mysql différents...
    En essayant comme ceci ca n'a toujours pas marché, mais j'ai peut être fait une erreur du coup de l'aide serait la bienvenue


    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
    33
    34
    35
    36
    37
    38
    <?php
    session_start();
    include 'ConnexionBDD.php';
    $IdUser = $_POST['UserId'];
    $PassUser = $_POST['UserPass'];
    $query=$bdd->prepare('SELECT PASS, CODEVALIDATION, CONNECTE, ID FROM UTILISATEUR WHERE PSEUDO = :PSEUDO');
    $query->bindValue(':PSEUDO',$IdUser, PDO::PARAM_STR);
    $query->execute();
    $data=$query->fetch();
     
    $sql = "UPDATE UTILISATEUR SET CONNECTE = :1,  
                WHERE PSEUDO = :PSEUDO";
    $stmt = $pdo->prepare($sql);                                  
    $stmt->bindParam(':CONNECTE', $_POST['CONNECTE'], PDO::PARAM_STR); 
    $stmt->bindParam(':PSEUDO', $_POST['PSEUDO'], PDO::PARAM_INT);
    $stmt->execute(); 
     
    $PassRetour = $data['PASS'];
    $Code = $data['CODEVALIDATION'];
    if($PassRetour == md5($PassUser))
    {
        if($Code == 'OK')
        {
            $_SESSION['ID'] = $data['ID'];
            $_SESSION['PSEUDO'] = $IdUser;
            echo 'OK';
        }
        else
        {
            echo 'NONVALIDE';
        }
    }
    else
    {
        echo 'KO';
    }
     
    ?>

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Tu peux déjà rajouter une vérification sur l’exécute pour voir si ta requête est exécutée ou non.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
    session_start();
    include 'ConnexionBDD.php';
    $IdUser = $_POST['UserId'];
    $PassUser = $_POST['UserPass'];
    $query=$bdd->prepare('SELECT PASS, CODEVALIDATION, CONNECTE, ID FROM UTILISATEUR WHERE PSEUDO = :PSEUDO');
    $query->bindValue(':PSEUDO',$IdUser, PDO::PARAM_STR);
    $query->execute();
    $data=$query->fetch();
     
    $sql = "UPDATE UTILISATEUR SET CONNECTE = :1,  
                WHERE PSEUDO = :PSEUDO";
    $stmt = $pdo->prepare($sql);                                  
    $stmt->bindParam(':CONNECTE', $_POST['CONNECTE'], PDO::PARAM_STR); 
    $stmt->bindParam(':PSEUDO', $_POST['PSEUDO'], PDO::PARAM_INT);
     
    if ($stmt->execute()) { 
       echo 'Réussie';
    } else {
       echo 'Echec';
    }
     
    $PassRetour = $data['PASS'];
    $Code = $data['CODEVALIDATION'];
    if($PassRetour == md5($PassUser))
    {
        if($Code == 'OK')
        {
            $_SESSION['ID'] = $data['ID'];
            $_SESSION['PSEUDO'] = $IdUser;
            echo 'OK';
        }
        else
        {
            echo 'NONVALIDE';
        }
    }
    else
    {
        echo 'KO';
    }
     
    ?>

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Enfaite je peux même pas y voir, si tu veux quand je clique sur connexion rien ne se passe quand j'insere ce code ... j'accede meme pas a la page donc impossible de voir l'erreur.

    C'est comme si le bouton Connexion était désactivé

    C'etait la seul manière pour moi d'ajouter un "1" dans une table une fois que le membre clique sur connexion ... mais sa ne marche pas ... peut être qu'il ne faut pas faire un UPDATE ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Il te faudrait activer les erreurs PHP pour voir d’où vient ton problème mais déjà je pense qu'il te faut remplacer $pdo par $bdd dans ton code
    Code à remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "UPDATE UTILISATEUR SET CONNECTE = :1,  
                WHERE PSEUDO = :PSEUDO";
    $stmt = $pdo->prepare($sql);
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "UPDATE UTILISATEUR SET CONNECTE = :1,  
                WHERE PSEUDO = :PSEUDO";
    $stmt = $bdd->prepare($sql);

  10. #10
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Effectivement tu as oublié de remplacer $pdo par $bdd. Une étourderie, je suppose
    Normalement dans ce genre de cas, l'interpréteur envoie un message Notice: Undefined variable: pdo. Si tu n'as pas vu ce message, c'est que ton serveur de développement est mal configuré. Je te conseille de changer la valeur de error_reporting dans ton php.ini et de la mettre à E_ALL.
    À défaut, si tu ne peux pas ou ne sais pas modifier le php.ini, ajoute cette ligne au début de ton script PHP :
    Tu as une autre erreur, un peu plus vicieuse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = "UPDATE UTILISATEUR SET CONNECTE = :1,  
                WHERE PSEUDO = :PSEUDO";
    ...
    $stmt->bindParam(':CONNECTE', $_POST['CONNECTE'], PDO::PARAM_STR);
    Le ':1' est considéré comme un « marqueur ». Je pense que tu as confondu avec ce ':CONNECTE' que tu essayes de lier juste après. Et c'est là que c'est vicieux : ça ne génère pas de message quand tu essayes de lier un marqueur qui n'est pas dans la requête. En tout cas, pas avec le mode de signalement des erreurs par défaut de PDO.

    En revanche, tu devrais avoir un message de niveau warning au moment du execute car le marqueur ':1' n'a pas été lié.

    Pour changer le mode de signalement des erreurs de PDO, utilise un setAttribute (voir http://php.net/manual/fr/pdo.error-handling.php). En transformant tous les problèmes SQL en exceptions, le script sera forcé de s'arrêter à chaque erreur. Ça va rendre le débogage beaucoup plus facile.

    Un exemple complet de l'erreur vicieuse :
    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
    <?php
    error_reporting(-1);
     
    try {
       /* pas besoin de sélectionner une base pour les requêtes sur DUAL
          voir https://fr.wikipedia.org/wiki/Table_DUAL */
       $pdo = new PDO('mysql:');
       $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
       die($e);
    }
     
    $st = $pdo->prepare('SELECT "bonjour" FROM DUAL WHERE :machin = 2');
    $st->bindParam(':bidule', $i, PDO::PARAM_INT); // pas d'exception ici !
     
    for ($i = 0; $i < 3; $i++) {
       try {
          $st->execute(); // l'exception est lancée ici
       } catch (PDOException $e) {
          echo $e;
       }
       echo '<pre>';
       print_r($st->fetchAll(PDO::FETCH_COLUMN));
       echo '</pre>';
    }
    ?>

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Et puis quand tu auras réglé ces problèmes de syntaxe, il serait plus logique d'effectuer ta requête d'update uniquement si la connexion est réussie...

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Enfin trouvé la solution merci à tous pour votre aide :

    Code php : 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
    33
    34
    35
    36
    37
    38
    39
     
    <?php
     
    session_start();
    include 'ConnexionBDD.php';
    $IdUser = $_POST['UserId'];
    $PassUser = $_POST['UserPass'];
    $query=$bdd->prepare('SELECT PASS, CODEVALIDATION, CONNECTE, ID FROM UTILISATEUR WHERE PSEUDO = :PSEUDO');
    $query->bindValue(':PSEUDO',$IdUser, PDO::PARAM_STR);
    $query->execute();
    $data=$query->fetch();
     
     
     
    $PassRetour = $data['PASS'];
    $Code = $data['CODEVALIDATION'];
     
    if($PassRetour == md5($PassUser))
    {
        if($Code == 'OK')
        {
            $_SESSION['ID'] = $data['ID'];
            $_SESSION['PSEUDO'] = $IdUser;
            echo 'OK';
            $query=$bdd->prepare('UPDATE UTILISATEUR SET CONNECTE =1 WHERE PSEUDO = :PSEUDO');
            $query->bindValue(':PSEUDO',$IdUser, PDO::PARAM_STR);
            if ($query->execute()); 
        }
        else
        {
            echo 'NONVALIDE';
        }
    }
    else
    {
        echo 'KO';
    }
     
    ?>

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

Discussions similaires

  1. explication des membres connectés.
    Par Maxoo dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 25/04/2006, 13h49
  2. [blob] update de champ blob
    Par Michael# dans le forum SQL
    Réponses: 8
    Dernier message: 13/12/2005, 10h51
  3. Probleme simple : Update du champ le + petit
    Par barok dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/09/2005, 14h33
  4. UPDATE de champ datetime
    Par HULK dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/09/2005, 13h24
  5. UPDATER le champ d'une table 1 avec le champ d'une table 2
    Par alain.dissoir dans le forum Oracle
    Réponses: 2
    Dernier message: 08/06/2005, 14h07

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