Je suis débutant, j'essaie de m'améliorer et pour ce faire j'ai crée un site qui fonctionne assez bien niveau login, mais via l'inscription sa coince, et je ne comprend vraiment pas pourquoi.
ps: J'accepte la critique si jamais mon code est mal conçu ou travail de cochon
Et merci d'avance.
Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1364 Field 'nom' doesn't have a default value in C:\Users\Thomas\Desktop\site perso\tomtombook\pages\inscription.php on line 26
<?php
global $db;
if (isset($_SESSION['membre'])) {
header("Location:index.php?page=dashboard");
}
if (isset($_POST['inscription'])) {
if(empty($_POST['pseudo']) || !preg_match('/[a-zA-Z0-9]+/', $_POST['pseudo'])){
$errorinscription = 'Votre pseudo doit être une chaine de caractères (alphanumérique) !';
}elseif(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$errorinscription = 'Votre pseudo doit être une chaine de caractères (alphanumérique) !';
}elseif(empty($_POST['password1']) || $_POST['password1'] != $_POST['password2']){
$errorinscription = "Rentrer un mot de passe valide";
}elseif(empty($_POST['age']) || !preg_match('/^[1-9][0-9]{0,15}$/', $_POST['age'])){
$errorinscription = 'Veuillez indiqué votre âge';
}elseif(empty($_POST['nom']) || !preg_match('/[a-zA-Z0-9]+/', $_POST['nom'])){
$errorinscription = 'Votre nom doit être une chaine de caractères (alphanumérique) !';
}elseif(empty($_POST['prenom']) || !preg_match('/[a-zA-Z0-9]+/', $_POST['prenom'])){
$errorinscription = 'Votre prénom doit être une chaine de caractères (alphanumérique) !';
}
else{
$password = password_hash($_POST['password1'], PASSWORD_DEFAULT);
$requete = $db->prepare('INSERT INTO users(pseudo, email, password, age, nom, prenom)
VALUES(:pseudo, :email, :password, :age, :nom, :prenom)');
$requete->bindValue(':pseudo', $_POST['pseudo']);
$requete->bindValue(':email', $_POST['email']);
$requete->bindValue(':password', $password);
$requete->bindValue(':age', $_POST['age']);
$requete->bindValue(':nom', $_POST['nom']);
$requete->bindValue(':prenom', $_POST['prenom']);
$requete->execute();
$errorinscription = 'Vous êtes bien inscris';
}
}
?>
- Edité par ThomasBailleux1 22 novembre 2020 à 16:33:01
Ou l'autoriser à être NULL (virer la contrainte NOT NULL sur la colonne).
Ce qui, vu que cette information ne semble pas demandée à l'inscription, me paraît plus adapté (si optionnellement renseigné via édition du profil). Sachant que le même problème va se poser j'imagine pour d'autres colonnes (prenom, age, image, etc)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP