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
19564
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 juillet 2022
1 131
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

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
35770
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
4 200
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

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
35770
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
4 200 > 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

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
35770
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
4 200 > 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

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