Php - condition qui bloque un enregistrement
Astolpho
Messages postés
74
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
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é.
Page de suppression :
<?php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
require('../inc/connexion.php');
include('../process/customers.php');
$db = getDB();
$id_customers = $_GET['id_customers'];
$reponse = $db->query("SELECT * FROM customers WHERE `id_customers`='$id_customers'");
($donnees = $reponse->fetch());
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Using Bootstrap modal</title>
<!-- Bootstrap Core CSS
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">>
-->
<body>
<form method="POST" action="">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only"></span></button>
</div>
<div class="modal-body">
<h4><i class="icon fa fa-ban"></i> Êtes vous sûrs? de vouloir supprimer le locataire : <b><?php echo $donnees['showin'];?></b></h4>
<input type="text" class="form-control" name="id" value="<?= $_SESSION['auth']->id; ?>" readonly="true">
<input type="hidden" class="form-control" name="id_customers" value="<?php echo $donnees['id_customers'];?>" readonly="true">
</div>
<div class="modal-footer">
<input type="submit" class="btn btn-outline pull-left" name="deleteCustomer" value="Supprimer" />
</div>
</form>
Fonction :
<?php
if(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...)
*/
function creaCustomer($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
*/
function updCustomers($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 query
return $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)
*/
function delCustomer($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"
*/
function getCustomerByfirstName($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.php
return $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"
*/
function getCustomerByLastName($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.php
return $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.php
if (!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éunies
creaCustomer($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éunies
updCustomers($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éunies
delCustomer($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.
A voir également:
- Php - condition qui bloque un enregistrement
- Code puk bloqué - Guide
- Excel cellule couleur si condition texte - Guide
- Téléphone bloqué code verrouillage - Guide
- Pavé tactile bloqué - Guide
- Compte gmail bloqué - Guide