> Tous les forums > Forum des Webmasters
 formulaire php incomplet envoyé vers bdd
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
gt22
  Posté le 13/02/2013 @ 11:51 
Aller en bas de la page 
Petit astucien

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 messagerie@domaine.tld
$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 &amp;
}
?>" />
<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 &amp;
}
?>" />
<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 &amp;
}
?>" />
<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 &amp;
}
?>" />
<br><br>

<input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
</p>
</form>
<!-- FIN du formulaire HTML -->

Publicité
Draleg
 Posté le 13/02/2013 à 13:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,
Cela fait un moment que je n'ai plus développé, cependant je remarque ceci:

// 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 messagerie@domaine.tld
$erreur="Votre adresse e-mail n'est pas valide...";
}

else { // Si tous les champs sont valides, on change l'état à ok
$etat="ok";
}



Ok mais quand testes-tu la variable $etat ? Tu l'as modifie selon le cas mais juste après

// 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();

Sans la tester donc si le code est bien complet dans ton post, il manque selon moi cette étape.

Donc un quelque chose de ce style:

//Test de $etat

if($etat == "ok")

{

mysql_query("INSERT INTO inscription_marche VALUES('', '".$nom."', '".$telephone."', '".$email."', '".$repas_a."', '".$repas_e."')") or die(mysql_error());

}

else

{

echo $etat;

}

Je ne sais cependant plus de mémoire si avec le PHP l'opérateur "==" est opérationnel avec du caractère...

Bonne journée.



Modifié par Draleg le 13/02/2013 13:38
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
56,99 €SSD WD Blue SN550 500 Go (NMVe M.2, 2400 Mo/s) à 56,99 €
Valable jusqu'au 20 Juin

Amazon fait une promotion sur le SSD WD Blue SN550 500 Go (NMVe M.2) qui passe à 56,99 € livré alors qu'on le trouve ailleurs à partir de 75 €. Ce SSD utilise une interface M.2 NVMe PCIe Gen3 x 4 pour une connexion simple et des performances exceptionnelles : jusqu’à 2 400 Mo/s en lecture séquentielle et jusqu’à 1 950 Mo/s en écriture séquentielle. Le SSD est doté de la technologie 3D TLC NAND haute densité offrant une endurance d’écriture durable et assorti d’une garantie de cinq ans. 


> Voir l'offre
63,78 €Casque sans fil Sony WH-CH700NL Bluetooth avec réduction de bruit active à 63,78 €
Valable jusqu'au 20 Juin

Cdiscount fait une belle promotion sur le casque sans fil Sony WH-CH700NL Bluetooth qui passe à 63,78 € livré gratuitement alors qu'on le trouve ailleurs à plus de 120 €. Ce casque sans fil rechargeable (via micro USB) offre jusqu'à 35h d'autonomie. L'AINC (Artificial Intelligence Noise Cancelling) s'adapte à votre environnement, ce qui vous permet d'éliminer les bruits indésirables lors de vos voyages ou si vous êtes avec d'autres personnes dans une même pièce. Une très bonne affaire.


> Voir l'offre
8 €Carte Cdiscount à Volonté 1 an (CDAV) à 8 €
Valable jusqu'au 21 Juin

Cdiscount propose actuellement sa carte Cdiscount à Volonté à 8 € seulement au lieu de 29 €. Avec cette carte, vous bénéficiez pendant 1 an de la livraison gratuite en point relais dès 10 € d'achats et à domicile dès 25 € d'achats. Vous avez également accès à plus de 200 titres de presse en ligne en illimité. Vous bénéficiez également de temps en temps des offres et des codes promotionnels exclusifs. Notez que vous pouvez partager gratuitement vos privilèges avec 2 de vos proches.


> Voir l'offre

Sujets relatifs
formulaire depuis html vers php et redir html ?
Tester si formulaire envoyé au moins une fois.
formulaire envoyé à un mail saisi par lutilisateur
Formulaire rempli où est envoyé les infos
formulaire arrive incomplet...parfois !!
Formulaire envoyé par courriel (retour d'un accusé
formulaire internet vers Fax
Formulaire envoyé par mail en asp ?
Formulaire et renvoi d'infos vers e mail ?
lien d'un formulaire vers mon e-mail
Plus de sujets relatifs à formulaire php incomplet envoyé vers bdd
 > Tous les forums > Forum Forum des Webmasters