Afficher le profil d'un membre avec $_GET ?

Résolu/Fermé
rolly41 Messages postés 242 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 septembre 2023 - 5 févr. 2013 à 00:05
rolly41 Messages postés 242 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 septembre 2023 - 5 févr. 2013 à 13:52
Bonjour,

je souhaite afficher la page profil d'un membre, pour cela, j'ai actuellement ceci :
<a href="./profil.php?Que_dois-je_mettre_ici">Pseudo du membre</a>


La valeur du pseudo est incorrect.

Et que dois-je mettre dans ma page profil.php pour reprendre ce qui se trouve après le "?" et afficher le profil du membre concerné (et pas le profil du membre qui clique sur le lien)?

Merci d'avance.
A voir également:

2 réponses

Panoramix. Messages postés 2655 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 28 décembre 2016 1 096
Modifié par Panoramix. le 5/02/2013 à 00:27
Salut,

Tu dois mettre dans ton lien le nom de ta variable GET ainsi que sa valeur. Le plus simple est d'utiliser la clé primaire du profile et de la passer à ta page par GET. Au final tu auras un truc comme "...profil.php?id=1".

Dans ton script "profil.php" tu récupères ta variables GET ($_GET['id]) et tu fais un SELECT dans ta table contenant les profils avec comme condition ce que tu as reçu par GET.


Voilà !
0
rolly41 Messages postés 242 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 septembre 2023 1
Modifié par rolly41 le 5/02/2013 à 01:37
Pour afficher le profil du membre souhaité, j'ai trouvé ceci (dans profil.php ? ou avant le lien vers le profil) :
<?php  
       mysql_connect("localhost", "root", "");  
       mysql_select_db("site");  
       // Connexion à la bdd  
         
       $id = mysql_real_escape_string($_GET['id']);  

       $requete1 = mysql_query('SELECT pseudo, id FROM membres WHERE id = "'.$_GET['id'].'"')  
       or die (mysql_error());  
       // On récupère l'id du membre voulu pour consulter son profil via $_GET['id']  

       $data1 = mysql_fetch_assoc($requete1);  
       // Récupération de l'id et du pseudo dans la bdd (le pseudo du membre est visible dans le titre de la page)  
?>

Pour afficher l'id dans le lien, j'utilise donc
<a href="profil.php?id=<?php echo $_GET['id']; ?>">Pseudo du membre</a>


Pour afficher le profil du membre connecté, j'ai trouvé ceci (dans profil.php ? ou avant le lien vers le profil) :
<?php  
       mysql_connect("localhost", "root", "");  
       mysql_select_db("site");  
       // Connexion à la bdd  
       
       $id = mysql_real_escape_string($_SESSION['pseudo']);  
         
       $requete1 = mysql_query('SELECT id FROM membres WHERE pseudo = "'.$_SESSION['pseudo'].'"')  
       or die (mysql_error());  
       // On récupère l'id du membre connecté grâce à $_SESSION['pseudo']  

       $data1 = mysql_fetch_assoc($requete1);  
?>

Le lien de mon propre profil sera donc
<a href="profil.php?id=<?php echo $data1['id']; ?>">Voir mon profil</a>


J'utilise $_GET['id'] pour savoir si un membre est connecté. Si il n'est pas connecté, $_GET['id']= "0" par défaut, si il est connecté, l'id sera $_GET['id']=l'id du membre connecté.
Le $_GET['id'] ne risque pas de fausser le id du profil que je souhaite visiter ?
0
Panoramix. Messages postés 2655 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 28 décembre 2016 1 096
Modifié par Panoramix. le 5/02/2013 à 11:33
La première partie me semble correcte à première vue. Par contre, avant d'aller trifouiller dans ta base de données pour tirer les informations du profil, je ferai un petit test pour contrôler que la variable $_GET['id'] n'est pas vide ; ça évitera de te péter à la gueule si ton ID est vide !

Concernant la seconde partie, ça me semble OK, également.

Petite remarque : je te conseille fortement de créer une fonction qui te permet de te connecter à ta base de donnée. Un truc comme ça :
FUNCTION ConnectBDD() 
{ 
       mysql_connect("localhost", "root", "");   
       mysql_select_db("site");  
} 


L'avantage de ce système est qui si tu changes de serveur de base de données (par exemple), tu ne seras pas obligé de faire toutes les pages de ton site. Il te suffiras de modifier la fonction.

"J'utilise $_GET['id'] pour savoir si un membre est connecté. Si il n'est pas connecté, $_GET['id']= "0" par défaut, si il est connecté, l'id sera $_GET['id']=l'id du membre connecté.
Le $_GET['id'] ne risque pas de fausser le id du profil que je souhaite visiter ?
" : bien sûr que oui ! Il faut que cet ID corresponde à la clé primaire de ta table "profil". L'ID doit être un moyen infaillible pour identifier les membres en toutes circonstances ! Un UK (index unique) ne fonctionnera pas pour la simple raison que tu peux le modifier : donc bonjour les liens morts.

Quel est la structure de ta table ?


Voilà !
0
rolly41 Messages postés 242 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 septembre 2023 1
Modifié par rolly41 le 5/02/2013 à 12:12
Structure de la table :
id => int(11) => AI => primaire
login(utilisé uniquement pour ce connecter au site, non visible par les membres)
pseudo (visible par les membres)
passwd
mail
date_inscription
time_inscription
date_connexion
time_connexion
presentation
avatar

Chaque page on un include vers la page debut.php qui elle est appelé avant tout les autre code.
Dans cette page se trouve la connexion à la base de donnée, et dans la page pied.php se trouve mysql_clos();

Pour savoir si un membre est connecté, j'utilise maintenant :
$id=(isset($_SESSION['id']))?(int) $_SESSION['id']:0; 
$pseudo=(isset($_SESSION['login']))?$_SESSION['login']:'Invité';


En revanche, j'ai un petit problème pour mettre le lien dans une boucle :
<table width="98%" border="1">
             <tr>
               <td colspan="2" align="center">
<?php
$sql = 'SELECT id FROM membre ORDER BY id DESC LIMIT 1';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
echo '<i>Nous avons '.$data['id'].' membres inscrits</i><br>';
?>
                </td>
             </tr>
              <tr>
                <td align="center" width="33%">Membres</td><td align="center" width="34%">Inscrit le</td>
              </tr>
<?php
$sql = 'SELECT id, login,date FROM membre ORDER BY id DESC LIMIT 10';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
echo '<tr><td align="center"><a href="profil.php?id='.$date['id'].'"><font color="000099">'.htmlentities($data['login']).'</font></a></td><td align="center"><font color="000099">'.htmlentities($data['date']).'</font></td></tr>';
}
?>
           </table>
0
rolly41 Messages postés 242 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 septembre 2023 1
5 févr. 2013 à 13:52
Pour le lien vers le profil, c'est corrigé :)
<a href="profil.php?id='.htmlentities($data['id'], ENT_QUOTES, 'UTF-8').'">'.htmlentities($data['login']).'</a>
0