Total novice en javascript...

Résolu
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 14 févr. 2008 à 11:06
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 - 14 févr. 2008 à 14:56
Bonjour à tous,

Je ne connaît absolument pas javascript,
j'ai trouvé le code ci-dessous pour me permettre de récupérer des valeurs dans un formulaire contenant des listes de type select.
(je n'ai pas réussi en php)

<script language="javascript">
<!--
function chang() //fonction qui affichera le texte
{
var Chaine;
Chaine = document.form1.liste.options //on spécifie la liste a traiter
[document.form1.liste.selectedIndex].text;//on récupere le texte de cette liste
document.form1.textfield.value = Chaine.valueOf();//on met ce texte dans un champ texte
div_test.innerHTML = Chaine.valueOf();//on modifie le texte dans le div nommé div_test
}
-->
</script>

<form name="form1" method="post" action="">
 

    <select name="liste" onChange="chang();">
      <option value="">Sélectionner élément</option>
      <option value="1">a</option>
      <option value="2">b</option>
      <option value="3">c</option>
      <option value="4">d</option>
    </select>

   

   

 

ma question est la suivante :
comme mon formulaire contien plusieurs listes, est-ce que je doit dupliquer et adapter autant de fois la fonction que j'ai de liste ou comment est-il possible d'avoir une seule fonction pour toutes les listes sans tenir compte  de leurs noms

par anticipation, question suivante,
j'ai 1 liste multiple, comment je dois opérer pour récupérer les sélections de l'utilisateur

D'avance merci pour votre aide (j'espère avoir posté au bon endroit)

Autodidact, je ne demande qu'à apprendre... Merci de votre aide

12 réponses

maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
14 févr. 2008 à 11:18
Bonjour

ma question est la suivante :
comme mon formulaire contien plusieurs
listes, est-ce que je doit dupliquer et adapter autant de fois la
fonction que j'ai de liste ou comment est-il possible d'avoir une seule fonction pour toutes les listes sans tenir compte  de leurs noms

Il te suffit juste de faire passer en parametre le nom de tes selects dans la fonction (chang(nom1), chang(nom2)...).

Si la fonction est appellé dans le onSubmit du form, la ça se complique un peu car il faut récuperer les noms de tout tes selects pour les tester (dans un tableau par exemple) et tester chaque select. Si je suis pas assez clair hesite pas.

Elo
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 févr. 2008 à 11:26
Bonjour,

    si c'est pour transmettre au php, il n'y a rien à faire coté html/javascript.
    toutes les value des éléments qui ont un name sont transmises.

    ici donc $_POST["liste"] ce sera le value de l'option sélectionnée

<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 févr. 2008 à 13:44
trop long... pas tout compris...

>>à ce moment là, il me réaffiche la page complète avec le résultat
voulu, les filtres sont bien appliqués
>>mais les listes sont
réinitialisées et donc elles n'affichent plus le ou les choix des
utilisateurs.
    ben... tu as tout reçu en php, "il suffit" d'ajouter le selected sur la
       bonne option quand on recrée la page.

>>c'est pour cette raison que je me suis tourné vers
l'éventualité d'ajouter du javascript,
>>pour replacer les choix des
utilisateurs.
    on peut ausi...
    "il suffit", lorsque le select est affiché, de faire
        select_en_question.selectedIndex=n° de l'option sélectionnée à "l'étape" prédédente

<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
3
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
14 févr. 2008 à 13:49
Tu as tout reçu avec php donc a l'affichage tu teste si tu as $_POST... si tu l'as ben tu fais en sorte de mettre le bon selected a la bonne option et si tu as rien dans $_POST tu affiche la liste normalement.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 févr. 2008 à 14:32
>>

Je me suis faite grillée par...
    ah non maelob ! codesSources est un  lieu public !
       et en griller une est strictement défendu par la loi !

    au fait, maelob : t'es une nana ? si oui : bienvenue !
          les intervenantes sont plutôt rares... hélas.
          ( si non, bienvenu aussi )
<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 févr. 2008 à 14:37
>>je ne sais plus où j'habite
    on est tous des SDF.  
    si c'est résolu : nickel.
<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
3
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
14 févr. 2008 à 13:35
merci les p'ti loups,

dans l'immédiat, j'ai dupliqué, je vais tester la soluce de maelob quand j'aurai réglé mon problème initiale.

je m'explique:
en fait je suis en galère parce que je procède comme suit:

1) je construit ma page de filtre, les listes sont construitent dynamiquement avec MySQL dans un objet FORM de type :

<form method= "post" name="filtres" action="" onsubmit="AppliqFiltres($Flt_lst_cps.......)">';

2) lors de la création dynamique des listes, je définis un select par défault avec 'selected'
3) DANS LA MEME page, j'affiche le résultat. (au premier chargement de la page, comme l'utilisateur n'a pas encore opéré de choix, ma requete est donc select * from table et le résultat s'affiche). Le but est que l'utilisateur affine ce résultat en opérant des choix dans les listes de filtre.
4) l'utilisateur fait ces choix et clic sur le bouton de commande de type :

