Page de profil

Par Ceets, il y a 8 ans


Salut à tous,
Tout d'abords merci à toutes les personnes qui prendrons le temps de lire mon problème.
Je souhaiterait créer une page de profil pour chaque utilisateur de mon espace membre
(celui présenté dans le tuto de Graphikart).

J'ai tester tous les codes possible, en esseyant même de reproduire ce que je fait pour
afficher mes articles, mais rien n'y fait.
Je n'y arrive pas...

Pouvez vous me diriger vers quelques codes ? ou bien si un article au même sujet
résolu existe ?
J'en est déjà trouver, mais ne s'applique pas correctement sur mon espace membre.

Je vous remercie et à bientôt.

17 réponses

Laznet, il y a 8 ans

Bonjour,

Je ne sais pas si ça va résoudre ton problème mais tu utilises mysql query qui est obsolète avec PHP 5 et a carrément été supprimé de PHP 7.. Tu peux utiliser PDO (comme de proposer sur la doc de PHP :D)

Pas de panique, ce n'est pas plus compliqué que ce que tu connais, et ça a l'avantage de pouvoir être utilisé en PHP7 (et c'est quand même plus actuel ^^)..

Et voici la doc sur PDO :D

Ceets, il y a 8 ans

Salut Mika ! Merci pour ta réponse !
J'ai remarquer mon erreur, je code en PDO, et est donc fait les modifications mais rien ne change avec NEW PDO...

Laznet, il y a 8 ans

New pdo ?

Pourrais-tu me montrer ton code :D

Ceets, il y a 8 ans
<?php require_once 'db.php' if(isset($_GET['id'])) { $id = intval($_GET['id']); $bdd = mysql_query('select username, fullname, email from users where id="'.$id.'"'); if(mysql_num_rows($dn)>0) { $dnn = mysql_fetch_array($dn); ?> <h2>Profil de <?php echo htmlspecialchars($username); ?></h2> <p> <span>Adresse email</span> : <?php echo htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8'); ?><br /> <span>Nom complet</span> : <?php echo $fullname; ?> </p> <?php } else { echo 'Cet utilisateur n\'existe pas.'; } } else { echo 'L\'identifiant de l\'utilisateur n\'est pas d&eacute;fini.'; } ?>

Voilà mon code si sa peut vous aider...

keulu, il y a 8 ans

etant donné que j'ai pas vraiment compris ta demande... (tu souhaite afficher un profil ?) et comme j'ai l'impression que tu débute, je vais commenter ton code pour que tu comprenne ce que tu fait.

<?php // fichier de connexion mysql require_once 'db.php' // si j'ai dans mon url un ?id=xxx if(isset($_GET['id'])) { // transformation en int $id = intval($_GET['id']); // selection du username, fullname, email dans la table utilisateur pour l'id courant // pour mysql, la convention de nommage veut que tous les mots clés sql soient écris en majuscule. // d'ailleur ici, tu fait une requette. ou Query., donc $query me semble plus approprié vu que tu vas travailler avec. // Et tu est sur que tu as bien ces 4 colonnes dans ta table "users" ? $query = mysql_query('SELECT username, fullname, email FROM users WHERE id="'.$id.'"'); // si j'ai des lignes dans $dn. // $dn n'existant pas, je corrige pour $query if(mysql_num_rows($query)>0) { // $dnn ? c'est vraiment parlant ca. Mais j'ai mieux appelons le $user (juste pour le fun hein ;) ) $user = mysql_fetch_array($query); ?> <!-- ici, $username n'existe pas., c'est $user['username'] --> <!-- html entities n'est pas vraiment utile dans ce cas la, car tu ne doit pas avoir d'html dans un pseudo. a toi de vérifier dans ta bdd que ce sont bien des caractère dit "normaux" --> <h2>Profil de <?php echo $user['username']; ?></h2> <p> <span>Adresse email</span> : <?php echo $user['email']; ?><br /> <!-- ici, $fullname n'existe pas., c'est $user['fullname'] --> <span>Nom complet</span> : <?php echo $user['fullname'] ; ?> </p> <?php } else { echo 'Cet utilisateur n\'existe pas.'; } } else { echo 'L\'identifiant de l\'utilisateur n\'est pas d&eacute;fini.'; } ?>
Ceets, il y a 8 ans

Salut à toi ! Je te remercie beaucoup pour le temps que tu a pris à me repondre.
Oui je suis débutant, et tu as tout à fait compris mon problème, je souhaite afficher le profil d'un utilisateur....
J'essaie ton code et je te répond à ça.
Merci beaucoup

Ceets, il y a 8 ans

Je reviens vers toi, non sa ne fonctionne toujours pas... je suis perdu...

Ceets, il y a 8 ans

Au pire je peux toujours utilisé ce code :

<?php require '../assets/inc/functions.php'; logged_only(); require '../assets/inc/header.php'; ?> <?php try { $bdd = new PDO('mes identifiants sql'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT username, fullname, email FROM users WHERE id="'.$id.'"'); while ($users = $reponse->fetch()) { ?> <h3><?php echo $users['fullname']; ?></h3> <p><span><?php echo $users['username']; ?></span></p> <p><span><?php echo $users['email']; ?></span></p> <?php } $reponse->closeCursor(); ?>

Mais je ne sais pas comment integrer GET dedans pour que ce soit pour un utilisateur spécifique

Laznet, il y a 8 ans

"integrer GET dedans pour que ce soit pour un utilisateur spécifique", c'est à dire ? quelle variable provient d'un GET ?

Ceets, il y a 8 ans

Je suis désolé je m'exprime mal
Enfaite le code que je viens de te mettre c'est le code que j'utilise pour afficher mes news.
Ducoup je voudrais l'utiliser pour pour pouvoir visualiser un profil.

Laznet, il y a 8 ans

Et en appliquant ce code de requête sur ton code profil ça ne fonctionne pas ?

Lartak, il y a 8 ans

Bonsoir.
Concernant ton dernier code, d'où sors tu la variable id ?
Pourquoi as-tu changé le nom de la variable user en users alors que tu ne veux afficher que les informations d'un seul utilisateur ?
De plus, pourquoi fais-tu une boucle alors que comme je l'ai dit dans la ligne précédente, tu ne veux afficher qu'un enregistrement de la base de données ?
Et puis ce qui serait bien plus propre, ce serait que tu fasse d'abord tes vérifications/requêtes SQL avant de faire l'affichage, exemple :

<?php require '../assets/inc/functions.php'; logged_only(); if (!empty($_GET['id']) { $id = $_GET['id']; try { $bdd = new PDO('mes identifiants sql'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT username, fullname, email FROM users WHERE id="'.$id.'"'); $user = $reponse->fetch(); $reponse->closeCursor(); if (!$user) { // Aucun enregistrement trouvé en base de données, stocker un message d'erreur et rediriger l'utilisateur } // Tout est bon, on s'occupe de l'affichage require '../assets/inc/header.php'; ?> <h3><?php echo $users['fullname']; ?></h3> <p><span><?php echo $users['username']; ?></span></p> <p><span><?php echo $users['email']; ?></span></p> <?php } else { // $_GET['id'] n'existe pas ou est vide, stockage d'un message d'erreur et redirection de l'utilisateur }
Ceets, il y a 8 ans

Salut Lartak !
Merci pour ta réponse.
J'ai essayé ton code, cela ne fonctionne toujours pas...
Je ne comprends pas, en principe c'est quelque chose de très simple et je bug la dessus...

Lartak, il y a 8 ans

Par contre je viens de remarquer que je n'avais pas modifié le nom de la variable users en user au niveau de l'affichage.
Par contre, que veux tu dire par :

ne fonctionne toujours pas...

Tu as une/des erreur(s) ?
Que se passe t'il exactement ?
Penses-tu as debug ton code pour voir d'où peut provenir le problème ?

Ceets, il y a 8 ans

Oui j'avais pris en compte ça quand je les tester...
J'ai bien fait les modifications et sa ne marche pas...
Je ne peux pas debug car je ne suis pas en localhost, je suis en ftp et ducoup je n'est pas au fichier log...

Lartak, il y a 8 ans

Je ne peux pas debug car je ne suis pas en localhost, je suis en ftp et ducoup je n'est pas au fichier log...

Attends, tu veux dire que tu fais du développement sans passer par la phase de développement, mais directement en phase de production ?
Quand tu fais du développement, tu commences par créer ton code et le tester en local avant de le passer en ligne.

neecride, il y a 8 ans

Perso j'aurais fait la requette comme suite, un prepare vaut mieux qu'un query !!! ça t'évite la variable dans une requète.

// $_GET pour un espace membre !?! je prendrai les variable de sessions c'est plus simple. $id = [intval($_GET['id'])]; //ceci est un array(intval($_GET['id'])); ou $id = [intval($_SESSION['auth']->id)]; //ceci est un array(intval($_SESSION['auth']->id)); $user = $db->prepare("SELECT * FROM users WHERE id = ?"); $user->execute($id); $users = $user->fetchObject();

Pour ta conexion je la ferai comme ça dans un fichier différent que tu pourra inclure et rendre ton code plus lisible :

<?php $dbhost = 'localhost'; $dbname = 'cms'; $dbuser = 'root'; $dbpswd = ''; try{ $db = new PDO('mysql:host=' . $dbhost . ';dbname='.$dbname,$dbuser,$dbpswd,array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' )); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);//ou FETCH_ASSOC $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //exception or WARNING }catch(Exception $e){ /* echo $e->getMessage(); */ die('Imopsible de ce connecter a la BDD'); }

c'est quand mêms mieux users->username que users['username'] enfin c'est une convention perso !!!