Php conditions envoi formulaire

Résolu/Fermé
louseb - 31 août 2009 à 15:47
 louseb - 1 sept. 2009 à 15:10
Bonjour,

voila je viens vers vous car je n'arrive pas a poser de conditions pour restreindre l'envoi d'un formulaire si les champs obligatoires ne sont pas remplie.
les champs que j'aimerais rendre obligatoire :

_pseudo
_ localisation
_ votre_message

les autres doivent rester facultatif et donc ne pas être affecter par ces conditions....!!!!!

je vous met la partie du code concernant l'envoi du formulaire a mysql.
<?php
// information de conexion a la base de donné mysql (mots de pass et nom de la base)
mysql_connect("localhost", "root", "");
mysql_select_db("coursphp");

if (isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['localisation']) AND isset($_POST['site_internet']) AND isset($_POST['votre_message']) AND isset($_POST['comment_avez_vous_connu_ce_site']) AND isset($_POST['precisez']))

{
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$precisez = mysql_real_escape_string(htmlspecialchars($_POST['precisez']));
$comment_avez_vous_connu_ce_site = mysql_real_escape_string(htmlspecialchars($_POST['comment_avez_vous_connu_ce_site']));
$votre_message = mysql_real_escape_string(htmlspecialchars($_POST['votre_message']));
$site_internet = mysql_real_escape_string(htmlspecialchars($_POST['site_internet']));
$localisation = mysql_real_escape_string(htmlspecialchars($_POST['localisation']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));



// enregistre du formulaire dans la base de données
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo ."', '" . $mail . "', '" . $localisation . "', '" . $date . "', '" . $heure . "', '" . $site_internet . "', '" . $votre_message . "', '" . $comment_avez_vous_connu_ce_site . "', '" . $precisez . "')");

}
?>


je débute en php et dois avoué que mon code a était fait en piochant des bout de code a droite et a gauche mais cela dis mise a part cette histoire de condition pour l'envoi il fonctionne parfaitement. je ne vous ai mis que la parti concernant l'envoi pure et simple du formulaire, mais le code en entier me permet de récupérer la date et l'heur d'envoi ainsi que d'affiché la requête dans une autre page "livreor.php".

merci d'avance pour vos conseil avisé

1 réponse

Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
31 août 2009 à 16:07
Regarde ton if : il teste si tous tes champs sont remplis : Il faut que tu réduise ta condition SI.

Par exemple :
if (isset($_POST['pseudo']) AND isset($_POST['localisation']) AND isset($_POST['votre_message']) )
{
   //Ici tu teste : si l'élément X existe, alors on le récupère
   if (isset($_POST['mail']))
   {
   $mail = mysql_real_escape_string(htmlspecialchars($_POST['mail'])); 
   }
   else
   {
   $mail="";
   }
}
else
{
//message d'erreur
}
0
merci de ta réactivité sandrine

alors si j'ai bien compris, l'IF que j'ai mis en place ne vérifie pas si les champ existe mais bien si ils sont remplies ou non....
pourtant quand je test en local via wamp, même si aucun champ n'est remplie il est envoyer dans ma bdd et récupérer par ma page livreor.php........ !!!!!

je vais essayer ça et reviens vers vous pour vous dire ce qu'il en est...
0
je viens de tester le codage que tu ma soumis.

je l'ai mis a la place de mon if et j'ai enlever mes
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));

le résultat et que toute mes autres entrées me renvoi une erreur ce qui est normal vu que je ne les traite plus.
en revanche l'entrée "mail" ne me renvoi plus de donnée et ce que le champ soit remplie ou non. elle ne me renvoi cela dit pas d'erreur, ce qui était déjà le cas avec mon codage d'origine qui ce contentait de laisser le champ libre que ce soit sur la bdd ou sur la page de récupération des données....


