Nullette Posté 18 Mars 2005 Posté 18 Mars 2005 Bonjour, j'ai un formulaire qui fonctionne, cependant il ne devrait pas pouvoir être validé si certains champs ne sont pas remplis. J'ai une page html pour le formulaire et une page php pour la confirmation. Je ne connais pas le php. Savez-vous si l'erreur pourrait venir du +1 ? Voici une partie du code : <?$tab_required = split('[, ]+', $HTTP_POST_VARS[required]); $nb_manquant = 0; foreach ($tab_required as $required) { if (empty($HTTP_POST_VARS[$required])) { $nb_manquant = $nb_manquant + 1; echo "Vous n'avez pas rempli le champ \"$required\" !<br>"; } } if ($nb_manquant > 0) { echo "Le formulaire n'a pas eté envoyé. Utilisez le bouton 'Précédent' de votre navigateur..."; exit; } A la fin, j'ai bien mis pour les champs obligatoires : mail("reponse_AT_nullette.com","Reponse ","$email\n$prenom\n$nom\n$adresse\n$ville\n$codePostal\n$pays\n$tel","From: $email\nReply-To: reponse_AT_nullette.com");
Portekoi Posté 18 Mars 2005 Posté 18 Mars 2005 (modifié) Bonjour Essaye ceci : reset ($_POST);$nb_manquant = 0;while (list ($key, $val) = each ($_POST)) { if (trim($val)=="") { $nb_manquant = $nb_manquant +1; echo "Le champs " . $key . " n'a pas été rempli!" }}if ($nb_manquant > 0) { echo "Le formulaire n'a pas eté envoyé. Utilisez le bouton 'Précédent' de votre navigateur..."; exit; } Pour l'un de mes sites, je fais ceci : reset ($_POST);$nb_manquant = 0;while (list ($key, $val) = each ($_POST)) { if (trim($val)=="") { $nb_manquant = $nb_manquant +1; $erreur = $erreur . "_" . $key; }} Ensuite, si la personne n'a pas rempli son mail et son pays tu obtiendras ceci _mail_pays Tu n'as plus qu'a faire un split et afficher tous les champs en erreur Le problème de ton script est que tu fais un split sur "," ou " " mais tu ne fais pas de trim au cas où c'est un espace tout bête Portekoi Modifié 18 Mars 2005 par portekoi
Nullette Posté 18 Mars 2005 Auteur Posté 18 Mars 2005 Quelle rapidité !! Attends, comme je n'y connais rien et que tu as rajouté "key" et que, ce code je l'ai sur un autre formulaire qui fonctionne, je me permets de remettre le code en entier : <?$tab_required = split('[, ]+', $HTTP_POST_VARS[required]); $nb_manquant = 0; foreach ($tab_required as $required) { if (empty($HTTP_POST_VARS[$required])) { $nb_manquant = $nb_manquant + 1; echo "Vous n'avez pas rempli le champ \"$required\" !<br>"; } } if ($nb_manquant > 0) { echo "Le formulaire n'a pas eté envoyé. Utilisez le bouton 'Précédent' de votre navigateur..."; exit; }//informations saisiesecho " Email : $email<br>";echo " Prénom : $prenom<br>";echo " Nom : $nom<br>";echo " Société ou Association : $Organisation<br>";echo " Adresse : $adresse<br>";echo " Ville : $ville<br>";echo " Code postal : $codePostal<br>";echo " Pays : $pays<br>";echo " Téléphone : $tel<br>";echo " Commentaires : $comments<br>";//On envoit un mail contenant les donneesmail("reponse_AT_nullette.com","Inscription ","$email\n$prenom\n$nom\n$adresse\n$ville\n$codePostal\n$pays\n$tel","From: $email\nReply-To: reponse_AT_nullette.com"); ?> Les champs Organisation et comments ne sont pas obligatoires.
Portekoi Posté 18 Mars 2005 Posté 18 Mars 2005 (modifié) Essaie Ca en remplacant ton code <?reset ($_POST);$nb_manquant = 0;while (list ($key, $val) = each ($_POST)) { //On vire les champs non obligatoires if (trim($val)=="" AND ($key!="Organisation" or $key!="comments") { $nb_manquant = $nb_manquant +1; echo "Le champs " . $key . " n'a pas été rempli!" exit; }}if ($nb_manquant > 0) { echo "Le formulaire n'a pas eté envoyé. Utilisez le bouton 'Précédent' de votre navigateur..."; exit; }//informations saisiesecho " Email : ".$_POST["email"]."<br>";echo " Prénom : ".$_POST["prenom"]."<br>";echo " Nom : ".$_POST["nom"]."<br>";echo " Société ou Association : ".$_POST["Organisation"]."<br>";echo " Adresse : ".$_POST["adresse"]."<br>";echo " Ville : ".$_POST["ville"]."<br>";echo " Code postal : ".$_POST["codePostal"]."<br>";echo " Pays : ".$_POST["pays"]."<br>";echo " Téléphone : ".$_POST["tel"]."<br>";echo " Commentaires : ".$_POST["comments"]."<br>";//Envoie si tout es okif ($nb_manquant == 0) {//On envoit un mail contenant les donneesmail("reponse_AT_nullette.com","Inscription ","$email\n$prenom\n$nom\n$adresse\n$ville\n$codePostal\n$pays\n$tel","From: $email\nReply-To: reponse_AT_nullette.com"); }?> Modifié 18 Mars 2005 par portekoi
Nullette Posté 18 Mars 2005 Auteur Posté 18 Mars 2005 (modifié) Merci , mais .. il y a une erreur et je ne sais pas la réparer : Parse error: parse error, unexpected '{' Je vais essayer de retirer une { 2mn plus tard : parse error, unexpected T_VARIABLE in .... :-( Modifié 18 Mars 2005 par Nullette
Portekoi Posté 18 Mars 2005 Posté 18 Mars 2005 Remplace if (trim($val)=="" AND ($key!="Organisation" or $key!="comments") par if (trim($val)=="" AND ($key!="Organisation" or $key!="comments"))
Nullette Posté 18 Mars 2005 Auteur Posté 18 Mars 2005 Je suis désolée de t'embêter parse error, unexpected T_EXIT, expecting ',' or ';'
xpatval Posté 18 Mars 2005 Posté 18 Mars 2005 Portekoi, me semble qu'il manque un ; en fin de ligne, ici: echo "Le champs " . $key . " n'a pas été rempli!" xpatval
Portekoi Posté 18 Mars 2005 Posté 18 Mars 2005 (modifié) Re, Tu ne m'embêtes pas du tout et c'est de ma faute. Erreur d'inatention de ma part. Je viens de tester ce code et il fonctionne : <?reset ($_POST);$nb_manquant = 0;while (list ($key, $val) = each ($_POST)){ //On vire les champs non obligatoires if (trim($val)=="" AND $key!="organisation" and $key!="comments") { $nb_manquant = $nb_manquant +1; echo "Le champs " . $key . " n'a pas été rempli!"; exit; }}if ($nb_manquant > 0) { echo "Le formulaire n'a pas eté envoyé. Utilisez le bouton 'Précédent' de votre navigateur..."; exit;}//informations saisiesecho " Email : ".$_POST["email"]."<br>";echo " Prénom : ".$_POST["prenom"]."<br>";echo " Nom : ".$_POST["nom"]."<br>";echo " Société ou Association : ".$_POST["Organisation"]."<br>";echo " Adresse : ".$_POST["adresse"]."<br>";echo " Ville : ".$_POST["ville"]."<br>";echo " Code postal : ".$_POST["codePostal"]."<br>";echo " Pays : ".$_POST["pays"]."<br>";echo " Téléphone : ".$_POST["tel"]."<br>";echo " Commentaires : ".$_POST["comments"]."<br>";//Envoie si tout es okif ($nb_manquant == 0) {//On envoit un mail contenant les donneesmail("reponse_AT_nullette.com","Inscription ","$email\n$prenom\n$nom\n$adresse\n$ville\n$codePostal\n$pays\n$tel","From: $email\nReply-To: reponse_AT_nullette.com");} ?> Il manquait juste un ";". Attention : ne mets pas de majuscule dans tes noms de champs. Tout en minuscule. Et désolé encore EDIT : Vi, désolé, je développe en ASP la journée... c'est pas une excuse certes mais parfois j'ai le neuronne ASP et le neuronne PHP qui se téléscope... Et quand y a celui du Transac Sql qui si mets, c'est le foutoire Portekoi Modifié 18 Mars 2005 par portekoi
Nullette Posté 19 Mars 2005 Auteur Posté 19 Mars 2005 (modifié) On y est .. presque arrivés Il n'y a pas de parse error Mais .... - si plusieurs champs obligatoires n'ont pas été remplis, un seul est signalé ! - Avec mon formulaire précédent où il y avait des $required, il s'affichait "le champs téléphone n'a pas été rempli" alors qu'avec le nouveau formulaire où $key a remplacé les required, il s'affiche "le champs tel n'a pas été rempli" et, je suppose que derrière le $ je ne pourrais pas mettre téléphone. portekoi, j'espère que tu ne vas pas regretter d'avoir voulu m'aider Modifié 19 Mars 2005 par Nullette
Nullette Posté 19 Mars 2005 Auteur Posté 19 Mars 2005 x portekoi. Ne passes plus de temps, je crois que mon erreur vient de ma page html où en plus, j'avais complètement oublié et pas vu que j'ai aussi un javascript. Je revoie mes pages.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant