bonjour à tous
j'ai un problème avec un formulaire qui envoie les données vers ma bdd malgré que certains champs obligatoires ne soient pas remplis
ce qu fait que j'ai des entrées qui ne sont pas complètes!! merci d'avance
je vous joins mon code:
<?php
// D'abord, on se connecte à MySQL
mysql_connect("", "", "");
mysql_select_db("");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$telephone = mysql_real_escape_string(htmlspecialchars($_POST['telephone']));
$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
$repas_a = mysql_real_escape_string(htmlspecialchars($_POST['repas_a']));
$repas_e = mysql_real_escape_string(htmlspecialchars($_POST['repas_e']));
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
$etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["nom"])) $_POST["nom"]=trim(stripslashes($_POST["nom"])); // trim() enlève les espaces en début et fin de chaine
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["telephone"])) $_POST["telephone"]=trim(stripslashes($_POST["telephone"])); // trim() enlève les espaces en début et fin de chaine
if (isset($_POST["email"])) $_POST["email"]=trim(stripslashes($_POST["email"])); // stripslashes() retire les backslashes ==> \' devient '
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["repas_a"])) $_POST["repas_a"]=trim(stripslashes($_POST["repas_a"])); // trim() enlève les espaces en début et fin de chaine
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["repas_e"])) $_POST["repas_e"]=trim(stripslashes($_POST["repas_e"])); // trim() enlève les espaces en début et fin de chaine
// Après la mise en forme, on vérifie la validité des champs
if (empty($_POST["nom"])) { // L'utilisateur n'a pas rempli le champ nom d'équipe
$erreur="Vous n'avez pas entré votre nom et prénom..."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["telephone"])) { // L'utilisateur n'a pas rempli le champ telephone
$erreur="Vous n'avez pas entré de n° de téléphone..."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["email"])) { // L'utilisateur n'a pas rempli le champ email
$erreur="Nous avons besoin de votre e-mail pour vous répondre...";
}
elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){ // On vérifie si l'email est bien de la forme [email protected]
$erreur="Votre adresse e-mail n'est pas valide...";
}
else { // Si tous les champs sont valides, on change l'état à ok
$etat="ok";
}
// Ensuite on enregistre le message
mysql_query("INSERT INTO inscription_marche VALUES('', '".$nom."', '".$telephone."', '".$email."', '".$repas_a."', '".$repas_e."')") or die(mysql_error());
// On se déconnecte de MySQL
mysql_close();
}
else { // Sinon le formulaire n'a pas été soumis
$etat="attente"; // On passe donc dans l'état attente
}
if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
}
?>
<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
<p style="text-align:left">
<label for="nom">Nom et prénom *</label> <!-- Intitulé du champ nom -->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="nom" id="nom" value="<?php
if (!empty($_POST["nom"])) {
// le nom a été saisi --> le réafficher
echo htmlspecialchars($_POST["nom"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<label for="email">E-mail *</label><!-- Intitulé du champ e-mail -->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="email" id="email" value="<?php
if (!empty($_POST["email"])) {
// l'e-mail de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["email"],ENT_QUOTES);
}
?>" />
<br><br>
<label for="telephone">N° de téléphone*</label> <!-- Intitulé du champ telephone-->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="telephone" id="telephone" value="<?php
if (!empty($_POST["telephone"])) {
// le nom du 3ème équipier a été saisi --> le réafficher
echo htmlspecialchars($_POST["telephone"],ENT_QUOTES);// htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<label for="repas_a">Nombre de repas adulte (11 Euros)</label> <!-- Intitulé du champ repas adulte-->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="repas_a" id="repas_a" value="<?php
if (!empty($_POST["repas_a"])) {
// le nom du 3ème équipier a été saisi --> le réafficher
echo htmlspecialchars($_POST["repas_a"],ENT_QUOTES);// htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<label for="repas_e">Nombre de repas enfants (7 Euros)</label><!-- Intitulé du champ repas enfant-->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="repas_e" id="repas_e" value="<?php
if (!empty($_POST["repas_e"])) {
// le nom du 3ème équipier a été saisi --> le réafficher
echo htmlspecialchars($_POST["repas_e"],ENT_QUOTES);// htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
</p>
</form>
<!-- FIN du formulaire HTML -->
bonjour à tous
j'ai un problème avec un formulaire qui envoie les données vers ma bdd malgré que certains champs obligatoires ne soient pas remplis
ce qu fait que j'ai des entrées qui ne sont pas complètes!! merci d'avance
je vous joins mon code:
[php]
<?php
// D'abord, on se connecte à MySQL
mysql_connect("", "", "");
mysql_select_db("");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$telephone = mysql_real_escape_string(htmlspecialchars($_POST['telephone']));
$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
$repas_a = mysql_real_escape_string(htmlspecialchars($_POST['repas_a']));
$repas_e = mysql_real_escape_string(htmlspecialchars($_POST['repas_e']));
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
$etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["nom"])) $_POST["nom"]=trim(stripslashes($_POST["nom"])); // trim() enlève les espaces en début et fin de chaine
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["telephone"])) $_POST["telephone"]=trim(stripslashes($_POST["telephone"])); // trim() enlève les espaces en début et fin de chaine
if (isset($_POST["email"])) $_POST["email"]=trim(stripslashes($_POST["email"])); // stripslashes() retire les backslashes ==> \' devient '
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["repas_a"])) $_POST["repas_a"]=trim(stripslashes($_POST["repas_a"])); // trim() enlève les espaces en début et fin de chaine
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["repas_e"])) $_POST["repas_e"]=trim(stripslashes($_POST["repas_e"])); // trim() enlève les espaces en début et fin de chaine
// Après la mise en forme, on vérifie la validité des champs
if (empty($_POST["nom"])) { // L'utilisateur n'a pas rempli le champ nom d'équipe
$erreur="Vous n'avez pas entré votre nom et prénom..."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["telephone"])) { // L'utilisateur n'a pas rempli le champ telephone
$erreur="Vous n'avez pas entré de n° de téléphone..."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["email"])) { // L'utilisateur n'a pas rempli le champ email
$erreur="Nous avons besoin de votre e-mail pour vous répondre...";
}
elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){ // On vérifie si l'email est bien de la forme
[email protected]$erreur="Votre adresse e-mail n'est pas valide...";
}
else { // Si tous les champs sont valides, on change l'état à ok
$etat="ok";
}
// Ensuite on enregistre le message
mysql_query("INSERT INTO inscription_marche VALUES('', '".$nom."', '".$telephone."', '".$email."', '".$repas_a."', '".$repas_e."')") or die(mysql_error());
// On se déconnecte de MySQL
mysql_close();
}
else { // Sinon le formulaire n'a pas été soumis
$etat="attente"; // On passe donc dans l'état attente
}
if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
}
?>
<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
<p style="text-align:left">
<label for="nom">Nom et prénom *</label> <!-- Intitulé du champ nom -->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="nom" id="nom" value="<?php
if (!empty($_POST["nom"])) {
// le nom a été saisi --> le réafficher
echo htmlspecialchars($_POST["nom"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<label for="email">E-mail *</label><!-- Intitulé du champ e-mail -->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="email" id="email" value="<?php
if (!empty($_POST["email"])) {
// l'e-mail de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["email"],ENT_QUOTES);
}
?>" />
<br><br>
<label for="telephone">N° de téléphone*</label> <!-- Intitulé du champ telephone-->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="telephone" id="telephone" value="<?php
if (!empty($_POST["telephone"])) {
// le nom du 3ème équipier a été saisi --> le réafficher
echo htmlspecialchars($_POST["telephone"],ENT_QUOTES);// htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<label for="repas_a">Nombre de repas adulte (11 Euros)</label> <!-- Intitulé du champ repas adulte-->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="repas_a" id="repas_a" value="<?php
if (!empty($_POST["repas_a"])) {
// le nom du 3ème équipier a été saisi --> le réafficher
echo htmlspecialchars($_POST["repas_a"],ENT_QUOTES);// htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<label for="repas_e">Nombre de repas enfants (7 Euros)</label><!-- Intitulé du champ repas enfant-->
<input type="text" style="margin-right:160px; position:relative;float:right" size="40" name="repas_e" id="repas_e" value="<?php
if (!empty($_POST["repas_e"])) {
// le nom du 3ème équipier a été saisi --> le réafficher
echo htmlspecialchars($_POST["repas_e"],ENT_QUOTES);// htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br><br>
<input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
</p>
</form>
<!-- FIN du formulaire HTML -->
[/php]