Extraire une donnée depuis une BDD vers une variable en PHP [Résolu/Fermé]

Signaler
Messages postés
1476
Date d'inscription
samedi 25 juin 2016
Statut
Contributeur
Dernière intervention
11 juin 2021
-
Messages postés
1476
Date d'inscription
samedi 25 juin 2016
Statut
Contributeur
Dernière intervention
11 juin 2021
-
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.

3 réponses


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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
1476
Date d'inscription
samedi 25 juin 2016
Statut
Contributeur
Dernière intervention
11 juin 2021
196
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)


+++
Messages postés
16452
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 juillet 2021
880
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;
Messages postés
1476
Date d'inscription
samedi 25 juin 2016
Statut
Contributeur
Dernière intervention
11 juin 2021
196
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é.
+++
Messages postés
16452
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 juillet 2021
880
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.
Messages postés
1476
Date d'inscription
samedi 25 juin 2016
Statut
Contributeur
Dernière intervention
11 juin 2021
196
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++