IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Transmissions de variables js par un submit


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut Transmissions de variables js par un submit
    Bonjour,

    J'ai un formulaire comprenant entre autres 3 listes déroulantes imbriquées. Lors du submit de ma page, je réaffiche la page que l'utilisateur vient d'écrire afin de lui demander de vérifier ses informations.
    Et mon problème intervient là, les variables javascript ne sont pas sauvegardées et l'utilsateur doit de nouveau faire ses choix.

    J'update ma page grace à un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update table set var1='$var1', etc...,varjavascript='$varjavascript'
    En gros, je voudrais forcer mes listes à prendre comme valeurs par défaut, lors du réaffichage de ma page, les valeurs selectionnées dans les listes lors du premier remplissage.

    Mes listes sont générées par un programme javascript du type :
    avec :
    - champs1, le 1er champs de la table
    - table, ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <select name="glob" onChange='Choix(this.form)'>  
    <option>--Choix --</option>
    <? $que = mysql_query("SELECT DISTINCT champs1 FROM table ORDER BY 1");
    while($go = mysql_fetch_assoc($que)){
    echo '<option value="'.$go["champs1"]">'.$go["champs1"].'</option>';
    	}
    ?>
     
    </select>
    <select name="type">
    <option>--Choix--</option>
    </select>
    et Choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    unction Choix(form)
    {
    i= form.glob.selectedIndex;
    if (i==0) return;
     
    form.type.options.length = 0;
    form.type.selectedIndex = 0 ;
    form.type.options[0]=new Option("--Choix--",0);
    for(c=0;c<table[i-1].length;c++) {
    	if(c+1 < table[i-1].length)
    	form.type.options[c+1]=new Option(table[i-1][c+1][0],table[i-1][c+1][0]);
    	}
    }
    Comme vous le voyez, j'ai cré un tableau javascript contenant tout ma base de donnée et je travaille ensuite directement sur ce tableau.
    Je sais que c'est pas joli joli ( ) mais comme la bdd n'est pas très importante ca passe.


    J'ai tenté pour mon premier choix de faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$go["champs1"].''.($go["champs1"]==$champscorrespondantdans mabdd?" selected":"").'">'.$go["champs1"].'</option>';
    à la place de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$go["champs1"]">'.$go["champs1"].'</option>';
    Normalement ca devrait marcher et je vois à peu pres comment faire.

    Par contre pour la seconde liste, crée uniquement en javscript je ne vois pas du tout comment récuperer ma valeur.

    Bref, pour résumer :
    Comment lors du réaffichage de ma page, avoir par défaut dans mes listes les valeurs séléctionnées dans la page précédentes ?

    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de Eric Berger
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2002
    Messages : 346
    Points : 663
    Points
    663
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo '<option value="'. $go["champs1"] . '"';
    if($go["champs1"]==$champscorrespondantdansmabdd){
      echo ' selected';
    }
    echo '>' . $go["champs1"] . '</option>';
    Essaie ça...

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Merci.
    C'est tout à fait ce que je voulais. Le principe était le bon, il faut que je regarde où je me suis raté.

    Il me reste à gérer mes problèmes de variables javascript

  4. #4
    Membre éclairé
    Avatar de Eric Berger
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2002
    Messages : 346
    Points : 663
    Points
    663
    Par défaut
    déjà y'avait pas de if....
    ensuite évites de mettre les instructions au km sur la même ligne, y'a pas mieux pour s'embrouiller...

    Pour voir où ça coince, découpes ce que tu avais fait en une instruction par ligne, tu verras tout de suite ce qui n'allait pas.

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ben non y avait pas de if vu que j'utilisais la structure de la forme :

    condition ?(if true) choix1 : (else) choix2 ;

    Mais c'est vrai que j'aurais pu espacer mon code.

  6. #6
    Membre éclairé
    Avatar de Eric Berger
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2002
    Messages : 346
    Points : 663
    Points
    663
    Par défaut
    Ah vi c'est que je m'en sers pas trop de cette forme...

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Je vais poser mes hypothèses sur mon problème, histoire de voir si je fais pas trop fausse route

    Donc ma deuxieme liste étant gérer uniquement par javascript et n'utilisant pas directement de requetes sql, je ne peux pas resonner comme me l'a aimablement montré Eric en jouant sur ma bdd et un condition.

    Je ne vois pas l'interet de rajouter une requete sql dans mon deuxieme select puis de travailler dessus, car cela ferait doublon avec le javascript et la liste ne serait plus dynamqiue.

    Il faudrait donc que j'arrive à rajouter quelque chose dans mon javascript, mais comme il me faut aller chercher en bdd ma valeur...

    Non décidement je ne vois pas

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Je me permets d'upper mon problème car je ne vois décidement pas comment forcer mon selected en javascript.

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Bon j'ai fais pas mal de test et voici mes conclusions.

    Forcer mon selected dans ma premiere liste par du php, ne convient pas.

    Comme mes fonctions choix se lancent sur un onChange, lors du rechargement, la 1ere liste aura bien la valeur voulue selectionnée mais elle n'entrainera pas le lancement de la fonction "Choix". (On force le selected par du php et il est donc déja interprété au chargement de la page).

    Il me faudrait donc forcer mon selected par du javascript, ce qui entrainerait une modification qui lancerait le onchange.

    J'ai donc modifier ma fonction Choix(this.form,choixuser) afin de tester si oui ou non on adéja une valeur.

    puis je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function Choix(form,choixuser)
    {
    i= form.glob.selectedIndex;
    if (i==0) return;
     
    form.typepb.options.length = 0;
    form.typepb.selectedIndex = 0 ;
    form.typepb.options[0]=new Option("--Choix--",0);
     
    for(c=0;c<tableau_recap[i-1].length;c++) {
    	if(c+1 < tableau_recap[i-1].length)
    	{
    	//document.write(choixuser); 
    	//document.write(tableau_recap[i-1][c+1][0]);
    	if(choixuser==tableau_recap[i-1][c+1][0])
    	form.typepb.options[c+1]=new Option(tableau_recap[i-1][c+1][0],tableau_recap[i-1][c+1][0], false, true);
    	else
    	form.typepb.options[c+1]=new Option(tableau_recap[i-1][c+1][0],tableau_recap[i-1][c+1][0]);
    	}
     
    }
    }
    glob étant mon premier champs,typepb mon second, tableau_recap le tableau js dans lequel j'ai chargé ma bdd.

    Mais il n'a pas l'air d'aimer ça...J'ai pourtant l'impression de bien regarder si on a une valeur par défaut si oui alors on utilise le 4 argument de mon new Option(qui est selected, le 3eme etant defaultselected) sinon on affiche ce que l'utilisateur a selectionné.

    Bref, je ne sais pas trop si quelqu'un suit

  10. #10
    Membre éclairé
    Avatar de Eric Berger
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2002
    Messages : 346
    Points : 663
    Points
    663
    Par défaut
    On peut voir une ébauche de ta page, j'ai un peu de peine à comprendre ce que tu cherches à faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Transmission de variables par URL
    Par craac dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2007, 15h04
  2. Transmission de variables submit via un menu dynamique
    Par gilardino dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2007, 00h13
  3. Problème de Transmission de variable par url
    Par toma03 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 21h47
  4. [PHP-JS] Envoi de variable sans passer par un submit
    Par adilou1981 dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2004, 19h21
  5. transmission de variables
    Par nicerico dans le forum ASP
    Réponses: 14
    Dernier message: 16/08/2004, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo