pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013
-
16 août 2012 à 01:02
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013
-
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 ^^
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 16 août 2012 à 10:41
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
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 17 août 2012 à 19:09
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
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 16 août 2012 à 13:32
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 ^^
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 16 août 2012 à 15:03
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
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 16 août 2012 à 15:38
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
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 16 août 2012 à 16:42
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
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 16 août 2012 à 22:36
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 ?
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 17 août 2012 à 02:37
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 :
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 17 août 2012 à 18:35
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
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 17 août 2012 à 18:49
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
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 17 août 2012 à 18:52
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 ? ^^
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 17 août 2012 à 19:05
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
pinkettee
Messages postés36Date d'inscriptionmercredi 7 mars 2012StatutMembreDernière intervention10 février 2013 19 août 2012 à 02:38
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 ^^