echo '';

5) je récupère les valeurs via : (effectivement BULTEZ , merci)

if (isset($_POST['lst_cps']))
{
  $Flt_lst_cps = $_POST['lst_cps'];
  $id_lst_cps = $_POST['textfieldcps'];
  //$Flt_ID_lst_cps = $_POST['document.lst_cps.id'];
  //$Filtre1 = filtres.lst_cps.value;
  //echo $Filtre1.' !!!
';
  //echo $Flt_lst_cps.'
';
  //echo $Flt_ID_lst_cps.'
';
     if ($Flt_lst_cps == '-')
     {
        $Flt_lst_cps ="%";
     }
  }
  else {
       $Flt_lst_cps ="%";
}

(je vérifie si $_POST['lst_cps'] existe car au premier chagement de la page ce n'est pas le cas)

et c'est là que ça se corse...

à ce moment là, il me réaffiche la page complète avec le résultat voulu, les filtres sont bien appliqués mais les listes sont réinitialisées et donc elles n'affichent plus le ou les choix des utilisateurs.

c'est pour cette raison que je me suis tourné vers l'éventualité d'ajouter du javascript, pour replacer les choix des utilisateurs.

j'ai retouché le code que j'avait trouvé par:

echo 'function changCPS()';
echo '{';
echo 'var Chaine;';
echo 'Chaine = document.filtres.lst_cps.options'; //on spécifie la liste a traiter
//echo '[document.filtres.lst_cps.selectedIndex].value;'; //on récupere le texte de cette liste
echo '[document.filtres.lst_cps.selectedIndex].id;'; //on récupere l' id sélectionné
//echo 'document.filtres.textfieldcps.value = Chaine.valueOf();'; //on met ce texte dans un champ texte
echo 'document.filtres.textfieldcps.value = [document.filtres.lst_cps.selectedIndex];'; //on met l' id dans un champ texte
echo '}';

ce qui me permet de récupérer aussi l' id de la liste. Mais je ne suis pas plus avancé, je ne parviens pas à replacer la liste sur les choix faits par l'utilisateur.
pour info mes listes sont créées comme suit:

          print "CPS demandeur

            <select name='lst_cps' onChange='changCPS();'>
                    <option id='0' value='-' selected >NC</option>";
                    $slq = mysql_query('SELECT * FROM `cps`');

                    $i=0;
                    while ($donnees = mysql_fetch_array($slq) )
                    {
                       $CritereFiltreCPS = $donnees['cpsvalue'];
                       $i++;
                       echo '<option id="'.$i.'" value="'.$donnees['cpsvalue'].'" >'.$donnees['cpsname'].'</option>';
                    }
          print "</select>

en revanche, merci, je récupère bien les choix qui me permettent de définir avec précision ma requete SQL et ainsi affiner le résultat.

Pour mon principal soucis (dessus depuis 2 jours!) est ce que javascript peux m'aider ou est ce que c'est l'architecture de page qui merdouille ?

je me demande si je ne dois pas casser ma page en deux et ajouter un include en fonction d'une variable initialisé à 0:
L' include aurai pour objectif de construire les listes dynamiques au 1er chargement

0 = c'est la première fois que la page est chargée, j'app l'include
1 = la page est rechargée parce que l'utilisateur à opéré un premier  filtrage et donc pas d'include

Qu'en pensez vous?

Autodidact, je ne demande qu'à apprendre... Merci de votre aide
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
14 févr. 2008 à 13:49
Je me suis faite grillée par Bultez :D
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
14 févr. 2008 à 14:33
merci à vous,

à force de me retourner le cerveau pour apprendre, comprendre et solutionner, je ne sais plus où j'habite
merci à vous

Autodidact, je ne demande qu'à apprendre... Merci de votre aide
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
14 févr. 2008 à 14:39
Oui oui je suis une nana... Comme tu as pu le voir j'ai ecris grilléE.

Merci de m'accueillir aussi gentillement :-)

Je participe un peu en attendant une réponse à une de mes question sur laquelle je planche depuis hier.

Sinon de rien [auteur/M000004965/201720.aspx M000004965]c'est toujours un plaisir d'aider des gens motivés pour apprendre, bon courage pour la suite ;-)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 févr. 2008 à 14:49
>>Comme tu as pu le voir j'ai ecris faitE grilléE.
    oui oui.... mais tu connais les problèmes d'ortografe sur les forums...
    re re bienvenu alors, puisses-tu continuer à intervenir...

>>en attendant une réponse à une de mes question
    en javascript ? pas vu ! ( pas pris remarque )

<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
14 févr. 2008 à 14:56
Ouai je suis d'accord avec toi pour les fautes d'orthographe mais j'essais de faire gaffe un maximum car quand tu rend un rapport ou une doc truffée de fautes ça fait pas très sérieux...

Ma petite question est la;-)

Je passerai intervenir (quand le temps me permettra) même après que mon problème soit résolu promis :-p
0
Rejoignez-nous