il me faut m'absenter un petit moment, je reviens d'ici une paire d'heures.....
si quelqu'un a une solution ou pourrait me donné un bout de code complet avec un champ "obligatoire" et un champ "facultatif" sa me sauverai la vie car j'ai passer toute ma nuit et ne vois vraiment pas où j'ai failli.....!!!!

merci
0
bl76 > louseb
31 août 2009 à 19:04
Salut,
merci pour ta réponse sur mon post.
Malheureusement, j'ai fait un code beaucoup plus simple que toi !!

Moi j'ai juste 4 conditions testées les unes après les autres :

if ($HTTP_POST_VARS['Last_Name'] == '')
{
echo "<script language='JavaScript'>alert('Please fill in your name');history.back();</script>";

exit();}

elseif ($HTTP_POST_VARS['email'] == '')
{
echo "<script language='JavaScript'>alert('Please fill in your email.');history.back();</script>";
exit();}

elseif ($HTTP_POST_VARS['Company_Name'] == '')
{
echo "<script language='JavaScript'>alert('Please fill in your company name');history.back();</script>";
exit();}

elseif ($HTTP_POST_VARS['Telephone'] == '')
{
echo "<script language='JavaScript'>alert('Please fill in your telephone');history.back();</script>";
exit();}

Je ne sais pas si cela pourra t'aider.
Sur mon site, si la 1ère condition n'est pas remplie, ça affiche un pop up disant qu'il manque des infos et en cliquant sur OK, ça renvoie à la page précédente (la page du formulaire - merci à avion-f16 pour son aide !).
Si la condition est remplie, ça passe à la suivante.

J'espère que ça t'aidera !
0
louseb > bl76
31 août 2009 à 20:08
salut et merci

bon je viens de changé ton $http_post_vars['last_name'] ==") par
$_post['pseudo'].....

c merveilleux merci a toi pour ce petit bout de javascript va me facilité la vie et me faire récupérer mes heure de sommeil en retard de cette nuit....... !!!!!!
je posterais le bout de code d'acquisition de suite après manger afin de le faire partager au plus grand nombre.....

encore merci bl76 et avion-f16
0
louseb > louseb
1 sept. 2009 à 15:10
salut a tous.
bon mon problème est résolut, mon formulaire "livre d'or" et sa page d'affichage fonctionne a merveille alors puisque nous sommes pas mal a avoir du mal avec ces foutu conditions je vais vous faire un petit topo de ce qui est ressortie de mes heures de galères.....

condition pour s'assurait que le champ existe et qu'il est vide lors de l'ouverture de la page pour la première foi.....:
isset($_POST['mail'])


condition qui bloque l'envoi des information contenu dans les champ si ceux si ne sont pas remplies.........
........ :

$_POST['mail'] != NULL
attention celui si ne renvoi pas d'erreur et vide tous les champ du formulaire faisant croire a l'internaute que sont message a bien était envoyer alors que la page a seulement était recharger........ elle ma fait passer un salle quart d'heure celle-la car je n'arrivais pas a comprendre pourquoi alors que ma connexion a ma base mysql était valide je n'arrivai pas a y enregistrer le contenu de mes champs.....!!!


et enfin, la condition qui ma était proposé par bl76 avec l'aide d'avion-f16 qui est celle que j'ai mise en œuvre en la couplant avec la première condition que je vous ai énumérer juste en dessus...:

if ($post['Last_Name'] == '')
{
echo "<script language='JavaScript'>alert('Please fill in your name');history.back();</script>";

exit();}
cette dernière vérifie que le champ est rempli lors du clic sur le bouton submit et ouvre une petite fenetre avec le message contenu dans la formule ici "please fill in your name". l'internaute n'a plus qu'a cliqué sur "ok" et il peut finir de compléter son formulaire sans que celui ci n'ai était recharger donc il conserve toutes les information qu'il a déjà tapé.....


voilà en espérant que ce petit topo aidera quelque personne a garder leur cheveux car malheureusement il est déjà trop tard pour les mien...... lol

bye
0