Probleme avec un formulaire

[Résolu]
Signaler
Messages postés
28
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
22 août 2007
-
Messages postés
28
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
22 août 2007
-
Bonjour.
J'ai un problème avec java script.
En effet je n'arrive pas a modifie la valeur d'un champ de formulaire.
J'ai une erreur me disant: this.document.forms[0].reajou a la valeu null ou n'est pas un objet.
Je ne voit pas d'ou ca vient (j'débute en javascript). Mon champ dans le formulaire et la variable ue je modifie porte bien le meme nom.
Je vous met les portions de code correspondante.
Merci de votre aide.

tout d'abord le formulaire:
<form action="index.php" method="POST" name="form">

<select name="liste">
//code php pour remplir les options
</select>
</td>
</form>

et la modification du champ et le renvoi du formulaire:
this.document.forms[0].reajou.value = "1";
document.form.submit();
 

10 réponses

Messages postés
28
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
22 août 2007

C'est bon j'ai trouvé le pourquoi du comment du schmilblick.
Le problème venait tout simplement du fait que je mettais ma valeur a jour avant de créer le formulaire dans ma page. Et donc javascript ne le connaissait pas, d'ou l'erreur.
Oui oui je suis boulet :p
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

c'est bien, mais où c'est fait ces ordres javascript ?

car déjà, j'ai un gros doute avec this !
et s'il y a un bouton submit, pourquoi faire form.submit() ?
qui d'ailleurs ne s'adresse pas au formulaire
    comme dans l'instruction précédente. curieux.

normalement, onsubmit est fait pour ça....
(  ce qui permettrait de retourner true ou false pour
    envoyer ou pas si on contrôle les champs par exemple )

<script type="text/javascript">
    function maj(f)
    {
       f.reajou.value="1"
    }
</script>
<form action="index.php" method="POST" name="formxxx" onsubmit="maj(this);">
...

il vaut mieux éviter les name qui ressemblent à ce que connait html/javascript...

<hr />


Cordialement            Bul         [mon Site]     [M'écrire]              




<hr />
Messages postés
28
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
22 août 2007

Ben en fait le formulaire me sert à récupérer l'adresse email.
Une fois cette adresse mail récupéré, je test via php si elle est déja présente, mais désinscrite dans un BD.
Si c'est le ca j'affiche une boite de dialogue permettant a l'utilisateur de choisir s'il souhaite réinscrire la personne ou pas. C'est la que le champ caché et le submit du formulaire m'aurai permi de recharger ma page, et donc de faire le cas ou reajout=oui dans une suite de test.
Etant donné que php et javascript ne peuvent se mélanger, c'est l'une des seules solutions que j'ai trouvé. Si t'en a une meilleur je suis preneur ;) , mais je m'y connait pas assez en js pour tout faire en javascript.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>Etant donné que php et javascript ne peuvent se mélanger

on peut dire ça comme ça.... mais ils "communiquent" ( si on peut dire aussi ! )
et que donne ce que je te propose ?


<hr />



Cordialement            Bul         [mon Site]     [M'écrire]           




<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
et s'il faut envoyer le formulaire directement sans action du visiteur :


<form action= "index.php" method="POST" name="form_toto">

<select name="liste">
//code php pour remplir les options
</select>



<!-- input type="submit" name="Ok" value="Ok" pas de bouton submit alors, inutile -->
</form>

document.form_toto.reajou.value = "1";
document.form_toto.submit();








<hr />
Cordialement Bul [
mon Site
] [
=Bul
M'écrire

]
<hr />
Messages postés
28
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
22 août 2007

Je suppose que ca va marcher, mais c'est pas ce que je veut faire.
J'veut pas mettre la variable a jour au moment de l'envoi du formulaire, mais plus tard.
Par contre j'pense avoir une piste en restant sur du php et via un header.
 
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>J'veut pas mettre la variable a jour au moment de l'envoi du formulaire, mais plus tard.

        si le formulaire est envoyé, la page html/javascript "perd la main",
                        n'existe plus, et on ne peut plus rien faire...


>>en restant sur du php et via un header.
        ??


<hr />



Cordialement            Bul         [mon Site]     [M'écrire]           




<hr />
Messages postés
28
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
22 août 2007

En fait j'envoie d'abord mon formulaire avec email. J'l'envoie sur lui meme.
En début de page j'ai des test pour savoir si l'email est valide...etc
Donc j'arrive au moment ou mon email est valide, ou il est présent dans la base mais déasinscrit.
C'est la que je veut mettre ce champ a jour, renvoyer mon formulaire et donc recommencer mes test, mais en suivant une branche différente, et donc mettre ma base de donnée a jour.
Je sais pas si mon explication est claire, mais moi je me comprend (c'est déjà pas mal).
Donc pour ma seconde solution, j'pense que si l'utilisateur cliques sur oui dans la boite de dialogue, j'v mettre un header de redirection qui va me peremetre de me rediriger vers une autre url, mais qui ici sera la meme avec juste un truc du style .php?reajou=oui qui va me permettre de rentrer dans mes test par un if($_GET['reajout']=="oui"). Enfin un truc du style.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
je ne comprend pas tout, et c'est normal à mon avis.
pour revenir à l'erreur initiale ( le reste c'est une question
    de logique de ton application )  je t'ai donné plusieurs
    manières d'adresser le champ, en fonction de "où on est"

d'aucuns diraient met un id="toto"
et utilise document.getElementById("toto").value=...
ce qui est une autre solution... différente.

<hr />


Cordialement        Bul         [mon Site]     [M'écrire]           




<hr />
Messages postés
28
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
22 août 2007

Oki.
Merci beaucoup de ton aide. Pour l'instant j'suis sur autre chose, mais de que je m'y remet j'e tiens au jus pour l'evolution du scmilbilick.