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 :

Problème "simple" en PDO (affichage d'une requete)..


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut Problème "simple" en PDO (affichage d'une requete)..
    Salut! à tous

    Je suis novice en PHP et MySQL (PDO donc..) et souhaiterais donner l'accès aux admins de mon site à la page administration.php ..
    Je me suis inspiré d'un tutoriel PHP, pour faire ma requete et ma comparaison, mais ca ne fonctionne pas..
    Etant novice, j'ai testé des petits echo partout, pour voir le contenu des variables, et je ne semble pas pouvoir afficher le contenu de ma bdd..

    J'ai donc testé un select * , et afficher tout, ça fonctionne..
    Je vous mets ci-dessous une copie du code actuel :

    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
    <?php 
    include("./includes/DBconnect.php");
     
    $query=$db->prepare('SELECT * FROM users WHERE login-user =:pseudo');
    $query->bindValue(':pseudo',$_POST['login'], PDO::PARAM_STR);
    $query->execute();
    $data=$query->fetch();	
    echo '1:'.$_POST['login']; // ca fonctionne, ca reprend bien mon login ADMIN rentré dans le formulaire de l'index.php
    echo '2:'.$data['pw-user']; // ca n'affiche rien, il semble etre vide
    if ($data['pw-user'] == md5($_POST['pass'])) // Acces OK !
    {
    $_SESSION['pseudo'] = $data['login-user'];
    $_SESSION['id'] = 1;
    header("Location: administration.php");
    }
    else // Acces pas OK !
    {
    echo "pas ok";
    }
    $query->CloseCursor();
     
    ?>
    Chaque fois, il passe donc dans la deuxième branche du IF...

    Merci

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Fais voir la structure de ta table (DESC `tablename`)

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Voila

    Table users :
    id-user int(11)
    login-user varchar(40)
    pw-user varchar(40)

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Essaies avec ce code :
    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
    <?php
    $inc = include("./includes/DBconnect.php");
     
    if (false === $inc) {
       exit('err on include');
    }
     
    $stmt = $db->prepare('SELECT * FROM users WHERE login-user = :pseudo');
    if (false === $stmt) {
       exit('err on prepare');
    }
     
    $bind = $stmt->bindValue(':pseudo', $_POST['login'], PDO::PARAM_STR);
    if (false === $bind) {
       exit('err on bind');
    }
     
    try {
       $exec = $stmt->execute();
       if (false === $exec) {
          exit('err on exec');
       }
     
       $data = $stmt->fetch(PDO::FETCH_ASSOC);
       echo '<pre>', 'user : ', $data['longin-user'], '<br />', 'pwd : ', $data['pw-user'], '<br />';
       echo 'postPwd : ', $_POST['pass'], ' - md5 : ', md5($_POST['pass']);
    }
    catch (PDOException $e) {
       exit($e->getMessage());
    }
     
    ?>

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Bonjour,

    Essaies avec ce code :
    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
    <?php
    $inc = include("./includes/DBconnect.php");
     
    if (false === $inc) {
       exit('err on include');
    }
     
    $stmt = $db->prepare('SELECT * FROM users WHERE login-user = :pseudo');
    if (false === $stmt) {
       exit('err on prepare');
    }
     
    $bind = $stmt->bindValue(':pseudo', $_POST['login'], PDO::PARAM_STR);
    if (false === $bind) {
       exit('err on bind');
    }
     
    try {
       $exec = $stmt->execute();
       if (false === $exec) {
          exit('err on exec');
       }
     
       $data = $stmt->fetch(PDO::FETCH_ASSOC);
       echo '<pre>', 'user : ', $data['longin-user'], '<br />', 'pwd : ', $data['pw-user'], '<br />';
       echo 'postPwd : ', $_POST['pass'], ' - md5 : ', md5($_POST['pass']);
    }
    catch (PDOException $e) {
       exit($e->getMessage());
    }
     
    ?>
    Salut, et merci beaucoup pour ton temps.
    Malheureusement, ca ne fonctionne pas, ca ne me poste dans tous les cas que "err on exec"

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bon c'est simple, tu ne dois pas utiliser le tiret dans le nom des champs.
    Remplace par le tiret-bas : login-user => login_user

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    Ca marche!
    Franchement, un grand merci

  8. #8
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Meuh si qu'on peut utiliser le tiret, il faut juste penser à échaper le nom du champ dans la requête car a-b est interprété par mysql comme une soustraction

    Voici comment tu dois utiliser l'échapement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `une-colonne` FROM `une-database`.`une-table` WHERE `un-colone` IN (SELECT `autre-chose` FROM `une-autre-table`)

Discussions similaires

  1. [MySQL] Problème de simple quote dans le champ de recherche
    Par mesken dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/03/2012, 10h05
  2. [PHP 5.2] Probléme échappement simple quote
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 19/04/2011, 15h08
  3. [MySQL] Problème de simples quotes
    Par LN69 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/05/2008, 12h02

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