Rien n'ai ajouté dans la base de données
la_fillette
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoir a tous,
je vous explique mon problème, on m'a demander de créer une page de création du nouveau compte qu'elle au moment du clique sur le bouton créer votre DMP il aura un envoie du formulaire rempli par l'utilisateur a la base do données intitulé compte dmp, et nouveau compte s'ajoute dans le table patient .
j'ai essayé avec se code et rien n'ai ajouté même les message d'erreur ne s'affiche jamais pourtant la page se recharge
???!!!!
je vous explique mon problème, on m'a demander de créer une page de création du nouveau compte qu'elle au moment du clique sur le bouton créer votre DMP il aura un envoie du formulaire rempli par l'utilisateur a la base do données intitulé compte dmp, et nouveau compte s'ajoute dans le table patient .
j'ai essayé avec se code et rien n'ai ajouté même les message d'erreur ne s'affiche jamais pourtant la page se recharge
???!!!!
A voir également:
- Rien n'ai ajouté dans la base de données
- Fuite données maif - Guide
- Base de registre - Guide
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
- Supprimer les données de navigation - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
2 réponses
Bonjour,
Sans voir ton code .... impossible de te répondre !
NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici :https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
NB2 : Avant de nous poster ton code, commence par appliquer les conseils donnés ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Sans voir ton code .... impossible de te répondre !
NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici :https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
NB2 : Avant de nous poster ton code, commence par appliquer les conseils donnés ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Voici le début de ton code corrigé
Quelques remarques concernant ton code :
- Attention... le nom de ta BDD contient un espace.... il ne faut pas !
Tu ne dois utiliser ni accents, ni majuscules, ni caractères spéciaux, ni espaces dans le nom de ta BDD, de tes tables ou des champs de tes tables !
- La fonction htmlspecialchar n'est à utiliser que pour l'AFFICHAGE et en aucun cas pour l'insertion en BDD.
- On n'utilise plus le Sha1 pour "crypter" les mots de pass. Désormais on utiliser la fonction password_hash et password_verify
http://php.net/manual/fr/function.password-hash.php
https://www.php.net/manual/fr/function.password-verify.php
- Tu dois placer CHAQUE requête dans des blocs TRY/CATCH
- La fonction rowCount ne doit pas être utilisée sur une requête SELECT. A la place on fera plutôt un COUNT
Comme indiqué dans la documentation officielle :
Toi tu fais l'insertion d'un nouvel utilisateur... si il existe déjà dans la bdd ??
Je suppose que tu voulais plutôt vérifier qu'il n'existait pas déjà
Et pour finir.....
Tu utilises le code qui permet de "créer" un nouvel utilisateur dans le formulaire qui te sert normalement à l'authentifier ? Oo
Sachant que le code que tu nous montres ne contient que deux input.. un pour le "nom" et un pour le "password" ...
Je pense que tu t'es trompé de formulaire !!
Voila... tu as de quoi bosser...
Faut revoir complètement ton code et ta façon de coder.
Je t'invite à prendre connaissance des liens que je t'ai donné et de vraiment chercher à les comprendre... sans ça... tu n'avanceras pas.
<?php //Afficher les erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la BDD avec activation des erreurs PDO $dbName = "compte_dmp"; $host = "127.0.0.1"; $dbuser = "root"; $dbpass=""; try{ $bdd =new PDO('mysql:host='.$host.';dbname='.$dbName.'; charset=utf8', $dbuser, $dbpass); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //récupération PROPRE des variables AVANT de les utiliser $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL; $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL; $nomUtilisateur = !empty($_POST['nomUtilisateur']) ? $_POST['nomUtilisateur'] : NULL; $pass1 = !empty($_POST['pass1']) ? $_POST['pass1'] : NULL; $pass2 = !empty($_POST['pass2']) ? $_POST['pass2'] : NULL; if (isset($_POST['Creer_votre_DMP'])) { if ($nom && $prenom&& $nomUtilisateur && $pass1 && $pass2) {
Quelques remarques concernant ton code :
- Attention... le nom de ta BDD contient un espace.... il ne faut pas !
Tu ne dois utiliser ni accents, ni majuscules, ni caractères spéciaux, ni espaces dans le nom de ta BDD, de tes tables ou des champs de tes tables !
- La fonction htmlspecialchar n'est à utiliser que pour l'AFFICHAGE et en aucun cas pour l'insertion en BDD.
- On n'utilise plus le Sha1 pour "crypter" les mots de pass. Désormais on utiliser la fonction password_hash et password_verify
http://php.net/manual/fr/function.password-hash.php
https://www.php.net/manual/fr/function.password-verify.php
- Tu dois placer CHAQUE requête dans des blocs TRY/CATCH
- La fonction rowCount ne doit pas être utilisée sur une requête SELECT. A la place on fera plutôt un COUNT
Comme indiqué dans la documentation officielle :
Si la dernière requête SQL exécutée par l'objet PDOStatement associé est une requête de type SELECT, quelques bases de données retourneront le nombre de lignes retournées par cette requête. Néanmoins, ce comportement n'est pas garanti pour toutes les bases de données
Toi tu fais l'insertion d'un nouvel utilisateur... si il existe déjà dans la bdd ??
if ($nomUtilsateurexist == 1){
Je suppose que tu voulais plutôt vérifier qu'il n'existait pas déjà
if ($nomUtilsateurexist != 1){
Et pour finir.....
Tu utilises le code qui permet de "créer" un nouvel utilisateur dans le formulaire qui te sert normalement à l'authentifier ? Oo
Sachant que le code que tu nous montres ne contient que deux input.. un pour le "nom" et un pour le "password" ...
Je pense que tu t'es trompé de formulaire !!
Voila... tu as de quoi bosser...
Faut revoir complètement ton code et ta façon de coder.
Je t'invite à prendre connaissance des liens que je t'ai donné et de vraiment chercher à les comprendre... sans ça... tu n'avanceras pas.
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=compte dmp','root','');
if (isset($_POST['Creer_votre_DMP'])) {
if (!empty($_POST['nom']) AND !empty($_POST['prenom'])AND !empty($_POST['nomUtilisateur']) AND !empty($_POST['pass1']) AND !empty($_POST['pass2'])) {
$nom = htmlspecialchars($_POST['nom']);
$prenom = htmlspecialchars($_POST['prenom']);
$nomUtilisateur = htmlspecialchars($_POST['nomUtilisateur']);
$pass = sha1($_POST['pass1']);
$pass2 = sha1($_POST['pass2']);
$requser = $bdd->prepare("SELECT * FROM patient WHERE nomUtilisateur=?");
$requser->execute(array($nomUtilisateur));
$nomUtilisateurexist = $req->rowCount();
if ($nomUtilsateurexist == 1){
if ($pass1 == $pass2) {
$insertmbr = $bdd->prepare("INSERT INTO patient ( prenom, nom ,nomUtilisateur,password) VALUES ('".$prenom."', '".$nom."','".$nomUtilisateur."', '".$pass1."')");
$notification = "Votre compte a bien été crée" ;
}
else{
$erreur = "vos deux mots de passe ne correspondent pas";
}
}
else {
$erreur = "Nom d'utilisateur déjà utilisé!";
}
}
else {
$notification = "Compléter tous les champs" ;
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Mobile Specific Meta -->
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Favicon-->
<link rel="shortcut icon" href="img/fav.png">
<!-- Author Meta -->
<meta name="author" content="Colorlib">
<!-- Meta Description -->
<meta name="description" content="">
<!-- Meta Keyword -->
<meta name="keywords" content="">
<!-- meta character set -->
<meta charset="UTF-8">
<!-- Site Title -->
<title>Connecter au DMP</title>
<link href="https://fonts.googleapis.com/css?family=Poppins:100,200,400,300,500,600,700" rel="stylesheet">
<!--
CSS
============================================= -->
<link rel="stylesheet" href="css/linearicons.css">=
<link rel="stylesheet" href="css/font-awesome.min.css">
<link rel="stylesheet" href="css/magnific-popup.css">
<link rel="stylesheet" href="css/nice-select.css">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/main.css">
</head>
<body>
<div class="limiter">
<div class="container-login100">
<div class="wrap-login100">
<div class="login100-pic js-tilt" data-tilt>
<img src="images/img-01.png" alt="IMG">
</div>
<form class="login100-form validate-form" action='' method='post'>
<span class="login100-form-title">
Connexion Patient
</span>
<div class="wrap-input100 validate-input" data-validate = "Valid name is required: ex@abc.xyz">
<input class="input100" type="text" name="nom" placeholder="Nom">
<span class="focus-input100"></span>
<span class="symbol-input100">
<i class="fa fa-envelope" aria-hidden="true"></i>
</span>
</div>
<div class="wrap-input100 validate-input" data-validate = "Password is required">
<input class="input100" type="Password" name="pass" placeholder="mot de passe">
<span class="focus-input100"></span>
<span class="symbol-input100">
<i class="fa fa-lock" aria-hidden="true"></i>
</span>
</div>
<div class="container-login100-form-btn">
<button class="login100-form-btn" type='submit'>
Connexion
</button>
</div>
<div class="text-center p-t-136">
<a class="txt2" href="#">
<a href="../create/creation DMP.php"><b>Creer nouveau compte DMP<b></a>
<i class="fa fa-long-arrow-right m-l-5" aria-hidden="true"></i>
</a>
</div>
</form>
</div>
</div>
</div>
<!--===============================================================================================-->
<script src="vendor/jquery/jquery-3.2.1.min.js"></script>
<!--===============================================================================================-->
<script src="vendor/bootstrap/js/popper.js"></script>
<script src="vendor/bootstrap/js/bootstrap.min.js"></script>
<!--===============================================================================================-->
<script src="vendor/select2/select2.min.js"></script>
<!--===============================================================================================-->
<script src="vendor/tilt/tilt.jquery.min.js"></script>
<script >
$('.js-tilt').tilt({
scale: 1.1
})
</script>
<!--===============================================================================================-->
<script src="js/main.js"></script>
</body>
</html>
?>
l'erreur a quelle niveau ??