Je ne comprends pas mon erreur !
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Je ne comprends pas mon erreur car il n'y en n'a pas ! Mon code doit insérer un client dans une base de donnée. Si vous voyez une erreur(s) dites le moi !! je suis un peu perdu là :/
Mon code PHP
Mon code HTML
Mon code PHP
<?php include "connexion.php"; $connexion = connexionBd(); if (isset($_POST['formulaire'])) { $nom = htmlspecialchars($_POST['nom']); $prenom = htmlspecialchars($_POST['prenom']); $adresse = htmlspecialchars($_POST['adresse']); $codepostal = htmlspecialchars($_POST['codepostal']); $ville = htmlspecialchars($_POST['ville']); $pays = htmlspecialchars($_POST['pays']); $tel = htmlspecialchars($_POST['tel']); $email = htmlspecialchars($_POST['email']); $email2 = htmlspecialchars($_POST['email2']); $password = sha1($_POST['password']); //Hachage du mot de passe avec sha1() $password2 = sha1($_POST['password2']); $civilite = htmlspecialchars($_POST['civilite']); if (!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['adresse']) AND !empty($_POST['codepostal']) AND !empty($_POST['ville']) AND !empty($_POST['pays']) AND !empty($_POST['tel']) AND ! empty($_POST['email']) AND ! empty($_POST['email2']) AND ! empty($_POST['password']) AND ! empty($_POST['password2']) AND !empty($_POST['civilite'])) { if ($email == $email2) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $reqemail = $connexion->prepare("SELECT * FROM client WHERE email = ?"); $reqemail->execute(array($email)); $emailexist = $reqemail->rowCount(); if ($emailexist == 0) { if ($password == $password2) { $insert = $connexion->prepare("INSERT INTO client(email, mot_de_passe, civilite, nom, prenom, adresse, code_postal, ville, pays, telephone, img_client) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $insert->execute(array($email, $password, $civilite, $nom, $prenom, $adresse, $codepostal, $ville, $pays, $tel)); $mesage = "Votre compte a bien été créé !"; } else { $mesage = "Vos mots de passes ne correspondent pas !"; } } else { $mesage = "Adresse email déjà utilisée !"; } } else { $mesage = "Votre adresse email n'est pas valide !"; } } else { $mesage = "Vos adresses email ne correspondent pas !"; } } else { $mesage = "Tous les champs doivent être complétés !"; } } ?>
Mon code HTML
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <link href="css/style.css" rel="stylesheet" type="text/css" /> <title>SiteWebShop</title> </head> <body> <?php require "header.php"; ?> <section> <header><h2>Créer un compte</h2></header> <form id="creer-compte" method="POST" action=""> <label for="email">E-mail : </label> <input type="text" id="email" name="email" required="required"> <label for="email2">Confirmer votre E-mail : </label> <input type="text" id="email2" name="email2" required="required"> <label for="password">Mot de passe : </label> <input type="password" id="password" name="password" required="required"> <label for="password2">Confirmer votre mot de passe : </label> <input type="password" id="password2" name="password2" required="required"> <select name="civilite" id="civilite" required="required"> <option value="monsieur">Mr</option> <option value="madame">Mme</option> </select> <label for="nom">Nom : </label> <input type="text" id="nom" name="nom" required="required"> <label for="prenom">Prénom : </label> <input type="text" id="prenom" name="prenom" required="required"> <label for="adresse">Adresse : </label> <input type="text" id="adresse" name="adresse" required="required"> <label for="codepostal">Code postal : </label> <input type="text" id="codepostal" name="codepostal" required="required"> <label for="ville">Ville : </label> <input type="text" id="ville" name="ville" required="required"> <label for="pays">Pays : </label> <input type="text" id="pays" name="pays" required="required"> <label for="tel">Téléphone : </label> <input type="text" id="tel" name="tel" required="required"> <br> <br> <input type="submit" name="formulaire" value="S'inscrire !"> </form> <?php if(isset($mesage)) { print_r($mesage); } ?> </section> <?php require "footer.php"; ?> </body> </html>
A voir également:
- Je ne comprends pas mon erreur !
- Erreur 0x80070643 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
- Comment recuperer whatsapp supprimé par erreur - Guide
3 réponses
« Bonjour », « merci » ou « s'il vous plait » sont essentiels à toute demande car ces mots marquent la politesse élémentaire et montrent le respect que tout demandeur devrait avoir envers les bénévoles qui animent ce forum.
Merci donc de reformuler correctement ta question.
Merci donc de reformuler correctement ta question.
Utilisateur anonyme
Bonjour, s'il vous plaît pouvez-vous m'aider car je ne comprends pas mon erreur dans mon code PHP. Mon code doit insérer un client dans une base de donnée. Si vous voyez une erreur(s) dites le moi, merci d'avance pour toute aide !
Bonjour,
L'insert comporte 11 champs et il n'y a que 10 values, différence img_client.
L'insert comporte 11 champs et il n'y a que 10 values, différence img_client.
Bonjour,
Il y a plusieurs soucis dans ton code.
- Déjà.. la fonction htmlspecialchar ne s'utiliser QUE pour l'affichage et en aucun cas avant d'insérer les données en BDD.
- La fonction rowCount en PDO ne doit pas s'utiliser sur une requête SELECT ( à la place on fera un FETCHALL puis un COUNT sur le résultat )
- Il faut activer l'affichage des erreurs PHP, activer les erreurs PDO et placer chaque requête dans un bloc try/catch
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
- Le SHA1 ne doit plus être utilisé pour gérer les password.
A la place on utilise la fonction php : password_hash
https://www.php.net/manual/fr/function.password-hash.php
Et pour finir... dans une requête préparée .. tu dois avoir autant de points d'interrogations que de variables envoyées dans ton execute.
Il y a plusieurs soucis dans ton code.
- Déjà.. la fonction htmlspecialchar ne s'utiliser QUE pour l'affichage et en aucun cas avant d'insérer les données en BDD.
- La fonction rowCount en PDO ne doit pas s'utiliser sur une requête SELECT ( à la place on fera un FETCHALL puis un COUNT sur le résultat )
- Il faut activer l'affichage des erreurs PHP, activer les erreurs PDO et placer chaque requête dans un bloc try/catch
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
- Le SHA1 ne doit plus être utilisé pour gérer les password.
A la place on utilise la fonction php : password_hash
https://www.php.net/manual/fr/function.password-hash.php
Et pour finir... dans une requête préparée .. tu dois avoir autant de points d'interrogations que de variables envoyées dans ton execute.
Le bindparam permet de t'assurer que la variable envoyée correspond au "type" attendu.
Un nombre.. une chaine de texte...
Mais perso.. je ne l'utilise quasiment jamais.
J'utilise, (selon que je m'attaque à une bdd Mysql ou une autre ).. soit les requêtes préparées avec les variables "nommées" .. soit les points d'exclamation;
Exemple de variables nommées :
Un nombre.. une chaine de texte...
Mais perso.. je ne l'utilise quasiment jamais.
J'utilise, (selon que je m'attaque à une bdd Mysql ou une autre ).. soit les requêtes préparées avec les variables "nommées" .. soit les points d'exclamation;
Exemple de variables nommées :
//préparation de la requête et des variables $sql = "INSERT INTO matable (champ1,champ2) VALUES (:valeur1,:autrevaleur)"; $datas = array(':valeur1'=>$valeur1, ':autrevaleur'=>$toto); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); }