Astolpho
Messages postés73Date d'inscriptionvendredi 8 avril 2022StatutMembreDernière intervention12 juin 2024
-
Modifié le 15 juil. 2022 à 14:36
yg_be
Messages postés23474Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention19 février 2025
-
15 juil. 2022 à 16:07
Bonjour,
Sur une page de fonction qui crée, met à jour et supprime un contact, j'ai la fonction de vérification d'email qui me bloque la création ou la suppression du contact. ça fonctionne uniquement sur le update.
J'ai toujours le message d'erreur, "votre email n'et pas valide" alors que lors de la création d'un contact je ne met que le nom et prénom, l'email n'est pas concerné.
<?phpif(session_status()== PHP_SESSION_NONE){session_start();}//---------------------------------------------------------------////connexion à la bdd// A lire et à appliquer avant de poursuivre :// http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs//---------------------------------------------------------------//require_once('../inc/connexion.php');//---------------------------------------------------------------//// On va découper ton code en "fonctions"// ça le rendra plus lisible et plus facile// à maintenir ou à faire évoluer//---------------------------------------------------------------///** * Fonction pour insérer un customer ( je te le donne en exemple...) */functioncreaCustomer($showin,$id){$db=getDB();$sql="INSERT INTO customers ( showin, id) VALUES (:showin, :id)";
try{// Prepare statement$stmt=$db->prepare($sql);$stmt->bindParam(':showin',$showin);$showin=ucwords($showin);$stmt->bindParam(':id',$id);// execute query$stmt->execute();// on récupère l'id du customer créé : https://www.php.net/manual/fr/pdo.lastinsertid.php$id=$db->lastInsertId();return$id;}catch(Exception $e){echo"Erreur dans la requête ".$sql;echo$e->getMessage();exit;}}/** Fonction pour mettre à jour */functionupdCustomers($id_customers,$showin,$email,$mobile=""){$db=getDB();$sql="UPDATE customers SET showin=:showin ,email=:email ,mobile=:mobile WHERE id_customers=:id_customers AND ".$_SESSION['auth']->id." =customers.id";
try{// Prepare statement$stmt=$db->prepare($sql);$showin=ucwords($showin);$stmt->bindParam(':showin',$showin);$email=strtolower($email);$stmt->bindParam(':email',$email);$stmt->bindParam(':mobile',$mobile);$stmt->bindParam(':id_customers',$id_customers);// execute queryreturn$stmt->execute();}catch(Exception $e){echo"Erreur dans la requête ".$sql;echo$e->getMessage();exit;}}/** Fonction pour mettre à jour le clients (pour le désactiver) */functiondelCustomer($id_customers,$state){$db=getDB();
try {$sql="UPDATE customers SET state='2' WHERE id_customers='$id_customers'";// Prepare statement$stmt=$db->prepare($sql);$stmt->bindParam(':id_customers',$id_customers);$stmt->bindParam(':state',$state);// execute query$stmt->execute();}catch(Exception $e){echo"Erreur dans la requête ".$sql;echo$e->getMessage();exit;}}/** Fonction pour récupérer l'id d'un customer via son "firstname" */functiongetCustomerByfirstName($firstname){$db=getDB();$sql='SELECT id_customers FROM customers WHERE firstname = ?';
try{$stmt=$db->prepare($sql);$stmt->execute(array($firstname));$resultat=$stmt->fetchColumn();// https://www.php.net/manual/fr/pdostatement.fetchcolumn.phpreturn$resultat;}catch(Exception $e){echo"Erreur dans la requête ".$sql;echo$e->getMessage();exit;}}/** Fonction pour récupérer l'id d'un customer via son "lastname" */functiongetCustomerByLastName($lastname){$db=getDB();$sql='SELECT id_customers FROM customers WHERE lastname = ?';
try{$stmt=$db->prepare($sql);$stmt->execute(array($lastname));$resultat=$stmt->fetchColumn();// https://www.php.net/manual/fr/pdostatement.fetchcolumn.phpreturn$resultat;}catch(Exception $e){echo"Erreur dans la requête ".$sql;echo$e->getMessage();exit;}}/** Fonction pour récupérer l'id d'un customer via son "email" function getCustomerByEmail($email){ $db = getDB(); $sql = 'SELECT id_customers FROM customers WHERE email = ?'; try{ $stmt = $db->prepare ($sql); $stmt->execute(array($email)); $resultat = $stmt->fetchColumn(); // https://www.php.net/manual/fr/pdostatement.fetchcolumn.php return $resultat; }catch(Exception $e){ echo "Erreur dans la requête " . $sql; echo $e->getMessage(); exit; } } *///---------------------------------------------------//// On récupère proprement les variables envoyées // en $_POST AVANT de les utiliser// pour cela, j'utilise l'écriture ternaire : https://blog.smarchal.com/operateur-ternaire-php#:~:text=L'op%C3%A9rateur%20ternaire%20est%20un,%5BTHEN%5D%20%3A%20%5BELSE%5D%3B//---------------------------------------------------//$id=!empty($_POST["id"])?$_POST["id"]: NULL;$createCustomer=isset($_POST["createCustomer"])?$_POST["createCustomer"]: NULL;$id_customers=!empty($_POST["id_customers"])?$_POST["id_customers"]: NULL;$showin=!empty($_POST["showin"])?$_POST["showin"]: NULL;$email=!empty($_POST["email"])?$_POST["email"]: NULL;$mobile=!empty($_POST["mobile"])?$_POST["mobile"]: NULL;$updateCustomers=isset($_POST["updateCustomers"])?$_POST["updateCustomers"]: NULL;$state=isset($_POST["state"])?$_POST["state"]: NULL;$deleteCustomer=isset($_POST["deleteCustomer"])?$_POST["deleteCustomer"]: NULL;//---------------------------------------------------//// Traitement du formulaire//---------------------------------------------------//if(!empty($_POST)){$errors=array();if(!empty($showin)){if(!preg_match("#^[A-Za-z]#",$_POST['showin'])){$errors['showin']="Vous ne pouvez pas mettre de caractères numériques dans le nom";}}if(!empty($mobile)){if(!preg_match("#^[0-9]#",$_POST['mobile'])){$errors['mobile']="Le tel n'est pas valide";// return false;}}// pour le mail : https://www.php.net/manual/fr/filter.filters.validate.php// https://www.php.net/manual/fr/filter.examples.validation.phpif(!filter_var($email, FILTER_VALIDATE_EMAIL)){$errors['email']="Votre email n'est pas valide";}else{// on vérifie si il n'existe pas déjà en bdd// $db_email = getCustomerByEmail($email);// if(!empty($db_email)){// $errors ['email'] = "cet email existe deja";// } }// Si il n'y a pas d'erreurs ...if(empty($errors)){// var_dump( $errors );if(isset($createCustomer)){//On met à jour le customer si toutes les conditions sont réuniescreaCustomer($showin,$id);echo"<script type='text/javascript'>document.location.replace('../array/customers.php');</script>";exit;//toujours mettre un exit après une redirection}if(isset($updateCustomers)){//On met à jour le customer si toutes les conditions sont réuniesupdCustomers($id_customers,$showin,$email,$mobile);echo"<script type='text/javascript'>document.location.replace('../form/customersProfile.php?id_customers=$id_customers');</script>";exit;//toujours mettre un exit après une redirection}if(isset($deleteCustomer)){//On met à jour le customer si toutes les conditions sont réuniesdelCustomer($id_customers,$state);echo"<script type='text/javascript'>document.location.replace('../array/customers.php');</script>";exit;//toujours mettre un exit après une redirection}// debug ($errors);}else{//on affiche les erreurs.. par exemple :print_r($errors);}}
Quand je retire la condition sur l'email, tout fonctionne correctement.