Formulaire gestion des erreurs

Résolu/Fermé
Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020 - 8 avril 2017 à 15:48
Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020 - 10 avril 2017 à 01:51
Bonjour,

Dans le cadre de mon BTS SIO je suis entrain de creer un site de reservation de formation. J'ai crée le formulaire d'inscription mais je suis bloquer au niveau des gestions des erreurs car quand je remplis les champs de mon formulaire d'inscription celui si affiche toujours l'erreur " veuillez saisir tous les champs ". Je voudrais que a la fin de l'inscription de l'utilisateur celui ci soit directement rediriger vers son profil.

voici la page inscription avec le code php

<?php

session_start();
require 'config/database.php';
//require 'includes/fonctions.php';

if (isset($_POST['inscription'])) {
$errors = [];
$login = htmlspecialchars($_POST['login']);
$nom = htmlspecialchars($_POST['nom']);
$prenom = htmlspecialchars($_POST['prenom']);
$adresse = htmlspecialchars($_POST['adresse']);
//hachage du mot de passe
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$email = htmlspecialchars($_POST['email']);
$email2 = htmlspecialchars($_POST['email2']);
$tel = ($_POST['tel']);
$cp = ($_POST['cp']);
$fonction =($_POST['fonction']);
$idassociation = ($_POST['idassociation']);
$actif = ($_POST['actif']);

//Si les variables sont pas vides
if (!empty($_POST['login']) && !empty($_POST['mdp']) && !empty($_POST['mdp2']) && !empty($_POST['nom']) && !empty($_POST['prenom'])
&& !empty($_POST['adresse'])
&& !empty($_POST['email'])
&& !empty($_POST['email2']) && !empty($_POST['cp']) && !empty($_POST['tel']) &&
!empty($_POST['fonction'] && !empty($_POST['association']))) {

$loginlength = strlen($login);

if ($loginlength <= 255) {

if ($email == $email2) {

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
//Requete permettant de savoir si le mail est deja utilisé
$reqmail = $db->prepare("SELECT * FROM personnelassociatif WHERE email = ?");
$reqmail->execute([$email]);
$mailexist = $reqmail->rowCount();

if ($mailexist == 0) {
if ($mdp == $mdp2) {
//Insert les informations et cree le compte
$insertmbr = $db->prepare("INSERT INTO personnelassociatif(login,email,mdp,nom,prenom,adresse,codePostal,tel,fonction,actif,idAssociation) VALUES(:login,:email,:mdp,:nom,:prenom,:adresse,codePostal,tel,fonction,actif,idAssociation)");
$insertmbr->execute(array($login,$email,$mdp,$nom,$prenom,$adresse,$cp,$tel,$fonction,$actif,$idassociation));
//$_SESSION['comptecree'] = "Votre compte a été crée";
header('location: connexion.php');
} else {
$errors[] = 'Vos mots de passe correspondent pas';
}
} else {
$errors [] = 'Adresse mail deja utilisé ';
}
} else {
$errors[] = 'Votre adresse mail est pas valide';
}
} else {
$errors[] = "Vos adresses mail correspondent pas";
}
}
} else {
$errors[] = 'Tous les champs doivent être complétés';
}
}
?>



<?php require ('views/inscriptionView.php'); ?>





et la deuxieme page

<?php $title = "Inscription"; ?>
<?php include("includes/constantes.php"); ?>
<?php include("partials/Header.php"); ?>

<div id="main-content">
<div class="container">
<h1 class="text-center">Devenez dès à présent membre!</h1>


<?php include 'partials/erreurs.php'; ?>

<form method="POST" class="well col-md-6 col-md-offset-3" autocomplete="on">

<!-- login -->
<div class="form-group">
<label class="control-label" for="login">Login</label>
<input type="text" class="form-control" id="login" value="<?php if (isset($login)) {
echo $login;
} ?>" name="login" required="required"/>
</div>

<!-- Password -->
<div class="form-group">
<label class="control-label" for="mdp">Mot de passe</label>
<input type="password" class="form-control" id="mdp" name="mdp" required="required"/>
</div>
<!-- Password confirm -->
<div class="form-group">
<label class="control-label" for="mdp2"> Confirmation Mot de passe</label>
<input type="password" class="form-control" id="mdp2" name="mdp2" required="required"/>
</div>


<!-- Nom -->
<div class="form-group">
<label class="control-label" for="Nom">Nom</label>
<input type="text" value="<?php if (isset($nom)) {
echo $nom;
} ?>" class="form-control" id="nom" name="nom" required="required"/>
</div>

