Page 1 sur 1

zone membre: modifier ses infos

Posté : 08 févr. 2006, 01:03
par - HXSS -
Bonsoir le peuple PHPien : x

Je suis en train de me questionner sur le fonctionnement et je suis un peu dans le flou.. mais je suis illogique donc ça ne m'étonne pas

quand un membre veut modifier ses infos, avant de faire l'UPDATE je regarde si le pseudo qu'il a choisit existe déjà voire s'il veut pas prendre la place d'un autre, si le pseudo n'existe pas c'est bon..
mais lorsque ce même membre change ses infos sans changer son pseudo, je teste toujours avant l'update sauf que là son pseudo est déjà dans ma requête sql donc il peut pas modifier ses infos quand il garde son pseudo original

d'où ma question comment ça se passe ?!?
ha oui aussi au niveau de l'update faut tout mettre à jour ou uniquement les infos qu'il a changé ?

sur ce jvais dormir, la nuit me portera peut être conseil (mais n'hésitez pas à poster je la sens pas trop cette nuit..)

Posté : 08 févr. 2006, 01:31
par albat
Il est impératif que tu aies au moins une donnée qui soit pas modifiable.
Sinon, tu ne t'y retrouveras plus.

En générale, (presque) tous les champs peuvent être modifiés, sauf le pseudo.

Il n'y a donc aucune difficulté pour mettre à jour les infos d'un membre qui conserve son pseudo.
:idea: Dans ta requête UPDATE, tu n'indiques que les champs dont les valeurs changent.

Dans l'exemple suivant,
champ1 qui contient les pseudos, reste inchangé.
champ2 et champ4 sont mis à jour avec de nouvelles valeurs.
champ3 reste inchangé.
$req = "UPDATE table SET champ2 = '".$nouv_2."', champ4 = '".$nouv_4."' WHERE champ1 = '".$pseudo."'";

Posté : 08 févr. 2006, 08:25
par mario
Pour accéder à la zone membre de ton script, l'utilisateur doit être autentifié ?
si c'est le cas, personnellement, une fois connecté, l'ID de ma table 'utilisateur' est stocké dans une variable de session.
Si l'utilisateur souhaite modifier son profil, je fais tout de suite un UPDATE de la table car je suis certain que l'utilisateur existe bien (sinon il ne peut pas se connecter).

Cela rejoint ce que dit albat
En générale, (presque) tous les champs peuvent être modifiés, sauf le pseudo.
Le principe reste donc le même:
$req = "UPDATE table SET champ2 = '".$nouv_2."', champ4 = '".$nouv_4."' WHERE id = '".$_SESSION['id_utilisateur']."'";
J'espère que ça pourra t'aider :wink:

EDIT par moi même:
complément d'info sur les sessions:
http://cyberzoide.developpez.com/php4/faqsession/

Posté : 08 févr. 2006, 12:38
par - HXSS -
Merci de vos réponses mais c'est toujours pas clair dans ma tête : s

l'idée que le membre garde son pseudo ne me dérange pas mais j'ai le même soucis pour son email je suppose vu que j'autorise qu'un compte par email
pour résumer la situation un membre se logue, je passe son pseudo en variable de session, il va sur la page modif.php =>
        // on reprend les infos du membre par rapport à son Pseudo
        $sqlinfo = 'SELECT * FROM membre WHERE pseudo="'.addslashes($_SESSION['pseudo']).'"';
        $reqinfo = mysql_query($sqlinfo) or die('Erreur SQL !<br />'.$sqlinfo.'<br />'.mysql_error());
        $datainfo = mysql_fetch_array($reqinfo);
et j'affiche les infos avec $datainfo[2] ... 3,4,5,6 etc...

pour updater uniquement les infos qu'il a changé faut faire des tests dans la requête sql UPDATE ??
du genre
if ($_POST['nom'] != $datainfo[4]) { echo 'champ4 = \'".$_POST[\'nom\']."\' ' }