[php] Récupérer des infos un membre

Cyrius -  
 cyrius -
Bonjour, j'ai créer un systéme d'incription pr mon site où l'utilisateur donne plusieur infos ex: nom, prenom email, password etc ...
Ce que je voudrais faire, c'est qu'un fois connecté, il puisse modifier ses infos à volonter. Le probléme c'est que je ne sais pas comment faire pour qu'un fois que l'on connait 2 infos sur le membre, on puisse afficher le reste.

ps:
pour ma connexion en tant que membre, je vérifie que password et user entrés ds des boutons soient les memes que ds la bdd (post passord -> $table['password'] )

merci de toute réponse.

7 réponses

le père
 
Bonsoir

Ceux qui n'on pas suivi ton autre post riquent de ne pas comprendre pourquoi tu expliques (post passord -> $table['password'] )

Pour retrouver les autres infos sur un utilisateur, il faut qu'elles soient dans la base de données !
Suivant tes besoisn, tu peux :
soit les mettre dans la même table que celle qui a servi à l'dentification, auquel cas tu récupères les infos par $table['datenaissance'], etc.. simple et efficace, mais très limité.
soit mettre dans cette table un champ entier long non signé autoincrémenté qui fournira une clé. Une clé, c'est un numéro qui te permet de distinguer les utilisateurs les uns des autres. Chaque utilisateur doit avoir une et une seule clé. Quand l'utilisateur d'identifie, tu récupères cette clé par $table['idutilisateur'] (toujours si ta variable de lecture s'appelle $table...) et tu mémorises cette clé dans une variable de session (par exemple $_SESSION['idutilisateur']. Toutes les autres informations concernant cet utilisateur sont dans d'autres tables avec un champ dans lequel tu mettras une copie de cette clé pour dire que cette ligne concerne cet utilisateur. Ensuite tu extrais les infos par un "SELECT * FROM autretable WHERE iduser='".mysql_real_escape_string($iduser)."'"
0
Cyrius
 
ok ok
merci pour cette réponse!
je vais essayer ça dés que possible
0
Cyrius
 
bon en fait j'ai pas trés bien compris ce que tu fais.
voici le code de ma page :


....
</head>

<body>

<?php include("menu.php") ?>

<div id="content" >

<div id="contents">

<?php
if ((isset($_SESSION['password'])) AND (isset($_SESSION['email'] ))) //on teste si membre déjà connecté
{
?> <!-- Espace personnalisé pour modifier ses locations -->

<div id="donnees">

// c'est ici que je voudrais mettre les infos ($table[date] par exemple )

</div>

<?php

}
else // si le membre n'est pas conect, on affiche les boites email password
{
?>
<div id="password">
....

J'ai déjà créer le champ "id" qui s'auto incremente.
Donc j'ai $table[prenom] et $table[nom] de connu. Ce que je voudrai savoir c'est $table[date] qui si rattache.

Dans ton explication je ne comprends pas à quoi set '".mysql_real_escape_string($iduser)."
Et si je comprends bien, le "where" de " SELECT * FROM autretable WHERE iduser "ne permet de trouver les autres infos de la ligne de latable qu'à partir d'un champs "autoincrment" ?

Merci
0
le père
 
Bonjour

De quel $date parles-tu ? Il y avait une variable $table dans le script de validation, quand tu vérifiais email et password. A priori, il n'y en a pas dans ce script-ci.

Les données que tu veux afficher sont-elles dans la même table que l'email et le password, ou dans une table séparée ? As-tu une idée des conséquences de ce choix (table unique ou tables séparées) ?

La fonction 'mysql_real_escape string' sert à éviter des problèmes avec les caractères spéciaux dans les requêtes mysql. Par exemple
"SELECT * from table WHERE champ='$texte'"
Si texte contient une apostrophe pa exemple "l'exemple"
La requête devient
"SELECT * from table WHERE champ='l'exemple'"
MySQL va bien comprendre "SELECT * from table WHERE champ='l' mais il ne saura pas quoi faire du exemple qui traîne derrière. Cet exemple est anodin, mais en pratique c'est avec ce genre de truc que les pirates pénètrent dans les bases de données.

Quant au rôle du Where, c'est du mysql. Tu aurais dû l'utiliser dans ton script de validation , ça t'aurait évité de faire une boucle, mysql est beaucoup plus efficace que les comparaisons en PHP. Regarde la doc de Mysql pour la syntaxe et quelques exemples de SELECT avec WHERE, c'est le minimum à connaître.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cyrius
 
Le code que j'utilise :

while ($locations = mysql_fetch_array($reponse) ) //créé un tableau ordonné avec TOUT les membres,
{
if ( ($password == $locations['password']) AND ($email == $locations['email']))
{

$_SESSION['email'] = $email; //pseudo correct donc on garde le pseudo dans la var session
$_SESSION['password'] = $password; //mot de passe correct donc on garde le pass dans la var session

include("copyright.php") ;
exit(); //il faut arrêter la boucle ! sinon ca va se répéter
}
else
{
echo('denied');
include("copyright.php") ;
exit(); //il faut arrêter la boucle ! sinon ca va se répéter


en fait c'est $locations['date'] que je veux récupérer. Le "date" qui corresponde au password et email de l'utilisateur. Donc date,email et pasword sont sur la meme table. Mais je n'ai jamais rien lu sur la différence entre faire 1 ou plusieurs table .... (si tu pouvais m'expliquer ^^)
Et je vais voir la doc mysql, que je n'ai absolument jamais lu, je ne pensais qu'au php.
0
le père
 
Bonsoir cyrius

en fait c'est $locations['date'] que je veux récupérer
$_SESSION['date']=$locations['date'].

La différence entre avoir une et plusieurs tables ?
Considère que tu gères des commandes de tes clients. Tu as une table avec le nom, l'adresse, le numéro de téléphone etc... tout ce qui concerne le client dans une ligne.

Si tu veux mettre dans la même ligne une commande , tu prévois dans ta table des champs pour la date, le numéro de commande ...
Mais quand le client passe une seconde commande ? Tu ne vas pas encore rajouter des colonnes à ta table.
Une solution serait de rajouter uen ligne ou tu recopierais toutes les informations du client, plus celles de la nouvelle commande. On voit bien le gaspillage.

On utilise alors une deuxième table.
Dans la première, il n'y a rien qui concerne les commandes, c'est une table purement client. Il y a un champ auto-incrémenté qui fournit un numéro unique par client, une "clé".
On crée alors une deuxième table dans laquelle on retrouve un champ pour indiquer la clé du client qui a passé la commande, plus les colonnes pour le numéro de commande, la date...
0
cyrius
 
ok ok
jme demandais comment j'allais mettre plusieurs commande (par exemple) ...
Merci, je m'y met dés demain. (vive les gastro du weekend !!)
0