<!-- Prenom-->
<div class="form-group">
<label class="control-label" for="prenom">Prenom</label>
<input type="text" value="<?php if (isset($prenom)) {
echo $prenom;
} ?>" class="form-control" id="prenom" name="prenom" required="required"/>
</div>

<!-- Adresse-->
<div class="form-group">
<label class="control-label" for="adresse">Adresse</label>
<input type="text" value="<?php if (isset($adresse)) {
echo $adresse;
} ?>" class="form-control" id="adresse" name="adresse" required="required"/>
</div>

<!-- Email -->
<div class="form-group">
<label class="control-label" for="email">Email</label>
<input type="email" value="<?php if (isset($email)) {
echo $email;
} ?>" class="form-control" id="email" name="email" required="required"/>
</div>

<!-- Confirmation Email -->
<div class="form-group">
<label class="control-label" for="email2">Confirmation Email</label>
<input type="email" value="<?php if (isset($email2)) {
echo $email2;
} ?>" class="form-control" id="email2" name="email2" required="required"/>
</div>

<!-- Code postal -->
<div class="form-group">
<label class="control-label" for="cp">Code postal</label>
<input type="text" value="<?php if (isset($cp)) {
echo $cp;
} ?>" class="form-control" id="codePostal" name="cp" required="required"/>
</div>

<!--tel -->
<div class="form-group">
<label class="control-label" for="telephone">Telephone</label>
<input type="tel" value="<?php if (isset($tel)) {
echo $tel;
} ?>" class="form-control" id="tel" name="tel" required="required"/>
</div>

<!-- Fonction -->
<div class="form-group">
<label class="control-label" for="fonction" id="fonction" >Fonction</label></br>
<select name="fonction" size="3">
<option>Agent administratif</option>
<option>Gardien de gymnase</option>
<option>Coach sportif</option>
</select>
</div>

<label class="control-label"> Actif :</label><br>
oui <INPUT type="checkbox" name="actif" value="valeur attachée au bouton">
non <INPUT type="checkbox" name="actif" value="valeur attachée au bouton">


<!-- Association -->
<div class="form-group">
<label class="control-label" for="association" id="association">Association</label></br>
<select name="idassociation" size="3">
<option>Les gardiens du nord</option>
<option>Unissef</option>
<option>CMS assos</option>
</select>
</div>

<input type="submit" class="btn btn-primary" value="Valider" name="inscription"/>


</form>
</div><!-- /.container -->
</div>

<?php include ("partials/footer.php"); ?>


merci d'avance pour votre aide

2 réponses

yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
Modifié le 8 avril 2017 à 16:22
bonjour,
quels sont les noms de tes deux fichiers?
c'est la première fois que tu fais un formulaire avec du php?
je te suggère de commencer par un exercice beaucoup plus simple, pour vérifier que tu comprends les principes de base.
0
Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020 1
8 avril 2017 à 23:05
Bonjour,

le ficher qui contient mon formulaire en html est inscriptionView.php et le deuxieme fichier qui contient le code php est inscription.php.
Oui c'est mon premier formulaire en php a vrai dire c'est le projet que j'ai a faire pour mon BTS du coup je suis obligé de le faire. Merci du conseil
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
8 avril 2017 à 16:43
Bonjour,


Deux choses :
1 - Pourquoi dans le IF utilises tu les variables POST ... alors qu'aux lignes au-dessus ... tu as récupéré les valeurs dans des variables ...

2 - Si le message apparait .. c'est qu'il y a sûrement des champs non-remplis ou pour lesquels tu as mal orthographié ...
Pour le voir .. commence par ajouter (dans ta page inscription ) , AVANT le IF ... la ligne de code suivante :
 print_r($_POST);

puis regarde ce que ça donne....;

3 - Je ne vois pas dans ton FORM .. l'action pointant vers le fichier inscription...
 <form method="POST" class="well col-md-6 col-md-offset-3" autocomplete="on">

Ne devrais-tu pas avoir :
 <form method="POST" class="well col-md-6 col-md-offset-3" autocomplete="on" action="inscription.php">



0
Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020 1
8 avril 2017 à 23:22
Bonjour,

Oui je viens de me rendre compte que c'est inutile ( C'est mon premier formulaire svp soyez indulgent =( lol )

A propos du print_r($_post) quand les champs du formulaire sont vide il me retourne un tableau vide ( array()) mais quand je remplis mes champs et je valide il me retourne ceci

Array ( [login] => dimoke [mdp] => chrischris [mdp2] => chrischris [nom] => dimoke [prenom] => chris [adresse] => 17 rue du vert village [email] => chris.dimoke@hotmail.fr [email2] => chris.dimoke@hotmail.fr [cp] => 95340 [tel] => 0769242698 [fonction] => Agent administratif [actif] => valeur attachée au bouton [idassociation] => Unissef [inscription] => Valider )


