Problème de tests sur l'envoi d'un formulaire

Signaler
Messages postés
27
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
27 mars 2007
-
Messages postés
27
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
27 mars 2007
-
Salut a tous ,
J'ai un petit soucis que je n'arrive pas à résoudre. En effet j'envois un formulaire par mail qui contient plusieurs champs et 2 listes déroulantes liées .
Tout marche convenablement. Cependant avant d'envoyer le formulaire je fais un test pour savoir si il n'y pas un champ vide. Si c'est le cas je reviens en arrière pour qu'il soit complété avec un history.back() . Le problème c'est que la deuxième liste déroulante qui dépend donc de la première liste se vide à chaque fois. Je ne vois pas trop comment faire pour que cela ne soit pas le cas. J'utilise ce code pour les listes.

<SCRIPT language="JavaScript">
<!--
function choix(form) {
i = form.rubrique.selectedIndex;
if (i == 0) {
for (i=0;i<4;i++) {
form.page.options[i].text="";
}
return;
}
form.page.selectedIndex = 0;
switch (i) {
case 1 : var txt = new Array ('cat1 -dep 1','cat2 -dep 1','cat3 -dep 1'); break;
case 2 : var txt = new Array ('cat1 -dep 2','cat2 -dep 2','cat3 -dep 2'); break;
case 3 : var txt = new Array ('cat1 -dep 3','cat2 -dep 3','cat3 -dep 3'); break;
}
form.page.options[0].text="--- Choisissez une Catégorie ---";
for (i=0;i<3;i++) {
form.page.options[i+1].text=txt[i];
}
}
// -->
</script>

<form NAME="departement" method=POST action=mail.php >

<SELECT NAME="rubrique" onChange='choix(this.form)'>
<OPTION>--- Choisissez un Département ---</OPTION>
<OPTION>departement 1</OPTION>
<OPTION>departement 2</OPTION>
<OPTION>departement 3</OPTION>
</SELECT>
<SELECT NAME="page" >
<OPTION>--- Choisissez une Catégorie ---</OPTION>
<OPTION></OPTION>
<OPTION></OPTION>
<OPTION></OPTION>
</SELECT>

............

</form>

J'espère avoir été clair.
Merci pour votre aide.

3 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

typiquement, ça va se faire avec des
if (isset ($_POST['nom_champ']) && !empty ($_POST['nom_champ'])) {
// tu mets la valeur de ton $_POST ou la valeur par défaut si le $_POST n'existe pas
}
Messages postés
27
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
27 mars 2007

Salut,

$_POST['nom_champ'] m'a fait réfléchir. J'ai donc abandonné la méthode history.back() pour retourner au formulaire en cas de champ vide.


Je repasse maintenant les variables rentrées dans le formulaire par l'url en cas de champ vide par la commande:
window.location="formulaire.php?nom=$nom&url=$url&commentaire=$commentaire"

et je recupère les données écrites précédemment dans les champs par : $nom = $_GET["nom"]; etc....

Tout marche correctement , sauf que si jamais je rentre des retours chariot dans commentaire qui est un Textarea et que je reviens en arrière en cas d'oubli d'un champ par : window.location="formulaire.php?nom=$nom&url=$url&commentaire=$commentaire"
, j'ai une erreur.
J'ai donc essayer de faire: $commentaire=str_replace(chr(13),"",$commentaire) pour supprimer les retours chariots de la variable commentaire, mais l'erreur persiste. Je ne vois pas pourquoi ?

Auriez-vous une idée ?
merci
Messages postés
27
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
27 mars 2007

C'est bon j'ai trouvé il faut rentrer ca:

$commentaire=str_replace(chr(13)," ",$commentaire);
$commentaire=str_replace(chr(10),"",$commentaire);