Modifier seulement un champ email dans un formulaire.
Résoluameb2908 Messages postés 95 Statut Membre -
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 compte désactivé - 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 ? )