Bonjour,
je rencontre un souci avec mon code
j'ai cette erreur
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0-0' for key 'phone' in C:\wamp\www\losthing\admin\start.php on line 36
la ligne de requete SQL en fait
require 'inc/header.php';
require_once 'inc/func.php';
if (isset($_POST)) {
$errors = [];
require_once 'inc/db.php';
if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_-]+$/', $_POST['username'])){
$errors['username'] = "Votre pseudo n'est pas valide (alphanumérique)";
}
if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$errors['email'] = "Votre adresse email n'est pas invalide";
}else{
$req = $db->prepare("SELECT * FROM users WHERE email = ?");
$req->execute([$_POST['email']]);
$user = $req->fetch();
if($user){
$errors['email'] = "Adresse email déjà utilisée";
}
}
if(empty($_POST['password']) || $_POST['password'] != $_POST['confirm_password']){
$errors['password'] = "Vous devez rentrer un mot de passe valide";
}
if($errors == []){
$req = $db->prepare("INSERT INTO users SET username = ?, email = ?, password = ?, confirmed_at = NOW()");
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$req->execute([$_POST['username'],$_POST['email'],$password]);
$user_id = $db->lastInsertId();
$username = $_POST['username'];
mail($_POST['email'],"CONFIGURATION DE VOTRE NOUVEAU SITE","Vous venez de mettre sur pied votre site internet : LOSTHING\n\nVous pouvez vous y connecter en tant qu’administrateur avec les informations suivantes :\n\nIdentifiant : $username\n\nMot de passe : Ceci vous avez ecrit\n\nAcceder dès à présent à votre espace d'administration en allant sur le lien present : http://localhost/losthing/admin/login.php");
$_SESSION['flash']['success'] = "Vos pouvez commencer à configurer correctement votre site";
header('Location:login.php');
}
}
?>
Please help me please.
Bonjour,
Comme je ne vois pas de 'phone' dans ton insert-to, j'en conclu qu'il a une valeur par default en base. Comme c'est un numéro de tel, je suppose que tu a mis qu'il devait être unique? Du coup ça vient peut-être de la.
Cordialement,
TD
Soit vous rentrez le numéro de téléphone avec l'insert, soit vous faite comme pour l'adresse mail en testant si elle existe dans la base.
Si tu enleve la valeur par default du numéro de telephone et que tu laisse null à la place le problème ne devrait plus se présenter. A part si tu as une raison particulière de mettre '0-0' et la je ne sais pas comment contourner le problème.