Oui dans le if les POST sont totalement inutiles du coup mon code donne ceci mais maintenant j'ai un probleme au niveau de la base de données c'est au niveau de la ligne 47 juste apres ma requete SQL mais je comprend pas mon erreur

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[01000]: Warning: 1265 Data truncated for column 'fonction' at row 1' in C:\wamp64\www\m2lV1\inscription.php on line 47
( ! ) PDOException: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'fonction' at row 1 in C:\wamp64\www\m2lV1\inscription.php on line 47


<?php

print_r($_POST);
require 'config/database.php';
//require 'includes/fonctions.php';

if (isset($_POST['inscription'])) {
$errors = [];
$login = htmlspecialchars($_POST['login']);
$nom = htmlspecialchars($_POST['nom']);
$prenom = htmlspecialchars($_POST['prenom']);
$adresse = htmlspecialchars($_POST['adresse']);
//hachage du mot de passe
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$email = htmlspecialchars($_POST['email']);
$email2 = htmlspecialchars($_POST['email2']);
$tel = ($_POST['tel']);
$cp = ($_POST['cp']);
$fonction =($_POST['fonction']);
$idassociation = ($_POST['idassociation']);
$actif = ($_POST['actif']);

//Si les variables sont pas vides
if (!empty(['login']) && !empty(['mdp']) && !empty(['mdp2']) && !empty(['nom']) && !empty(['prenom'])
&& !empty(['adresse'])
&& !empty(['email'])
&& !empty(['email2']) && !empty(['cp']) && !empty(['tel']) &&
!empty(['fonction'] && !empty(['association']))) {

$loginlength = strlen($login);

if ($loginlength <= 255) {

if ($email == $email2) {

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
//Requete permettant de savoir si le mail est deja utilisé
$reqmail = $db->prepare("SELECT * FROM personnelassociatif WHERE email = ?");
$reqmail->execute([$email]);
$mailexist = $reqmail->rowCount();

if ($mailexist == 0) {
if ($mdp == $mdp2) {
//Insert les informations et cree le compte
$insertmbr = $db->prepare("INSERT INTO personnelassociatif(login,email,mdp,nom,prenom,adresse,codePostal,tel,fonction,actif,idAssociation) VALUES(?,?,?,?,?,?,?,?,?,?,?)");
$insertmbr->execute(array($login,$mdp,$email,$nom,$prenom,$adresse,$cp,$tel,$fonction,$actif,$idassociation));
//$_SESSION['comptecree'] = "Votre compte a été crée";
header('location: connexion.php');
} else {
$errors[] = 'Vos mots de passe correspondent pas';
}
} else {
$errors [] = 'Adresse mail deja utilisé ';
}
} else {
$errors[] = 'Votre adresse mail est pas valide';
}
} else {
$errors[] = "Vos adresses mail correspondent pas";
}
}
} else {
$errors[] = 'Tous les champs doivent être complétés';
}
}
?>



<?php require ('views/inscriptionView.php'); ?>



0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020
8 avril 2017 à 23:26
Le message d'erreur indique que la valeur de ta variable $fonction ... est plus grande que la dimension de ton champ "fonction" dans ta table.
0
Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020 1
9 avril 2017 à 00:57
oui j'ai changer la dimension j'ai mis en VARCHAR(255) bon la j'ai des soucis au niveau de ma base de donnée je vais essayer de le régler en tout cas merci beaucoup =)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020
9 avril 2017 à 01:08
Par contre .... ton IF me parait étrange...
 if (!empty(['login']) && !empty(['mdp']) && !empty(['mdp2']) && !empty(['nom']) && !empty(['prenom']) 
            && !empty(['adresse'])
                    && !empty(['email'])
                            && !empty(['email2']) && !empty(['cp']) && !empty(['tel']) &&
            !empty(['fonction'] && !empty(['association']))) {

A mon avis .... il faut remplacer tes ['login'] par $login (idem pour TOUTES tes autres variables )
 if (!empty($login) && !empty($mdp)  .....
0
Anonymous95340 Messages postés 114 Date d'inscription lundi 5 octobre 2015 Statut Membre Dernière intervention 7 décembre 2020 1
9 avril 2017 à 02:50
Ben ce IF

if (!empty(['login']) && !empty(['mdp']) ..

je pense que vous l'avez compris mais je prend les ['login'] etc.. dans les name dans le fichier inscriptionView
select name="idassociation" size="3">


Apres peut-etre vaut mieux remplacer.. Je sais pas.
0