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

cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007 - 4 déc. 2005 à 20:50
cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007 - 6 déc. 2005 à 00:18
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 déc. 2005 à 13:37
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
}
0
cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007
5 déc. 2005 à 23:14
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
0
cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007
6 déc. 2005 à 00:18
C'est bon j'ai trouvé il faut rentrer ca:

$commentaire=str_replace(chr(13)," ",$commentaire);
$commentaire=str_replace(chr(10),"",$commentaire);
0
Rejoignez-nous