Bonsoir
Après des jours de recherche, je n'arrive toujours pas à identifier l'erreur.
J'ai fait des multitudes de recherches, relu des cours mais en vain. Je suis perdue
Je vous explique: J'ai fait un mini site sur lequel l'utilisateur doit s'inscrire(pseudo, email), je récupère alors les infos que j'envoie dans ma BDD avec la date du jour qui sera donc sa date d'inscription. Puis lorsqu'il revient, il doit se connecter et là, je voudrai afficher Bonjour xxx son pseudo (ça c'est ok ) ET sa date d'inscription stockée dans la BDD;
Ma question est : comment puis-je rédiger ma requête pour lui dire 'va récupérer le pseudo qui vient de se connecter et compare le à ceux de la BDD et envoie moi la date d'inscription correspondante. J'ai beau essayé la méthode des sessions, des cookies, rien ne fonctionne; J'ai soit des messages d'erreur, soit aucune info ne s"affiche là où je voudrai récupérer la date.
Merci beaucoup de votre aide.
Je copie mon code ci-dessous et la dernière erreur générée est :
"Fatal error: Uncaught Error: Call to a member function fetch() on string in C:\"

<?php
session_start(); //sur chaque page (1ère et 2ème)
$_SESSION['id'] = '?'; // j'ai créé des variables sessions sur la 1ère page
$_SESSION['Pseudo'] = '?';
$_SESSION['Email'] = '?';
$_SESSION['pass'] = '?';
//connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<!Doctype HTML>
<html lang="fr">

<div class="presentation">
<?php
// requête en fonction de l'Email du membre
$reponse =$bdd->query = ("SELECT *from joueurs WHERE Email= '" . $_SESSION["Email"] . "' ");
$donnees=$bdd->prepare ("SELECT (Pseudo,DateInscription) FROM joueurs WHERE Email ='" . $_SESSION['Email'] . "' ");

/*on met le résultat dans un tableau $data-On fait une boucle "fetch" pour parcourir les lignes des visiteurs une à une
$data est un array qui contient champ par champ les valeurs de la première entrée.
On fait une boucle pour lister tout ce que contient la table*/
while ($donnees = $reponse->fetch());

//on assigne nos variables tirées du tableau $data
$Pseudo = $donnees['Pseudo'];
$DateInscription = $donnees['DateInscription'];

?>

<p>
Bonjour <?php echo $Pseudo; ?> <br>
</strong> Heureux de vous revoir ! <br>
Vous êtes inscrit sur notre site depuis le <?php echo $DateInscription; ?>
Bonjour,
Merci d'avoir pris le temps de me répondre. Je dois donc utiliser des COOKIES et pas des SESSIONS, c'est ça ? Je débute vraiment en PHP, je suis désolée si mes questions sont un peu basiques, mais j'apprends avec les cours sur internet et je progresse petit à petit .
J'avais teste une requête avec les cookies et ça n'a pas fonctionné. Peut-être y-a t-il encore des erreurs dans ma requête ? Je te la copie ci-dessous, si tu veux bien avoir la gentillesse de la vérifier et me dire si je me suis trompée.
Encore merci de ton aide
<?php
//connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<!Doctype HTML>
<html lang="fr">

<?php
// J'écris les cookies sur la 1ère page d'accueil:
setcookie("Email", $_POST['Email'], time() + 365*24*3600, null, null, false, true);
setcookie("Pseudo", $_POST['Pseudo'], time() + 365*24*3600, null, null, false, true);

//sur la 2ème page index.php :
// requête en fonction de l'Email du membre
$reponse =$bdd->query = ("SELECT *from joueurs WHERE Email= '" . $_COOKIE["Email"] . "' ");
$donnees=$bdd->prepare ("SELECT (Pseudo,DateInscription) FROM joueurs WHERE Email ='" . $_COOKIE['Email'] . "' ");

while ($donnees = $reponse->fetch());

//on assigne nos variables tirées du tableau $data
$Pseudo = $donnees['Pseudo'];
$DateInscription = $donnees['DateInscription'];
?>
<p>
Bonjour <?php echo $Pseudo; ?> <br>
</strong> Heureux de vous revoir ! <br>
Vous êtes inscrit sur notre site depuis le <?php echo $DateInscription; ?>
Désolée, j'ai fait une erreur sur la ligne des cookies

voilà ce que j'ai écris sur la première page , puisque je ne connais pas la valeur des cookies
Merci encore

<?php
setcookie("Email", '?', time() + 365*24*3600, null, null, false, true); // On écrit les cookies
setcookie("Pseudo", '?', time() + 365*24*3600, null, null, false, true);
?>
Voilà le message d'erreur qui s'affiche avec les cookies ;
Fatal error: Uncaught Error: Call to a member function fetch() on string in C:\wamp64\www\SiteJeuxSophie dateRecupBDD\index.php on line 110
( ! ) Error: Call to a member function fetch() on string in C:\wamp64\www\SiteJeuxSophie dateRecupBDD\index.php on line 110
Call Stack
# Time Memory Function Location
1 0.0004 408080 {main}( ) ...\index.php:0


ca fait des jours que je cherche et je n'arrive toujours pas à comprendre ce qui est faux. J'ai cherché sur multitudes de sites et ça ne fonctionne toujours pas. Si tu peux m'aider à trouver la solution, ce serait pour moi une grande avancée dans mon projet.
Merci beaucoup pour tous ces renseignements et pour le temps passé à m'aider
Je vais étudier tout ça et je reviendrai vers toi si je rencontre des difficultés.
Bonne journée
Bonjour CORAILLE , essaye ceci voir si sa peux t'aider (dans le premier lien tu as la 1ère page: connexion mais aussi si tu est connecté: la page principal)
Si c'est ce qu'il te faut tu as juste à modifié le code pour ajouter un lien vers une page d'inscription et autres modifs.
Dans le deuxième lien tu as la table sql que j'ai utilisé.
Bien-entendu il faudra crypter le mot de passe de l'utilisateur ainsi que protéger "l'appel des infos", et changer la durée des cookies ou quelles cookies sauvegarder.

indextest.php : https://uptobox.com/uphy48tz11va
table.sql : https://uptobox.com/gkfnaarf9sjf
Modifié par thelm (27 Jan 2020 - 20:50)
Meilleure solution
Bonjour

Merci à tous de votre aide. C'est ok pour moi
Je vais maintenant pouvoir continuer mon projet grâce à votre aide précieuse
Bonne journée