SELECT valeurs pour page profil.
Résolu
Legrandfifou
Messages postés
112
Statut
Membre
-
Legrandfifou Messages postés 112 Statut Membre -
Legrandfifou Messages postés 112 Statut Membre -
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 :/
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 !<?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 )-
Non mais les valeurs id et pseudo sont récupérer via la table , l'id et le pseudo ne servent qu'a permettre de sélectionner uniquement le level et autre de cet id et pseudo. De plus je cherche a le faire de la facon que je l'ai faite .. ( Je sais je suis chiant ) mais ca me permet de m'y retrouver dans le code ce que j'aimerais c'est que si tu a la possibilité c'est de me dire ce qui ne va pas , par exemple tu devrais créer ceci ou cela car comme ceci ca ne marchera pas , désolé je peut paraître exigeant mais je cherche a le faire par moi même avec mon code , un code que je comprend :) Désolé j'ai l'impression d'être hyper relou mais merci de ta réponse
-
-
Je m'excuse encore , encore , je suis bête et je ne peu m'en prend qu'à moi je dis que je ne comprend pas mais je ne lis pas les commentaires //blabla donc en fait j'ai compris comment tu as fait effectivement l'id ne sert a rien car depuis le début j'utilise pseudo comme vérification :) J'avoue aussi que tout ce qui est try , catch je n'ai pas vu dans les cours d'openclassroom :s ni ce $pseudo = isset($_SESSION['pseudo']) ? $_SESSION['pseudo'] : null;
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é
-
-
$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
<?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'erreurFatal 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 .