Extraire une donnée depuis une BDD vers une variable en PHP

Résolu/Fermé
Snox5 Messages postés 1475 Date d'inscription samedi 25 juin 2016 Statut Contributeur Dernière intervention 11 juin 2021 - Modifié par Snox5 le 22/01/2017 à 01:51
Snox5 Messages postés 1475 Date d'inscription samedi 25 juin 2016 Statut Contributeur Dernière intervention 11 juin 2021 - 22 janv. 2017 à 17:02
Bonjour/ Bonsoir,

Je débute en PHP, j'ai cherché pendant 3 heures sur le web, mais je n'ai rien trouvé d’intéressant... Ce que je veut faire est assez simple, je vais essayer de m'exprimer clairement ! ^^

J'ai une page de connexion avec un formulaire, afin de se connecter sur un espace membre. Une fois le formulaire envoyé, les variables sont transmises via la méthode POST vers un script (connect.php), ce script vérifie si les identifiants sont correctes (par rapport aux infos d'une DB mysql) et si oui, des variables sessions vont êtres créées, afin de les utiliser dans la page suivante.

Dans mon script (connect.php), j'ai besoin de récupérer des infos sur le membre depuis la base de données, notamment son nom d'utilisateur.
Or, je n'y parvient pas !
Ma question : Comment récupérer la contenu d'une cellule d'une table de ma base de données mysql en PHP, afin de l'utiliser dans une variable session, en récupérer l'info sous forme d'une chaîne de caractère ?

Si vous n'avez pas bien compris, je peut réexpliquer autant de fois que nécessaire ! ^^
Merci d'avance pour votre aide,
+++

Deux choses sont infinies : l’Univers et la version d'essai de WinRAR. Mais, en ce qui concerne l’Univers, je n’en ai pas encore acquis la certitude absolue.
A voir également:

3 réponses

Utilisateur anonyme
22 janv. 2017 à 02:06
Là sans un bout de code ou le nom des colonnes du tableau on aura du mal à t'expliquer, mais je te conseille de regarder de côté de PDO pour lancer une requête SQL et récupérer les données.

Sinon regarde ce tuto:

https://www.grafikart.fr/tutoriels/gestion-membre-229
3
Snox5 Messages postés 1475 Date d'inscription samedi 25 juin 2016 Statut Contributeur Dernière intervention 11 juin 2021 213
22 janv. 2017 à 11:45
Salut ZeNairolf,

Merci pour ta réponse, et pour le lien du tutoriel, c'est effectivement ce que je souhaite faire.

Il était tard, j'ai oublié de mettre le code : ^^ (connect.php)
Mon problème se situe vers les lignes 27 à 30...
<?php
/*récupèration des variables POST des champs du formulaire*/
$email = isset($_POST['email']) ? $_POST['email'] : NULL;
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
$hash_pass= openssl_digest($password, 'sha512');
/*connexion à la $db*/
require_once('pdodat.php');
/*vérification des données entrées dans les champs*/
if(empty ($email)) {
	header ('Locaion: login.php?form=error');
} elseif (empty($password)) {
	header ("Location: login.php?form=error");
} else {
	
	$reply = $bdd -> query("select * from users where email = '".$email."' and password= '".$hash_pass."'");
	{
	$donnees = $reply->fetch();
	}
	
	if (empty($donnees))
	{
		header ('Location: login.php?form=unknow');
	}
	else
	{
		/*récuperation de données dans la db*/
		$requete = $bdd->query("select username from users where email='".$email."' and password= '".$hash_pass."'");
		$username = $requete->fetch();
		/*création des variables session*/
		session_start();
		$_SESSION['username'] =$username;
		$_SESSION['email'] = $email;
		header ('Location: dashboard.php');
	}
}
?>

Et pour ce qui est de ma table users dans la base de données users mysql :
username
email
password (hash)
date (date d'inscription)
AiD (A-I)


+++
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié par yg_be le 22/01/2017 à 12:33
bonjour, as-tu essayé
var_dump($username);
, pour comprendre?
et ainsi?
$data= $requete->fetch();
$username = $data->username;

plus simple, supprime ton second query, et fais directement:
		/*récuperation de données dans la db*/
		$username = $donnees->username;
0
Snox5 Messages postés 1475 Date d'inscription samedi 25 juin 2016 Statut Contributeur Dernière intervention 11 juin 2021 213
Modifié par Snox5 le 22/01/2017 à 13:58
Salut yg_be,

Merci pour ton aide,
Je précise juste : la page connect.php renvoie ensuite sur la page dashboard.php, qui elle, sert à afficher les info sur le membre.
Un extrait du code de (dashboard.php) :
<div class="box-content">
        <ul>
         <ol><p>bienvenu @<?php echo($_SESSION['username']);?>
  </p></ol>
  <ol><p>Votre email est : <?php echo $_SESSION['email'];?></p></ol>
 </ul>
</div>

J'ai donc remplacé
<ol><p>bienvenu @<?php echo($_SESSION['username']);?>
par
<ol><p>bienvenu @<?php var_dump($_SESSION['username']);?>
.
Ma page affiche dans le navigateur :
bienvenu @array(1) { ["username"]=> string(3) "Nox" } (Nox étant le nom d'utilisateur)
Votre email est : xxxxxxx@gmail.com

J'ai essayé ce que tu m'as demandé, mais ça n'a pas fonctionné.
+++
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
22 janv. 2017 à 14:35
quand j'ai suggéré d'utiliser
var_dump($username);
, c'était en supposant que tu allais comprendre que c'était à ajouter après
$username = $requete->fetch();
. en faisant cela, tu aurais pu comprendre ce qu'était $username à ce moment-là.
tu ne nous expliques pas ce que tu as changé dans connect.php, mais il me semble que cette page se comporte bien, puisque les variables $_SESSION sont peuplées.
je pense donc qu'il te reste à défaire ce que tu as fait dans dashboard.php, et tout devrait être correct.
si ce n'est pas le cas, explique-nous.
0
Snox5 Messages postés 1475 Date d'inscription samedi 25 juin 2016 Statut Contributeur Dernière intervention 11 juin 2021 213
22 janv. 2017 à 17:02
Re,
"en supposant que tu allais comprendre que [...]"
Si j'étais un expert en PHP et en bases de données, je ne serai pas ici à demander de l'aide...^^

J'ai finalement réussi après avoir lu un peu de documentation, fetch() retourne un tableau, enfin, une rangé dans mon cas. Il me faut donc préciser dans le code quelle colonne du tableau je souhaitait récupérer en variable. Au lieu de ça, je récupérer tout le tableau, d'où l'erreur...
Donc dans connect.php, j'ai apporté les modifs suivantes :
$requete = $bdd->query("select * from users where email='".$email."' and password= '".$hash_pass."'");
$userinfos = $requete->fetch();
session_start();
$_SESSION['username'] =$userinfos[username];
$_SESSION['subdate'] = $userinfos[date];
$_SESSION['email'] = $userinfos[email];
header ('Location: dashboard.php');

Ca fonctionne !
Merci à vous deux @yg_be et @ZeNairolf (+1 pour le tutoriel)
A++
0