Page 1 sur 1

[RESOLU]Récupérer données MySQL en php

Posté : 26 mai 2014, 10:46
par Jexus11
Bonjour,

Je voudrais savoir comment je pourrais récupérer en PHP les données MySQL que j'ai récupérées avec ma requête.

Genre, j'ai ça:
$stmt4 = $bdd->prepare("SELECT passwordUser FROM users WHERE idUser = :idUser");
Et je cherche à récupéré la donnée derrière passwordUser. Je fais comment?

Merci

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:06
par chapt0011
Ca devrait le faire ;) mais n'oublie pas de définir la valeur d'idUser où j'ai mis en commentaire ;)
$stmt4 = $bdd->prepare("SELECT passwordUser FROM users WHERE idUser = :idUser");
$stmt4->execute(array(':idUser'=>/*valeur_correspondante*/)) //on execute la requete préparée en prenant soin de définir la valeur d'idUser
if($res = $stmt4->fetchObject())//on récupère la donnée sous forme d'objet
{
     echo $res->passwordUser; //on affiche l'attribut passwordUser de l'objet res
}

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:11
par Jexus11
Ne t'en fais pas pour la définition de la valeur d'idUser, j'ai juste copier la ligne de code qui m'étais utile pour mon problème ;)

Donc, j'imagine que si rien ne s'affiche, c'est que ma requête est foireuse?

Merci pour ton aide en tout cas.

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:13
par sirakawa
POur savoir si une requête est "foireuse" il faut la faire afficher et la tester dans PHPMYADMIN ou autre semblable; moi jele fais avec mysql en ligne d ecommande.

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:15
par Jexus11
Ha ouais j'oublie tout le temps cet outil, pourtant super utile.

Bon ben visiblement ma requête es fonctionnelle. Alors pourquoi ça marche pas? Pourquoi il ne m'affiche rien?

Voilà la partie de code concerné:
$codeSms = filter_input(INPUT_POST, 'codeSms');
$codeSmsHash = md5($codeSms);
$_SESSION['codeSmsHash'] = $codeSmsHash;

if (isset($codeSms)) 
{
  $stmt4 = null;
  $bdd = null;
  try
  {
      $bdd = PDO2::getInstance();
      // Préparation de la requête
      $stmt4 = $bdd->prepare("SELECT passwordUser FROM users WHERE idUser = :idUser");
      
      // Exécution de la requête en passant les marqueurs et leur variables associées dans un tableau
      $stmt4->execute(array(':idUser'=>$_SESSION['lastId'])) or die('erreur requete');
      
      // Création du tableau du résultat avec fetchAll qui récupère tout le tableau en une seule fois
      $resultat = $stmt4->fetchAll(); 
      $nb_result = count($resultat);

      
      if ($_SESSION['codeSmsHash'] == $resultat['passwordUser'])
      {
          /* Démarre une session si aucune n'est déjà existante et enregistre le pseudo dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter.  */
          if (!session_id()) session_start();
          $_SESSION['login'] = $_SESSION['loginUser'];
                          
          //$message = 'Bonjour '.htmlspecialchars($_SESSION['login']).', vous êtes connecté';
          //ou redirection vers une page en cas de succès ex : menu.php
          header("Location: https://agendapro.fr");
          exit();

          //Si vous voulez récupérer les données elles se trouvent dans la première et unique ligne du tableau $resultat par exemple
          //$result = $resultat[0];
          //echo $result['pseudo'];
          //echo $result['date_enregistrement'];
          
      }
      else if ($nb_result > 1)
      {
              // Par sécurité si plusieurs réponses de la requête mais si la table est bien construite on ne devrait jamais rentrer dans cette condition
              $message = 'Problème de d\'unicité dans la table';
      }
      else
      {   // Le pseudo ou le mot de passe sont incorrect
              $message = 'Code SMS incorrect.';
      }
      if($res = $stmt4->fetchObject())//on récupère la donnée sous forme d'objet
  {
       echo $res->passwordUser; //on affiche l'attribut passwordUser de l'objet res
  }

  }
  catch (PDOException $e)
  {
          $message = 'Problème dans la requête de sélection';
  }
}

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:16
par chapt0011
on ne peut pas afficher les requêtes préparées de pdo telles qu'elles seront à l'éxécution!!
essaye d'afficher ta variable de session ($_SESSION['lastId']) pour voir si elle est bien remplie!
Ton session_start() me semble très mal positionné ;) c'est en tout début de page qu'il faut le mettre !!!

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:21
par Jexus11
Mon LastId retourne bien 666.
C'est d'ailleurs avec cette variable que j'ai testé ma requête sur PHPHMyAdmin.

Mon session_start() est positionné ici car il sert à ouvrir une session UNIQUEMENT si les conditions requises sont remplies. C'est une sorte de script de connexion.

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:24
par chapt0011
et var_dump($resultat) te retourne t'il qqch?
car tu fais déjà un
$resultat = $stmt4->fetchAll();
donc
if($res = $stmt4->fetchObject())//on récupère la donnée sous forme d'objet
  {
       echo $res->passwordUser; //on affiche l'attribut passwordUser de l'objet res
  }
ne donnera rien car tu a déjà parcouru tous les résultats!!

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:29
par Jexus11
Quand je fait un var_dump, il me retourne bien le password que je suis censé utilisé pour le comparer à ce que je rentre dans mon champ codeSms.

En faite, je vous explique un peu le prinipe:
C'est une page de confirmation par sms. Lorsque le client s'inscrit, après avoir renseigné ses infos, il arrive sur cette page où un code lui sera envoyé par sms. Il rentrera ce code dans le champ prévu à cet effet, ce code sera comparé et si il est identique à celui en base, la confirmation se fait, et il passe à l'étape suivante.

Or, je n'arrive pas à récupérer correctement le passwordUser pour le comparer.

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:30
par chapt0011
peux tu poster le resultat de var_dump?

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:32
par Jexus11
array
0 =>
array
'passwordUser' => string '707ba1469306f8170a3970df6aae6bf5' (length=32)
0 => string '707ba1469306f8170a3970df6aae6bf5' (length=32)


J'ai bien mon passwordUser qui est retourné.

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:39
par chapt0011
Alors comme te le montre ce var_dump

Code : Tout sélectionner

array 0 => array 'passwordUser' => string '707ba1469306f8170a3970df6aae6bf5' (length=32) 0 => string '707ba1469306f8170a3970df6aae6bf5' (length=32)
Ton tableau $resultat
contient pour la clé 0, un autre tableau avec deux clés soit passwordUser soit 0
donc pour accéder à passwordUser:
c'est
$resultat[0]['passwordUser'] 
         //ou alors
       $resultat[0][0]       

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:46
par Jexus11
Merci pour ton aide. J'ai toujours du mal avec PHP.


Bon, est ce que je dois refaire un autre sujet ou je peux poster ici la suite du problème?
En faite, je n'arrive pas à exécuter le header(location: index.php) que je suis censé utiliser en confirmant le code sms.

Est ce que je peux vous filer le code php ici ou je recréé un topic?

Re: Récupérer données MySQL en php

Posté : 26 mai 2014, 11:55
par chapt0011
Suis pas admin, dans le doute crée un autre topic et met celui ci en résolu!!