> 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
37,49 €Pack clavier + souris sans-fil Logitech MK470 à 37,49 €
Valable jusqu'au 09 Mai

Amazon fait une promotion sur le pack clavier + souris sans-fil Logitech MK470 à 37,49 € au lieu de 50 €. Compact et avant-gardiste, cet ensemble Logitech MK470 est parfait pour travailler efficacement. L'ensemble se distingue notamment par sa simplicité et à leur profil ultra-mince. Le clavier compact comprend notamment un pavé numérique et 12 raccourcis de fonction, vous offrant ainsi toutes les touches dont vous avez besoin. De plus, les touches à microcharnières extra-plates offrent une expérience de frappe fluide et familière. Quant à la souris, elle est dotée de trois boutons et d'une molette de défilement extrêmement silencieuse. Et avec sa forme en galet et la douceur de la souris ambidextre, elle offre un grand confort d'utilisation pour les droitiers comme les gauchers. 


> Voir l'offre
51,70 €Disque dur Seagate BarraCuda 2 To à 51,70 €
Valable jusqu'au 10 Mai

Cdiscount propose actuellement le disque dur Seagate BarraCuda - 2 To (ST2000DM008) à 51,70 €. On le trouve ailleurs autour de 60 €. Ce disque dur 3.5 pouces SATA III tourne à 7200tr/min et possède 64Mo de cache. 


> Voir l'offre
89,99 €Barre de son 2.1 bluetooth Philips TAB5305 (bluetooth caisson de basses sans fil) à 89,99 €
Valable jusqu'au 09 Mai

Cdiscount fait une promotion sur la barre de son 2.1 bluetooth Philips TAB5305 qui passe à 89,99 € au lieu de 129 €. Cette barre de son intègre 2 haut-parleurs, est accompagnée d'un caisson de basses sans fil et peut lire vos musiques sans fil via Bluetooth. Elle est compatible HDMI ARC : vous pouvez la contrôler avec la télécommande de votre téléviseur.


> 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