Mysql + fonction update

Fermé
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 - 28 nov. 2008 à 16:03
aiacciu Messages postés 57 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 11 mai 2010 - 30 nov. 2008 à 18:55
Bonjour,

Voilà je suis en train de déveloper un petit script qui permet à un utilisateur de mettre à jour et de modifier certaines informations le conçernants telles que sa ville, son code postal, son pays, son adresse msn et autre. J'utilise pour celà la fonction update de mysql qui fonctionne d'ailleur trés bien. Mon soucis c'est que celle-ci me met à jour toute les colonnes de ma table et donc si l'utilisateur décide de ne pas remplir un champ qu'il avait remplis auparavant, bien se champs se retrouve avec aucune valeur d'affecter. Normal, update fais bien son boulot et le champ X qui ne contien aucune information et considéré comme nul donc met une valeur nulle dans ma BDD.

Ce qui me pose un problème car j'aimerais permettre a l'utilisateur de modifier une seule ligne de sa table si il le souhaite et pas le contraire a remplir tous le formulaire au cas ou il voudrait juste changer son adresse mail par exemple.

Je vous met mon code ci dessous :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Modififier votre profil</title>
<?php
session_start();
include ("../connection.php");
?>
</head>

<body>

<?php
if (isset($_POST['pays']) && (isset($_POST['ville']) && (isset($_POST['code_postal']) && (isset($_POST['msn']))))) {
$pays = mysql_real_escape_string($_POST['pays']);
$ville = mysql_real_escape_string($_POST['ville']);
$code_postal = mysql_real_escape_string($_POST['code_postal']);
$msn = mysql_real_escape_string($_POST['msn']);
$login= $_SESSION['login']; // Permet de récupérer l'identité de la personne qui modifie ses informations



//Requete permettant la mise à jour des infos du membre X représenté par la variable $login
mysql_query("UPDATE membre SET ville='$ville' , code_postal='$code_postal' , pays='$pays' , msn='$msn' WHERE login='$login'");
}

?>

<p>
Vous êtes logué sous <?php echo htmlentities(trim($_SESSION['login'])); ?>!<br />
Cette page vous permet de renseigner diverses informations vous conçernant. Ces informations seront
visibles par les membres. Et vous aurez bien sur la possibilité de les modifier à votre bon vouloir.
</p>

<h4>Informations personnelles :</h4>
<form id="modif_profil" name="modif" method="post" action="modifier_profil.php" />
Pays : <input type="text" name="pays" value="<?php if (isset($_POST['pays'])) echo htmlentities(trim($_POST['pays'])); ?>" /> <br />
Ville : <input type="text" name="ville" value="<?php if (isset($_POST['ville'])) echo htmlentities(trim($_POST['ville'])); ?>" /> <br />
Code Postal : <input type="text" name="code_postal" value="<?php if (isset($_POST['code_postal'])) echo htmlentities(trim($_POST['code_postal'])); ?>" /> <br />
MSN : <input type="text" name="msn" value="<?php if (isset($_POST['msn'])) echo htmlentities(trim($_POST['msn'])); ?>" /> <br />
<input type="submit" name="mofifier" value="Modifier">
</form>

<?php
mysql_close();
?>

<br />
<a href="deconnexion.php">Se déconnecter</a>

</body>
</html>


Merci de votre aide.
A voir également:

5 réponses

killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
28 nov. 2008 à 17:54
Oui, tu as était on ne peut plus claire, je tene ça et je tiens au courant en cas de problème.
Merci de ta réponse ;)
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
28 nov. 2008 à 18:15
Ok donc,

C'est cette partie qui me pose problème :

<form id="modif_profil" name="modif" method="post" action="modifier_profil.php" />
Pays : <input type="text" name="pays" value="" /> <br />
Ville : <input type="text" name="ville" value="" /> <br />
Code Postal : <input type="text" name="code_postal" value="" /> <br />
MSN : <input type="text" name="msn" value="" /> <br />
<input type="submit" name="mofifier" value="Modifier">
</form>

Je ne trouve pas quoi mettre entre le value="" pour qu'il m'affiche la valeur du champ qui corespond au membre logué sous la session en cours.

J'ai tenté de mettre value="<?php echo $pays; ?>" par exemple mais ca me renvoi :
<b>Notice</b>: Undefined variable: pays in <b>D:\EasyPHP 2.0b1\www\site\espace_membre\modifier_profil.php</b> on line <b>38</b><br />

Alors que la variable pays est définie plus haut comme ceci :
$pays = mysql_real_escape_string($_POST['pays']);

Donc voila si quelqu'un à une idée, je nage un peu sur ce coup là, merci encore.
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
29 nov. 2008 à 09:53
Merci de ta réponse, mais je n'arrives toujours pas à trouver la solution bien que je me doute qu'elle soit vraiment toute simple, j'ai tenté plusieurs chose mais rien n'y fait, je n'ai aucun affichage dans les champs de mon formulaire quand j'affiche ma page.

Merci de votre aide.
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
29 nov. 2008 à 15:56
Oui, mas base de donnée est créée, l'utilisateur peut s'enregistrer, et se connecter sans soucis tout en accédant à une page personelle.

L'utilisateur peut aussi modifier et rajouter des infos le conçernant sans problème.
Mon problème se situe au niveau de la commande update qui modifie même les champs de mon formulaire qui ne sont pas remplis par l'utilisateur, ce qui est normal.

Donc pour pallier a ce problème j'aimerais spécifier dans les champ ville pays etc ... la valeur qui leur est déjâ assigné dans la BDD avec un truc du genre value="<?php echo $pays ; ?>" histoire que quand l'utilisateur veut modifier un seul des champs, les autre ne soit pas remis à 0 et garde la valeur que l'utilisateur leur avait précédément donnée.

Merci encore j'espère avoir était le plus clair possible.

Cordialement,
0

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

Posez votre question
aiacciu Messages postés 57 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 11 mai 2010 3
30 nov. 2008 à 18:55
bonsoir,
Si j'étais toi, sur la page ou l'utilisateur fais la mise à jour tu affiche toute les données qu'ils sont dans la base, dans les champs.
tu fais :
$query="SELECT * FROM utilisateur WHERE id=(tu met l'id de l'utilisateur)";
$profils=mysql_query($query);


sur ta page au dessus de ton formulaire tu met :

while ($profil=(mysql_fetch_assoc($profils)) {

//la sur tes champs du met en valeur ce qui correspond dans la base un truc du style : <?=$profil['nom'] ?>



}

bon courage !
0