Page 1 sur 1

Aide Script (modification des informations d'un membre)

Posté : 19 juil. 2012, 19:14
par Grepher76380
Bonjour,

Après avoir résolut le problèmes pour les renvoi de mot de passe perdu voila mon soucis, j'ai modifier mon fichier et ma base de donnée pour ajoutée des champs (Nom, Prénom, Age, Ville) dans ma base de donnée et sur la page inscription j'ai modifier pour que a l'inscription sa l'inscrit dans la basse de donnée et tous fonctionne, mais j'ai pas encore bien comprit le systèmes des "UPDATE" donc voila après plusieurs test (sans réussite) je me retourne vers vous pour que vous puissiez m'aider à faire fonctionné mon code (est oui encore moi désolé)

Voici le code de ma page edit_membre :

Code : Tout sélectionner

<?php require('include.php'); protect(); $erm = array(); if(isset($_POST['sendmail'])){ $pseudo = $db->prepare("SELECT `id` FROM `users` WHERE `mail` = :mail ;"); $pseudo->execute(array("mail"=>$_POST['mail'])); if($pseudo->rowCount()){ $erm[] = "L'e-mail \"".htmlspecialchars($_POST['mail'])."\" est déjà utilisé."; } if(!filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)){ $erm[] = "L'e-mail entré est invalide."; } if(empty($erm)){ $mail_edit = $db->prepare("UPDATE `users` SET `mail`= :mail WHERE `id`= :id LIMIT 1;"); $mail_edit->execute(array( "mail" => $_POST['mail'], "id" => $_SESSION['users']->id )); redirect("empty_jeton.php?logout"); } } if(isset($_POST['sendmdp'])){ if($_POST['mdp']!=$_POST['mdp2']){ $erm[] = "Les deux mots de passes ne sont pas identique."; } if(strlen($_POST['mdp'])<6){ $erm[] = "Le mot de passe doit faire au moins 6 caractères"; } if($_POST['mdp']==$_SESSION['users']->pseudo){ $erm[] = "Le mot de passe doit être différent du pseudo"; } if(empty($erm)){ $mdp_edit = $db->prepare("UPDATE `users` SET `mdp`= :mdp WHERE `id`= :id LIMIT 1;"); $mdp_edit->execute(array( "mdp" => base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(key_encrypt), $_POST['mdp'], MCRYPT_MODE_CBC, md5(md5(key_encrypt)))), "id" => $_SESSION['users']->id )); $empty = $db->prepare("DELETE FROM `jetons` WHERE `id_users`= :id;"); $empty->execute(array( "id" => $_SESSION['users']->id )); redirect("empty_jeton.php?logout"); } } if(isset($_POST['sendip'])){ $ip_edit = $db->prepare("UPDATE `users` SET `ip`= :ip WHERE `id`= :id LIMIT 1;"); $ip_edit->execute(array( "ip" => $_SERVER['REMOTE_ADDR'], "id" => $_SESSION['users']->id )); redirect("empty_jeton.php?logout"); } ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Modifier le profil</title> <link href="style/style.css" rel="stylesheet" type="text/css"> </head> <body> <div class="content" > <?php if(!empty($erm) and isset($erm)){ ?> <div class="error" > <?php foreach($erm as $a=>$b){ echo "- ".$b."<br>"; } ?> </div> <?php } ?> <h2>Modifier le profil</h2> <form action="edit_users.php" method="post" dir="ltr" lang="fr"> <p> <label>Adresse mail:<br> <input name="mail" type="mail" value="<?php echo $_SESSION['users']->mail; ?>" dir="ltr" lang="fr"> </label> </p> <p> <input name="sendmail" type="submit" value="Modifer"> </p> </form> <hr> <form action="edit_users.php" method="post" dir="ltr" lang="fr"> <p> <label>Mot de passe:<br> <input name="mdp" type="password" dir="ltr" lang="fr"> </label> </p> <p> <label>Mot de passe:<br> <input name="mdp2" type="password" dir="ltr" lang="fr"> </label> </p> <p> <input name="sendmdp" type="submit" value="Modifer"> </p> </form> <hr> <form action="edit_users.php" method="post" dir="ltr" lang="fr"> <p> <?php if($_SESSION['users']->ip==$_SERVER['REMOTE_ADDR']){ echo '<div class="succes">Cet ordinateur est utilisé par défaut</div>'; }else{ echo '<div class="error" >Cet ordinateur n\'est pas utilisé par défaut</div>'; } ?> </p> <p> <input name="sendip" type="submit" value="Définir cet ordinateur par défaut"> </p> </form> <p><a href="index.php">Retour à l'acceuil</a></p> </div> </body> </html>

