Modifier seulement un champ email dans un formulaire.
Résoluameb2908 Messages postés 93 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'aimerais seulement modifier une valeur d'un champ email, malheureusement çà coince & j'ai même pas les messages d'erreurs.
Voici mon code :
class/Utilisateur.php
<?php class Utilisateur { protected $id; protected $pseudo; protected $mail; protected $mdp; protected static $error; const MSG_ERROR_ID = 'ID doit être un entier.'; const MSG_ERROR_PSEUDO = 'PSEUDO doit être une chaîne de caractères.'; const MSG_ERROR_MAIL = 'MAIL doit être une chaîne de caractères.'; const MSG_ERROR_MDP = 'MDP doit être une chaîne de caractères.'; const MSG_ERROR_END = 'L\'objet ne peut pas être créé'; public function __construct(array $data) { $this->setId($data['id']); $this->setPseudo($data['pseudo']); $this->setMail($data['mail']); $this->setMdp($data['mdp']); if(!empty(self::$error)) { throw new Exception(self::$error . self::MSG_ERROR_END); } } public function setError($msg) { self::$error = $msg; } public function getError() { return self::$error; } public function setId($id) { if((is_int($id)) AND ($id > 0)) { $this->id = $id; } else { $this->setError(self::MSG_ERROR_ID); } } public function setPseudo($pseudo) { if(is_string($pseudo)) { $this->pseudo = $pseudo; } else { $this->setError(self::MSG_ERROR_PSEUDO); } } public function setMail($mail) { if(is_string($mail)) { $this->mail = $mail; } else { $this->setError(self::MSG_ERROR_MAIL); } } public function setMdp($mdp) { if(is_string($mdp)) { $this->mdp = $mdp; } else { $this->setError(self::MSG_ERROR_MDP); } } public function getId() { return $this->id; } public function getPseudo() { return $this->pseudo; } public function getMail() { return $this->mail; } public function getMdp() { return $this->mdp; } } class Breve extends Utilisateur { const PSEUDO = NULL; const MDP = NULL; public function __construct(array $data) { $this->setId($data['id']); $this->setMail($data['mail']); if(!empty(parent::$error)) { throw new Exception(parent::$error . parent::MSG_ERROR_END); } } public function setPseudo($pseudo) { $this->pseudo = self::PSEUDO; } public function setMdp($mdp) { $this->mdp = self::MDP; } }
class/utilisateurManager.php
<?php class utilisateurManager { private $_db; public function __construct($db) { $this->setDb($db); } public function setDb(PDO $dbh) { $this->_db = $dbh; } public function updateUserData(Breve $user) { try { $sql = 'UPDATE utilisateur SET mail = :mail WHERE id = :id'; $rs_update = $this->_db->prepare($sql); $id = $user->getId(); $mail = $user->getMail(); $rs_update->bindParam(':id', $id); $rs_update->bindParam(':mail', $mail); $rs_update->execute(); } catch(PDOException $e) { echo 'Une erreur est survenue lors de la requête de mise à jour !'; echo '<br>'; echo 'Message d\'erreur : ' . $e->getMessage(); } } public function readUserMail($mail) { try { $sql = 'SELECT id, mail FROM utilisateur WHERE mail = :mail'; $rs_select = $this->_db->prepare($sql); $rs_select->execute(array( ':mail' => $mail )); $count = $rs_select->rowCount(); if($count > 0) { return true; } else { return false; } } catch(PDOException $e) { echo 'Une erreur est survenue lors de la requête de sélection !'; echo '<br>'; echo 'Message d\'erreur : ' . $e->getMessage(); } } public function readUserData($id) { try { $sql = 'SELECT id, pseudo, mail, date_creation, date_connexion, role FROM utilisateur WHERE id = :id'; $rs_select = $this->_db->prepare($sql); $rs_select->execute(array( ':id' => $id )); $user_data = $rs_select->fetch(PDO::FETCH_ASSOC); if(isset($user_data)) { return $user_data; } else { return false; } } catch(PDOException $e) { echo 'Une erreur est survenue lors de la requête de sélection !'; echo '<br>'; echo 'Message d\'erreur : ' . $e->getMessage(); } } }
process/process-update-profil.php
<?php session_start(); if(!isset($_SESSION['id'])) { header('Location: index.php'); exit; } $manager = new utilisateurManager($db); $user_mail = $manager->readUserData($_SESSION['id']); $mail = $user_mail['mail']; $regex_mail = '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-z]{2,3}$/'; if(isset($_POST['submit_form'])) { $mail = trim($mail); if($mail == $_SESSION['mail_form']) { return false; } elseif(empty($mail)) { $error_mail = '<p class="error_msg">Ce champ ne peut pas être vide !</p>'; } elseif(!preg_match($regex_mail, $mail)) { $error_mail = '<p class="error_msg">Format invalide pour ce mail !</p>'; } elseif($manager->readUserMail($mail)) { $error_mail = '<p class="error_msg">Ce mail est déjà pris !</p>'; } else { $current_user = $mail; $new_content = array('id' => (int) $current_user['id'], /*'pseudo' => $current_user['pseudo'], */'mail' => $current_user['mail']/*, 'mdp' => $current_user['mdp']*/); $user_to_update = new Breve($new_content); $user_to_update->setId($_SESSION['id']); $user_to_update->setMail($mail); if($manager->updateUserData($user_to_update)) { $error_mail = '<p class="success_msg">La mise à jour du mail ' . $mail . ' est effectuée.</p>'; $_SESSION['mail_form'] = $mail; header('Location: modifier-profil.php'); exit; } else { $error_mail = '<p class="error_msg">La mise à jour du mail ' . $mail . ' n\'est pas effectuée.</p>'; } } }
profil/modifier-profil.php
<?php require('../include/inc-connexion.php'); require('../class/Utilisateur.php'); require('../class/utilisateurManager.php'); require('../process/process-update-profil.php'); ?> <!doctype html> <html lang="fr"> <head> <title>Modifier mon compte</title> <meta charset="utf-8"> <?php require('include/inc-meta.php'); ?> <?php require('include/inc-link.php'); ?> </head> <body> <?php require('../include/inc-menu.php'); ?> <div class="container"> <div class="row"> <div class="col-3"></div> <div class="col-6"> <h1>Modifier mes informations</h1> <form method="post"> <div class="mb-3"> <input type="email" class="form-control" name="mail_form" value="<?php echo $mail; ?>" placeholder="Mail"> </div> <?php if(isset($error_mail)) echo $error_mail ?> <div class="mb-3"> <input type="submit" class="btn btn-primary" name="submit_form" value="Modifier"> </div> </form> <br> <form method="post"> <div class="mb-3"> <input type="password" class="form-control" name="pass_form" value="" placeholder="Mot de passe actuel"> </div> <div class="mb-3"> <input type="password" class="form-control" name="new_pass_form" value="" placeholder="Nouveau mot de passe"> </div> <div class="mb-3"> <input type="password" class="form-control" name="confirm_pass_form" value="" placeholder="Confirmation du mot de passe"> </div> <div class="mb-3"> <input type="submit" class="btn btn-primary" name="submit_form_two" value="Modifier"> </div> </form> </div> </div> </div> <?php require('../include/inc-footer.php'); ?>
include/inc-connexion.php
<?php $host = 'mysql:host=localhost; charset=utf8mb4; dbname=site2'; $user = 'root'; $pass = 'ameb@2908'; try { $db = new PDO($host, $user, $pass); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e) { echo 'Une erreur est survenue lors de la connexion ' . $e->getMessage(); }
Merci pour votre aide.
Windows / Chrome 117.0.0.0
- Modifier seulement un champ email dans un formulaire.
- Whatsapp formulaire opposition - Guide
- Modifier dns - Guide
- Comment creer un compte email - Guide
- Modifier liste déroulante excel - Guide
- Formulaire de réclamation facebook - Guide
5 réponses
Bonjour,
Tu veux modifier quel champ ? avec quelle(s) ligne(s) de code exactement ? ( la flemme de tout lire pour essayer de deviner ce que tu veux faire ! )
Bonjour, je reviens vers toi Jordan, malheureusement j'ai du m'absenter.
Entretemps, j'ai travailler sur le sujet, le champ Mail se met bien à jour mais j'ai pas les messages de succès ou d'erreurs.
Voici mon code :
process/process-update-profil.php
<?php $regex_mail = '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-z]{2,3}$/'; $manager = new utilisateurManager($db); if(isset($_POST['submit_form'])) { $mail_form = trim($_POST['mail_form']); if($mail_form == $_SESSION['mail_form']) { return false; } elseif(empty($mail_form)) { $error_mail = '<p class="error_msg">Ce champ ne peut pas être vide !</p>'; } elseif(!preg_match($regex_mail, $mail_form)) { $error_mail = '<p class="error_msg">Format invalide pour ce mail !</p>'; } elseif($manager->readUserMail($mail_form)) { $error_mail = '<p class="error_msg">Ce mail est déjà pris !</p>'; } else { $current_user = $manager->readUserData($_SESSION['id']); $new_content = array('id' => (int) $current_user['id'], 'pseudo' => $current_user['pseudo'], 'mail' => $current_user['mail'], 'mdp' => $current_user['mdp']); $user_to_update = new Utilisateur($new_content); $user_to_update->setId($_SESSION['id']); $user_to_update->setMail($mail_form); if(!$manager->updateUserData($user_to_update)) { $error_mail = '<p class="success_msg">La mise à jour du mail ' . $mail_form . ' n\'est pas effectuée.</p>'; $_SESSION['mail_form'] = $mail_form; header('Location: modifier-profil.php'); exit; } else { $error_mail = '<p class="error_msg">La mise à jour du mail ' . $mail_form . ' est effectuée.</p>'; } } }
<?php session_start(); require('../include/inc-connexion.php'); require('../include/inc-config.php'); require('../class/Utilisateur.php'); require('../class/utilisateurManager.php'); require('../process/process-update-profil.php'); if(!isset($_SESSION['id'])) { header('Location: index.php'); exit; } $manager = new utilisateurManager($db); $user_mail = $manager->readUserData($_SESSION['id']); $mail = $user_mail['mail']; } ?> <!doctype html> <html lang="fr"> <head> <title>Modifier mon compte</title> <?php require('../include/inc-meta.php'); ?> <?php require('../include/inc-link.php'); ?> </head> <body> <?php require('../include/inc-menu.php'); ?> <div class="container"> <div class="row"> <div class="col-3"></div> <div class="col-6"> <h1>Modifier mes informations</h1> <form method="post"> <div class="mb-3"> <input type="email" class="form-control" name="mail_form" value="<?php echo $mail; ?>" placeholder="Mail"> </div> <?php if(isset($error_mail)) echo $error_mail ?> <div class="mb-3"> <input type="submit" class="btn btn-primary" name="submit_form" value="Modifier"> </div> </form> <br> <form method="post"> <div class="mb-3"> <input type="password" class="form-control" name="pass_form" value="" placeholder="Mot de passe actuel"> </div> <div class="mb-3"> <input type="password" class="form-control" name="new_pass_form" value="" placeholder="Nouveau mot de passe"> </div> <div class="mb-3"> <input type="password" class="form-control" name="confirm_pass_form" value="" placeholder="Confirmation du mot de passe"> </div> <div class="mb-3"> <input type="submit" class="btn btn-primary" name="submit_form_two" value="Modifier"> </div> </form> </div> </div> </div> <?php require('../include/inc-footer.php'); ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Et à quel moment lis tu ce qui est envoyé par ton formulaire ( les variables $_POST ? )