Aller au contenu

Erreur avec formulaire


Nullette

Sujets conseillés

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");

Lien vers le commentaire
Partager sur d’autres sites

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é par portekoi
Lien vers le commentaire
Partager sur d’autres sites

Quelle rapidité !! :D

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 saisies
echo " 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 donnees
mail("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.

Lien vers le commentaire
Partager sur d’autres sites

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 saisies
echo " 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 ok
if ($nb_manquant == 0) {
//On envoit un mail contenant les donnees
mail("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é par portekoi
Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par Nullette
Lien vers le commentaire
Partager sur d’autres sites

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 saisies
echo " 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 ok
if ($nb_manquant == 0) {
//On envoit un mail contenant les donnees
mail("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 :D

Portekoi

Modifié par portekoi
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

On y est .. presque arrivés :)

Il n'y a pas de parse error :D

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 :fete:

Modifié par Nullette
Lien vers le commentaire
Partager sur d’autres sites

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. :fou:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...