SELECT valeurs pour page profil.
Résolu
Legrandfifou
Messages postés
109
Date d'inscription
Statut
Membre
Dernière intervention
-
Legrandfifou Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Legrandfifou Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un système de connexion qui marche nickel et je suis dans l'optique de créer une page profil si l'on peut l'appeler comme ca , donc je récupéré mes valeurs dans ma base de données et ensuite je les stockes dans une variables $donnes et ensuite je l'es écrit dans le div du profil mais je rencontre un soucis .. Lorsque j'affiche il n'affiche rien , il dois afficher les informations correspondant aux pseudo et id donc j'ai fait comme ceci :
Je suis débutant et j'ai essayé par rapport a ce tutoriel https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/lire-des-donnees-2 , je reprend les idées de base mais ca ne semble pas marcher et en fait je comprend pas pourquoi :/
j'ai un système de connexion qui marche nickel et je suis dans l'optique de créer une page profil si l'on peut l'appeler comme ca , donc je récupéré mes valeurs dans ma base de données et ensuite je les stockes dans une variables $donnes et ensuite je l'es écrit dans le div du profil mais je rencontre un soucis .. Lorsque j'affiche il n'affiche rien , il dois afficher les informations correspondant aux pseudo et id donc j'ai fait comme ceci :
<div class="profile">
<?php
$bdd = new PDO ('mysql:host=localhost;dbname=connexion', 'root');
$donnees = $bdd->query('SELECT birthday, country, lvl FROM membres WHERE pseudo = :pseudo AND id = :id');
if (isset($_SESSION['pseudo']))
{
echo "<div class='profile_connected'><a href='profil'>" , $_SESSION['pseudo'] , "</a>
<img src='perso.png' class='perso_img' ></div>" , $donnees['lvl'] ,"
";
}
else
{
echo '<div class="profile_connected">Bonjour, visiteur ! </div>';
}
?>
Je suis débutant et j'ai essayé par rapport a ce tutoriel https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/lire-des-donnees-2 , je reprend les idées de base mais ca ne semble pas marcher et en fait je comprend pas pourquoi :/
A voir également:
- SELECT valeurs pour page profil.
- Supprimer page word - Guide
- Voir qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Imprimer tableau excel sur une page - Guide
- Page d'accueil - Guide
3 réponses
Bonjour,
Il ne faut Pas d'apostrophes ou de quotes autour des variables préparées dans la requête..
De plus... les variables :toto ... s'utilises avec les instructions PREPARE et EXECUTE ... pas QUERY !
Bien sûr.. il faut que tu penses à initialiser tes variables $pseudo et $id .... avec des valeurs....
PS: Au passage ... ne colle pas le code de connexion à ta BDD directement dans ta page..... places le dans un autre fichier que tu n'auras qu'à inclure dans tes pages.....
(via l'instruction REQUIRE_ONCE par exemple )
Il ne faut Pas d'apostrophes ou de quotes autour des variables préparées dans la requête..
De plus... les variables :toto ... s'utilises avec les instructions PREPARE et EXECUTE ... pas QUERY !
<?php //Connexion à la BDD require_once "connexionBDD.php"; // Récupération propre de la variable PSEUDO : $pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : null; //Avant de faire le reste du code... je vérifie qu'il y a bien un pseudo if($pseudo ){ // Je sépare la requete de son exécution cela permet d'en faire un debug au cas où $sql = "SELECT birthday, country, lvl FROM membres WHERE pseudo = :pseudo AND id = :id "; // Je sépare les variables de la requête de son exécution cela permet d'en faire un debug au cas où $params = array(":pseudo"=>$pseudo,":id"=>$id); try{ $req = $bdd->prepare($sql); $req->execute($params); $donnees = $req->fetch(); } catch(Exception $e) { // en cas d'erreur echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } $lvl = $donnees['lvl']; echo "<div class='profile_connected'> <a href='profil'>$pseudo <img src='perso.png' class='perso_img' > </a> </div> $lvl"; }else{ echo '<div class="profile_connected">Bonjour, visiteur ! </div>'; }
Bien sûr.. il faut que tu penses à initialiser tes variables $pseudo et $id .... avec des valeurs....
PS: Au passage ... ne colle pas le code de connexion à ta BDD directement dans ta page..... places le dans un autre fichier que tu n'auras qu'à inclure dans tes pages.....
(via l'instruction REQUIRE_ONCE par exemple )
$req = $bdd->query('SELECT birthday, country, lvl FROM membres WHERE pseudo = :pseudo AND id = :id'); $donnees = $req->fetch()
Je ne m'y connais pas assez en PHP, mais disons que $req contient la requête SQL.
Le fetch permet d'obtenir les données (de la première ligne) de la requête.
Un expert en PHP t'aurait donné une explication plus précise ;)
Merci de ta réponse et je pense avoir compris avec fetch(); ! :) J'ai modifié comme ceci
Mais j'avais l'erreur
Donc j'ai rajouter des " a la ligne SELECT
L'erreur est supprimer mais ca n'affiche toujours rien :/
EDIT : Ajout du LANGAGE dans les BALISES DE CODE .
<?php $bdd = new PDO ('mysql:host=localhost;dbname=connexion', 'root'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $req = $bdd->query('SELECT birthday, country, lvl FROM membres WHERE pseudo = :pseudo AND id = :id '); $donnees = $req->fetch(); if (isset($_SESSION['pseudo'])) { echo "<div class='profile_connected'><a href='profil'>" , $_SESSION['pseudo'] , "</a> <img src='perso.png' class='perso_img' ></div>" , $donnees['lvl'] ," "; } else { echo '<div class="profile_connected">Bonjour, visiteur ! </div>'; } ?>
Mais j'avais l'erreur
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':pseudo AND id = :id' at line 1' in C:\wamp\www\tests\index.php on line 36
Donc j'ai rajouter des " a la ligne SELECT
<?php $bdd = new PDO ('mysql:host=localhost;dbname=connexion', 'root'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $req = $bdd->query('SELECT birthday, country, lvl FROM membres WHERE pseudo = ":pseudo" AND id = ":id" '); $donnees = $req->fetch(); if (isset($_SESSION['pseudo'])) { echo "<div class='profile_connected'><a href='profil'>" , $_SESSION['pseudo'] , "</a> <img src='perso.png' class='perso_img' ></div>" , $donnees['lvl'] ," "; } else { echo '<div class="profile_connected">Bonjour, visiteur ! </div>'; } ?>
L'erreur est supprimer mais ca n'affiche toujours rien :/
EDIT : Ajout du LANGAGE dans les BALISES DE CODE .
pour ce qui est de la façon de faire. .. je te propose la meilleur... si tu n'en veux pas. .. tant pis pour toi. ...
du coup je ne la comprend pas , si tu as de plus ample informations , tuto , cours sur ca je les prends :)
Encore désolé et ta méthode fonctionne très bien :) Même si je n'ai pas la même mise en forme c'est très gentil et encore encore désolé