Modifier profil [Résolu]

pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 16 août 2012 à 01:02 - Dernière réponse : pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention
- 19 août 2012 à 02:38
Salut à tous,
J'ai un ptit souci concernant la modification des données en phpmysql
je veux que chaque utilisateur puisse modifier les données de son profil
j'ai procédé comme suit :

<?php
session_start();
?>
<?php
      
// on se connecte à la base de données
mysql_connect("localhost","root","");
mysql_select_db("gestioncv") or die('Impossible de selectionner une base de donnee. Assurez vous d\'avoir correctement remplit les donneess de 
connections.');

if(isset($_GET['idmembre']))
{
// On place dans une variable l'id transmit dans l'url
$idmembre = $_GET["idmembre"];

//On sélectionne tout dans la table correspondant à l'id
$result mysql_query("SELECT * FROM membre WHERE idmembre $idmembre");

$affiche_data= $result;
}
 ?>
 
<form action="modifier-profil.php?idmembre=<?php echo $idmembre;?>" method="post">

   nom:


    " type="text"/>


 
   prenom:


    " type="text"/>
   

 
 
</form>

 



<?php
//Si l'action de Modifier à été faite (bouton "Modifier" du formulaire)
if(isset($_POST["Modifier"]))
{
 
//On attribue une variable pour chaque champ du formulaire
//commentaire
$nom = mysql_real_escape_string($_POST["nom"]);
//email
$prenom = mysql_real_escape_string($_POST["prenom"]);


//On enregistre les données modifiées
$result = mysql_query(" UPDATE membre SET 
nom='$nom', 
prenom='$prenom'
WHERE idmembre = '$idmembre'
");
 
//Si il y a une erreur, on crie ^^
if (!$result) 
{
    die('Requête invalide : ' . mysql_error());
}
else 
{
//Si tout va bien, on informe que la modification est faite
echo 'La modification à été effectué avec succès. Retour à l\'admi
nistration.

';
}
// Fermeture de la connexion à la base de données
mysql_close();						 
 
//On ferme if(isset($_POST["Modifier"]))
}

?>





Voila les erreurs que j'ai :
Quand je ferme le if(isset($_GET['idmembre'])) à pret le formulaire rien ne s'affiche dans ma page web et quand je la ferme bien avant j'ai beaucoup d'erreur

Undefined variable: idmembre on line 80 Call Stack #TimeMemoryFunctionLocation 10.0010688496{main}( )..\modifier-profil.php:0 " method="post">

Notice: Undefined variable: affiche_data on line 83 Call Stack #TimeMemoryFunctionLocation 10.0010688496{main}( )..\modifier-profil.php:0 " type="text"/>

Notice: Undefined variable: affiche_data on line 87 Call Stack #TimeMemoryFunctionLocation 10.0010688496{main}( )..\modifier-profil.php:0 " type="text"/>

S'il vous plait quelqu'un pourra t-il m'aider à corriger mes erreurs et merci d'avances ^^
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 16 août 2012 à 10:41
3
Merci
lib.php
<?php
session_start();

mysql_connect('localhost', 'root', '');
mysql_select_db('gestioncv') or die('Impossible de sélectionner une base de données. Assurez-vous d\'avoir correctement rempli les infos de connexion.');
?>


modifier-profil.php
<?php
require_once('lib.php');

if(isset($_GET['idmembre']))
{
// On place dans une variable l'id transmit dans l'url
$idmembre = (int)$_GET['idmembre']; //anti-injections !

//On sélectionne tout dans la table correspondant à l'id
$result mysql_query("SELECT * FROM membre WHERE idmembre $idmembre");
$affiche_data  = mysql_fetch_assoc($result);
?>
<form action="modifier-profil.php?idmembre=<?php echo $idmembre;?>" method="post">
   nom:

" type="text" />


   prenom:

" type="text" />

 
   
</form>
<?php
}
//Si l'action de Modifier à été faite (bouton "Modifier" du formulaire)
else if(isset($_POST['Modifier']))
{
 
//On attribue une variable pour chaque champ du formulaire
//commentaire
$nom = mysql_real_escape_string($_POST['nom']);
//email
$prenom = mysql_real_escape_string($_POST['prenom']);

//TODO: filtrer XSS

//On enregistre les données modifiées
$result = mysql_query("UPDATE membre SET nom='$nom', prenom='$prenom' WHERE idmembre=$idmembre");
//Si il y a une erreur, on crie ^^
if (!$result) die('Requête invalide : ' . mysql_error());
//Si tout va bien, on informe que la modification est faite
echo 'La modification à été effectué avec succès. [gestion-abonne.php Retour à l\'administration.]

';
}

//Fermeture de la connexion à la base de données
mysql_close();
?>


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 17 août 2012 à 08:36
3
Merci
Oui, tu dois avoir ça dans la liste des membres.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 17 août 2012 à 19:09
3
Merci
Toujours certain que l'erreur se trouve dans l'autre script

Après le if(isset($_GET['idmembre'])), fais echo('idm=*'.$_GET['idmembre'].'*');
Si ça t'affiche idm=**, c'est que ton script qui a appelé la page est bogué.
[ce que je dis depuis le début, enfin soit...]

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 17 août 2012 à 19:17
3
Merci
Ca aurait été sympa de me le dire, ça ! Message à ignorer.
Dans ton php.ini, mets session.bug_compat_42 sur OFF.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 16 août 2012 à 13:32
0
Merci
Merci pour votre réponse mais malheureusement rien ne s'affiche dans la page :(

Pour cette condition if(isset($_GET['idmembre']))
la fonction isset() renvoie rien si la valeur est égal à NULL, donc false
Comment faire pour qu'elle ne renvoie plus la valeur null svp ^^
Commenter la réponse de pinkettee
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 16 août 2012 à 15:03
0
Merci
Si le paramètre GET n'est pas présent, il n'est pas NULL dans le tableau, il n'existe tout simplement pas. As-tu essayé de mettre des messages de debug ? Logiquement, ce paramètre ne doit jamais être omis quand cette page est appelée...

À quel moment la page est-elle blanche ?
As-tu copié/collé ce que j'ai mis ou seulement modifié quelques parties ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 16 août 2012 à 15:38
0
Merci
j'ai fait copier coller de tout le code que tu m'as donné mais en mettant tout dans un seul fichier

J'obtiens rien dans la page et meme dans l'url ca m'indique pas l'id du membre passé en parametre
genre comme ca "le_lien_vers_la_page.php?parametre1=valeur
dans l'url j'ai que ca : http://localhost/cv/modifier-profil.php
Commenter la réponse de pinkettee
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 16 août 2012 à 15:49
0
Merci
Je crois qu'il faut créer aussi un champ de formulaire caché qui va nous permettre de “sauvegarder” l'identifiant de la personne:

<form action="modifier-profil.php?idmembre=<?php echo $idmembre;?>" method="post">

">
 
   nom:

" type="text" />


   prenom:

" type="text" />

 
   
</form>


meme en ajoutant cette ligne : ">
rien ne change ^^
Commenter la réponse de pinkettee
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 16 août 2012 à 16:42
0
Merci
Pas besoin du champ caché (qui serait en POST à cause de ton form), vu qu'on le met dans l'URL du form. Le problème vient du script qui donne la liste des membres : il ne transmet pas dans l'URL l'id du membre...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 16 août 2012 à 22:36
0
Merci
J'ai fait un script pour l'authentification et apres le membre pourrai voir son profil ou bien de le modifier
et pour le fichier concernant de voir le profil j'ai pas utilisé l'idmembre j'ai mis :

$var=$_SESSION['email'];
$retourmysql_query("SELECT civilite, prenom, nom, email from membre  where email'$var'");


Pour avoir juste le profil de l'utilisateur qui vient de se connecter avec cet email puisque ce dernier est unique

J'ai voulu travailler avec la meme methode mais d'apres la documentation j'ai remarqué qu'il faut transmettre l'idmembre dans l'url...
Est ce qu'on ne pourrai pas mettre dans le meme fichier (celui de modifier-profil.php) le script qui transmet dans l'URL l'id du membre ?
Commenter la réponse de pinkettee
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 17 août 2012 à 02:37
0
Merci
Je commence à comprendre les choses...il faut que je code le lien de modifier pour que une fois que je clique dessus il me charge la page avec l'url ou il y a l'id du membre que je veux modifier son profil
Je dois pour cela procéder de cette manière :

[modifier-profil.php?idmembre=<?php echo $idmembre ?> Modifier profil]


Est ce ca qu'il manquait ? :)
Commenter la réponse de pinkettee
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 17 août 2012 à 18:35
0
Merci
Ok je l'ai fait maintenant et dans la page de la modification j'ai le formulaire qui s'affiche mais il me déclare une erreur

Voila le code :
<?php
      
// on se connecte à la base de données
mysql_connect("localhost","root","");
mysql_select_db("gestioncv") or die('Impossible de selectionner une base de donnee. Assurez vous d\'avoir correctement remplit les donneess de 
connections.');

if(isset($_GET['idmembre']))

{
$var=$_SESSION['idmembre'];
// On place dans une variable l'id transmit dans l'url
$var = (int)$_GET['idmembre']; //anti-injections !

//On sélectionne tout dans la table correspondant à l'id
$result mysql_query("SELECT * FROM membre WHERE idmembre $var");
$affiche_data  = mysql_fetch_assoc($result);
?>
<form action="modifier-profil.php?idmembre=<?php echo $idmembre;?>" method="post">
   nom:

" type="text" />


   prenom:

" type="text" />

 
   
</form>


L'erreur est : Undefined variable: idmembre in D:\Meryem\Projet_DreamWeaver\Fichier Sources\CV\HTML\modifier-profil.php on line 82 Call Stack #TimeMemoryFunctionLocation 10.0005688880{main}( )..\modifier-profil.php:0 " method="post">

Et pourtant j'ai fait le test sur l'existance de idmembre
Commenter la réponse de pinkettee
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 17 août 2012 à 18:49
0
Merci
Pourquoi avoir modifié le code que je t'ai filé ?
Il suffisait de modifier le script affichant la liste
<?php
//[...]
//$var=$_SESSION['idmembre']; //WTF? rien à faire ici.
//Et pourquoi avoir changé le nom de la variable ?
$idmembre= (int)$_GET['idmembre']; //anti-injections !
$result = mysql_query('SELECT * FROM membre WHERE idmembre='.$idmembre);
//[...]
?>

C'est pas en bidouillant sans savoir ce qu'on fait que ça ira mieux. Et des noms de variables parlants, c'est une bonne habitude à prendre et ça t'aidera à te replonger dans ton code plus tard si nécessaire.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 17 août 2012 à 18:52
0
Merci
Non non c'est bon j'ai réctifié ou j'avais l'erreur
j'ai modifié la ligne en <form action= "modifier-profil.php?idmembre=<?php echo $var;?>" method="post">
J'ai aucune erreur dans l'affichage mais le probleme c'est quand je clik sur le button modifier il me donne dans l'url modifier-profil.php?idmembre=0 et moi j'ai pas l'id =0 dans ma table ca veut dire qu'il ne récupère pas la vrai valeur, alors ? ^^
Commenter la réponse de pinkettee
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 17 août 2012 à 19:05
0
Merci
Oui mais quand j'ai laissé le code comme il est j'ai eu ce warning

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
Commenter la réponse de pinkettee
pinkettee 36 Messages postés mercredi 7 mars 2012Date d'inscription 10 février 2013 Dernière intervention - 19 août 2012 à 02:38
0
Merci
Salut,
Enfiin mon problème est résolu, effectivement comme vu l'avais dit l'erreur se trouvait dans le script de connexion j'avais pas initilisé la valeur de l'id de session...
Je tiens à te remercier pour l aide que tu m'as apporté du début jusqu'a la fin et pour les conseils que tu m'as donner. Merci encore une fois ^^
Commenter la réponse de pinkettee

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.