Voici mon dossier Inscription.php :

Code : Tout sélectionner

<?php require('include.php'); ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Inscription</title> <link rel="stylesheet" href="style/style.css"> </head> <body> <div class="content"> <h2>Inscription</h2> <?php if(isset($_POST['send'])){ $erm = array(); $pseudo = $db->prepare("SELECT `id` FROM `users` WHERE `pseudo` = :pseudo ;"); $pseudo->execute(array("pseudo"=>$_POST['pseudo'])); if($pseudo->rowCount()){ $erm[] = "Le pseudo \"".htmlspecialchars($_POST['pseudo'])."\" est déjà utilisé."; } if(strlen($_POST['pseudo'])<4){ $erm[] = "Le pseudo doit faire au moins 4 caractères"; } $pseudo = $db->prepare("SELECT `id` FROM `users` WHERE `mail` = :mail ;"); $pseudo->execute(array("mail"=>$_POST['mail'])); if($pseudo->rowCount()){ $erm[] = "L'e-mail \"".htmlspecialchars($_POST['mail'])."\" est déjà utilisé."; } if(!filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)){ $erm[] = "L'e-mail entré est invalide."; } if($_POST['mdp']!=$_POST['mdp2']){ $erm[] = "Les deux mots de passes ne sont pas identique."; } if(strlen($_POST['mdp'])<6){ $erm[] = "Le mot de passe doit faire au moins 6 caractères"; } if($_POST['mdp']==$_POST['pseudo']){ $erm[] = "Le mot de passe doit être différent du pseudo"; } $nom = $db->prepare("SELECT `id` FROM `users` WHERE `nom` = :nom ;"); $nom->execute(array("nom"=>$_POST['nom'])); if($nom->rowCount()){ $erm[] = "Merci de remplir le champ Nom"; } $prenom = $db->prepare("SELECT `id` FROM `users` WHERE `prenom` = :prenom ;"); $prenom->execute(array("nom"=>$_POST['prenom'])); if($prenom->rowCount()){ $erm[] = "Merci de remplir le champ Prénom"; } $age = $db->prepare("SELECT `id` FROM `users` WHERE `age` = :age ;"); $age->execute(array("nom"=>$_POST['age'])); if($age->rowCount()){ $erm[] = "Merci de remplir le champ Age"; } $ville = $db->prepare("SELECT `id` FROM `users` WHERE `ville` = :ville ;"); $ville->execute(array("nom"=>$_POST['ville'])); if($ville->rowCount()){ $erm[] = "Merci de remplir le champ Ville"; } if(empty($erm)){ $_POST['mdp'] = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(key_encrypt), $_POST['mdp'], MCRYPT_MODE_CBC, md5(md5(key_encrypt)))); $signup = $db->prepare("INSERT INTO `users` (`pseudo`, `mail`, `mdp`, `ip`, `nom`, `prenom`, `age`, `ville`) VALUES ( :pseudo , :mail , :mdp , :ip , :nom , :prenom , :age , :ville );"); $signup->execute(array( "pseudo" => $_POST['pseudo'], "mail" => $_POST['mail'], "mdp" => $_POST['mdp'], "ip" => $_SERVER['REMOTE_ADDR'], "nom" => $_POST['nom'], "prenom" => $_POST['prenom'], "age" => $_POST['age'], "ville" => $_POST['ville'] )); $idc = $db->prepare("SELECT `id` FROM `users` WHERE `pseudo` = :pseudo LIMIT 1;"); $idc->execute(array("pseudo" => $_POST['pseudo'])); $id = $idc->fetch(); $active_link = dirname("http://".$_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"])."/active.php?key=".($id['id']).'_'.uniqid(time()); $message = "Bienvenue sur l'espace membre de .: Miki-HeberG :.<br>"; $message = "Vous êtes prié de conserver cet e-mail dans vos archives. Voici les informations concernant votre compte:<br>"; $message = "----------------------------<br>"; $message = "Votre Speudo: .$speudo<br>"; $message = "Votre mot de Passe: .$mdp<br>"; $message = "----------------------------<br>"; $message = "Visitez le lien suivant afin d'activer votre compte: <a href=\"$active_link\">$active_link</a><br>"; $message = "Votre mot de passe a été stocké de manière sécurisée dans notre base de données. Dans le cas où vous l'auriez oublié, vous pourrez le retrouvez en utilisant l'adresse e-mail associée à votre compte.<br>"; $message = "Merci de vous être enregistré.<br>"; $headers = "From: ".company_name."<".company_mail.">\n"; $headers .= "Reply-To: ".company_mail."\n"; $headers .= "Content-Type: text/html; charset=\"iso-8859-1\""; mail($_POST['mail'],"Activation de votre compte [".company_name."]",$message,$headers); echo "<div class=\"succes\">Vous avez bien été inscrit.<br><small>Un mail de confirmation vient de vous être envoyé.</small></div>"; } } if(!empty($erm) and isset($erm)){ ?> <div class="error" > <?php foreach($erm as $a=>$b){ echo "- ".$b."<br>"; } ?> </div> <?php } ?> <form action="sign_up.php" method="post" dir="ltr" lang="fr"> <p> <label>Speudo:<br><input name="pseudo" type="text" required="required"></label> </p> <p> <label>Mot de passe:<br><input name="mdp" type="password" required="required"></label> </p> <p> <label>Mot de passe:<br><input name="mdp2" type="password" required="required"></label> </p> <p> <label>E-mail:<br><input name="mail" type="email" required="required"></label> </p> <p> <label>Nom:<br><input name="nom" type="text" required="required"></label> </p> <p> <label>Prénom:<br><input name="prenom" type="text" required="required"></label> </p> <p> <label>Age:<br><input name="age" type="text" required="required"></label> </p> <p> <label>Ville:<br><input name="ville" type="text" required="required"></label> </p> <p> <input name="send" type="submit" value="Inscription"> </p> </form> </body> </html>
Et voici un petit "Topo" de se que je voudrait (évidemment si vous acceptez toujours de m'aider):

- Un champs Nom (avec un update pour la base de donnée, un message d'erreur "Merci de remplir le champ Nom")
- Un champs Prénom (avec un update pour la base de donnée, un message d'erreur "Merci de remplir le champ Prénom")
- Un champs Age (avec un update pour la base de donnée, un message d'erreur "Merci de remplir le champ Age")
- Un champs Ville (avec un update pour la base de donnée, un message d'erreur "Merci de remplir le champ Ville")

EDIT: Fichier à modifier (Edit_user)

Re: Aide Script (modification des informations d'un membre)

Posté : 20 juil. 2012, 10:28
par moogli
salut,

qu'as tu fait exactement et qu'est ce qui ne fonctionne pas ?

Tu ne sais pas faire une requête UPDATE ? (il y en a pourtant dans ton code).

montre nous juste le formulaire que tu utilise et le code de validation de ce formulaire. tu peux aussi tester ce formulaire dans une page a part pour ne pas être "pollué" par le reste et faciliter la chose ;)

+

Re: Aide Script (modification des informations d'un membre)

Posté : 20 juil. 2012, 12:56
par Grepher76380
Bonjour Moogli,

Alors j'ai fait la page Inscription.php tous fonctionne. (Ajout des champs : Nom, Prénom, Age, Ville) "inscription dans la base de donnée".

Est sur la page edit_membre je voudrait ajouté les champs "Nom, Prénom, Age, Ville". Pour que mais membre modifie les champs "Nom, Prénom, Age, Ville" Sur la base de donnée.

Mais j'ai un problèmes avec les "update" sur la page "edit_membre" (je vous redonne le code il et pas d'origine).

Non Je ne c'est sais pas faire une requête UPDATE (Le script je les trouvée sur internet donc les requêtes "UPDATE" qui sont dessus il y était déjà, justement j'ai voulu faire un copier coller et modifier les requêtes mais sans succès car je ne connait pas le php (enfin juste les bases).

Je vous redonne que la page edit_membre.php:

Code : Tout sélectionner

<?php require('include.php'); protect(); $erm = array(); if(isset($_POST['sendmail'])){ $pseudo = $db->prepare("SELECT `id` FROM `users` WHERE `mail` = :mail ;"); $pseudo->execute(array("mail"=>$_POST['mail'])); if($pseudo->rowCount()){ $erm[] = "L'e-mail \"".htmlspecialchars($_POST['mail'])."\" est déjà utilisé."; } if(!filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)){ $erm[] = "L'e-mail entré est invalide."; } if(empty($erm)){ $mail_edit = $db->prepare("UPDATE `users` SET `mail`= :mail WHERE `id`= :id LIMIT 1;"); $mail_edit->execute(array( "mail" => $_POST['mail'], "id" => $_SESSION['users']->id )); redirect("empty_jeton.php?logout"); } } if(isset($_POST['sendmdp'])){ if($_POST['mdp']!=$_POST['mdp2']){ $erm[] = "Les deux mots de passes ne sont pas identique."; } if(strlen($_POST['mdp'])<6){ $erm[] = "Le mot de passe doit faire au moins 6 caractères"; } if($_POST['mdp']==$_SESSION['users']->pseudo){ $erm[] = "Le mot de passe doit être différent du pseudo"; } if(empty($erm)){ $mdp_edit = $db->prepare("UPDATE `users` SET `mdp`= :mdp WHERE `id`= :id LIMIT 1;"); $mdp_edit->execute(array( "mdp" => base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(key_encrypt), $_POST['mdp'], MCRYPT_MODE_CBC, md5(md5(key_encrypt)))), "id" => $_SESSION['users']->id )); $empty = $db->prepare("DELETE FROM `jetons` WHERE `id_users`= :id;"); $empty->execute(array( "id" => $_SESSION['users']->id )); redirect("empty_jeton.php?logout"); } } if(isset($_POST['sendip'])){ $ip_edit = $db->prepare("UPDATE `users` SET `ip`= :ip WHERE `id`= :id LIMIT 1;"); $ip_edit->execute(array( "ip" => $_SERVER['REMOTE_ADDR'], "id" => $_SESSION['users']->id )); redirect("empty_jeton.php?logout"); } ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Modifier le profil</title> <link href="style/style.css" rel="stylesheet" type="text/css"> </head> <body> <div class="content" > <?php if(!empty($erm) and isset($erm)){ ?> <div class="error" > <?php foreach($erm as $a=>$b){ echo "- ".$b."<br>"; } ?> </div> <?php } ?> <h2>Modifier le profil</h2> <form action="edit_users.php" method="post" dir="ltr" lang="fr"> <p> <label>Adresse mail:<br> <input name="mail" type="mail" value="<?php echo $_SESSION['users']->mail; ?>" dir="ltr" lang="fr"> </label> </p> <p> <input name="sendmail" type="submit" value="Modifer"> </p> </form> <hr> <form action="edit_users.php" method="post" dir="ltr" lang="fr"> <p> <label>Mot de passe:<br> <input name="mdp" type="password" dir="ltr" lang="fr"> </label> </p> <p> <label>Mot de passe:<br> <input name="mdp2" type="password" dir="ltr" lang="fr"> </label> </p> <p> <input name="sendmdp" type="submit" value="Modifer"> </p> </form> <hr> <form action="edit_users.php" method="post" dir="ltr" lang="fr"> <p> <?php if($_SESSION['users']->ip==$_SERVER['REMOTE_ADDR']){ echo '<div class="succes">Cet ordinateur est utilisé par défaut</div>'; }else{ echo '<div class="error" >Cet ordinateur n\'est pas utilisé par défaut</div>'; } ?> </p> <p> <input name="sendip" type="submit" value="Définir cet ordinateur par défaut"> </p> </form> <p><a href="index.php">Retour à l'acceuil</a></p> </div> </body> </html>
Cordialement grepher76380.

Re: Aide Script (modification des informations d'un membre)

Posté : 20 juil. 2012, 13:16
par xTG
Tu nous balances une quantité de ligne que tu comprends pas, je ne vois donc aucun souci à te balancer une quantité de lien pour apprendre à comprendre.
Récupérer les valeurs d'un formulaire
Les structures de contrôles
MySQL : SELECT et INSERT
MySQL : DELETE et UPDATE
MySQL : clause WHERE
Bon courage.

Re: Aide Script (modification des informations d'un membre)

Posté : 20 juil. 2012, 21:03
par Grepher76380
Bonsoir,

Après avoir cherché avec les lien de XTG j'ai fait se code :

Code : Tout sélectionner

if(isset($_POST['sendinfo'])){ $nom = $db->prepare("SELECT `id` FROM `users` WHERE `nom` = :nom ;"); $nom->execute(array("nom"=>$_POST['nom'])); if($nom->rowCount()){ $erm[] = "Merci de remplir le champ Nom"; } if(empty($erm)){ $mail_edit = $db->prepare("UPDATE `users` SET `nom`= :nom WHERE `id`= :id LIMIT 1;"); $mail_edit->execute(array("nom" => $_POST['nom'], "id" => $_SESSION['users']->id)); redirect("empty_jeton.php?logout"); } $prenom = $db->prepare("SELECT `id` FROM `users` WHERE `prenom` = :prenom ;"); $prenom->execute(array("prenom"=>$_POST['prenom'])); if($prenom->rowCount()){ $erm[] = "Merci de remplir le champ Prenom"; } if(empty($erm)){ $mail_edit = $db->prepare("UPDATE `users` SET `prenom`= :prenom WHERE `id`= :id LIMIT 1;"); $mail_edit->execute(array("prenom" => $_POST['prenom'], "id" => $_SESSION['users']->id)); redirect("empty_jeton.php?logout"); } $age = $db->prepare("SELECT `id` FROM `users` WHERE `age` = :age ;"); $age->execute(array("age"=>$_POST['age'])); if($age->rowCount()){ $erm[] = "Merci de remplir le champ Age"; } if(empty($erm)){ $mail_edit = $db->prepare("UPDATE `users` SET `age`= :age WHERE `id`= :id LIMIT 1;"); $mail_edit->execute(array("age" => $_POST['age'], "id" => $_SESSION['users']->id)); redirect("empty_jeton.php?logout"); } $ville = $db->prepare("SELECT `id` FROM `users` WHERE `ville` = :ville ;"); $ville->execute(array("ville"=>$_POST['ville'])); if($ville->rowCount()){ $erm[] = "Merci de remplir le champ Age"; } if(empty($erm)){ $mail_edit = $db->prepare("UPDATE `users` SET `ville`= :ville WHERE `id`= :id LIMIT 1;"); $mail_edit->execute(array("ville" => $_POST['ville'], "id" => $_SESSION['users']->id)); redirect("empty_jeton.php?logout"); } }
Pouvait vous me dire si cela et bon ? ( en tous cas cela fonctionne )

Cordialement Grepher76380.

Re: Aide Script (modification des informations d'un membre)

Posté : 21 juil. 2012, 00:01
par xTG
Tes messages d'erreur ne conviennent pas à ce que tu vérifies.
// pour vérifier que l'info postée n'est pas vide
if( empty($_POST['age']) )
  $erm[] = "Merci de remplir le champ Age";

// pour vérifier que l'info postée n'existe pas déjà en bdd
$res= $db->prepare("SELECT count(`id`) AS `count` FROM `users` WHERE `prenom` = :prenom ;");
$res->execute(array("prenom"=>$_POST['prenom']));
if($r = $res->fetch()){
  if( $r['count'] > 0 )
    $erm[] = "Ce prénom est déjà utilisé.";
}
Je préfère utiliser un count() plutôt que la fonction rowCount() car cette dernière ne fonctionne pas avec tous les drivers.

Re: Aide Script (modification des informations d'un membre)

Posté : 21 juil. 2012, 11:04
par Grepher76380
Bonjour,

Merci Xtg

Cordialement grepher76.