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 :

accéder à un contrôle de formulaire avec un nom de tableau


Sujet :

JavaScript

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut accéder à un contrôle de formulaire avec un nom de tableau
    Bonjour à tous,
    voilà, j'ai un formulaire que je construis dynamiquement.
    Donc, je construis une liste de 4 champs (en fonction d'une base de données), et je voulais conserver les mêmes noms pour les champs.
    Du genre :


    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
    23
    24
     
    <script type='text/javascript'><!--
    function change_etablisst(formulaire,num){
    alert(document.getElementById('id_typeetablissement\[num\]').selectedindex);
    alert(formulaire.id_typeetablissement[num].selectindex);
    }
    // --></script>
    <form name='A1.5' enctype='multipart/form-data' action='maj_admin.php' method='post'>
    Type d'établissement
    <select id='id_typeetablissement[0]'  name='id_typeetablissement[0]'  onchange='change_etablisst(this.form,0)'>
    <option value='0'>(Aucun)</option>
    <option value='2'>Ecoles élémentaires</option>
    <option value='1'>Ecoles maternelles</option>
    <option value='4'>établissements d'enseignement supérieur</option>
    <option value='3'>établissements publics locaux d'enseignemen</option>
    </select>
    <input type='hidden name=' name='choix_typeetablisst[0]'>
     
    <select name='id_etablissement[0]' >
    <option value='0'>(Aucun)</option>
     
    </select>
    <input type='submit' name='save' value='Enregistrer'></td>
    </form>
    Je voudrais, dans ma fonction javascript récupérer le contenu de id_typeetablissement[0].
    Dans la fonction, j'ai laissé les 2 syntaxes que j'ai déjà essayées (edn me basant sur d'autres posts), mais qui ne marchent pas.
    A partir de là, je voudrais remplir le second SELECT (par un submit en js) , etc.
    Mais mon premier problème consiste à trouver la bonne syntaxe (si 'est possible, mais je pense qu oui), pour accéder à ce champ.
    J'y arrive sans problème si le champ s'appelle simplement 'id_typeetablissement'.
    A moins, que je ne doive faire ça en php ? Puisque de toute façon, je vais faire un requête en base pour récupérer les établissements du type sélectionné...
    Si quelqu'un peut éclairer ma lanterne...
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Tu devras de toutes façons utiliser PHP pour traiter la saisie.
    Normalement, on récupère les éléments de la liste avec PHP. Par exemple, si ces éléments sont dans le tableau "$lst"...
    Dans cet exemple, on va récupérer la sélection lorsque l'utilisateur va cliquer sur VALIDER :
    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
    23
    24
    25
    26
    27
    28
    29
    <?php
     
    if(isset($_POST['selectionner'])){
      if(isset($_POST['myselect']))
        echo 'L\'élément sélectionné est : "'.stripslashes($_POST['myselect']).'".'; 
      else echo 'Aucun élément sélectionné...';
    }
     
    $lst=Array();
    // Ici, récupère ta liste de données -> $lst
    // Exemple :
    $lst[]="Ecoles élémentaires"; 
    $lst[]="Ecoles maternelles"; 
    $lst[]="établissements d'enseignement supérieur"; 
    $lst[]="établissements publics locaux d'enseignement"; 
     
    $cnt=count($lst); 
    if($cnt>0){ 
      echo '<form method="post">'.
           '<select name="myselect" onchange="">';
      for($x=0;$x<$cnt;$x++){ 
        echo '<option value="'.$lst[$x].'">'.$lst[$x].'</option>'."\n";
      }
      echo '</select>'.
           '<input name="selectionner" type="submit" value=" VALIDER "/>'.
           '</form>';
    }
     
    ?>
    Si tu veux que la liste se positionne automatiquement sur le dernier élémént sélectionné, remplace la boucle par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      for($x=0;$x<$cnt;$x++){ 
        echo '<option value="'.$lst[$x].'"';
        if($lst[$x]==stripslashes(@$_POST['myselect'])) echo ' selected';
        echo '>'.$lst[$x].'</option>'."\n"; 
      }
    ps: je déplace ce sujet dans le forum php ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    En fait, mon problème, c'est que je vais avoir plusieurs select qui vont contenir la même liste.
    Je veux pouvoir identifier chaque select indépendamment.
    Si par exemple, j'ai :

    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
    23
    24
    25
    26
    27
    28
    29
     
    <select id='liste[1]'>
    <option value=1>element 1</option>
    <option value=2>element 2</option>
    <option value=3>element 3</option>
    </select>
     
    <select id='sous-liste[1]'>
    </select>
     
     
    <select id='liste[2]'>
    <option value=1>element 1</option>
    <option value=2>element 2</option>
    <option value=3>element 3</option>
    </select>
     
    <select id='sous-liste[2]'>
    </select>
     
     
    <select id='liste[3]'>
    <option value=1>element 1</option>
    <option value=2>element 2</option>
    <option value=3>element 3</option>
    </select>
     
    <select id='sous-liste[3]'>
    </select>
    Comment je peux savoir sur quel element de quel select liste[$i] 'utilisateur a cliqué pour mettre à jour le bon select sous-liste[$i]
    Parce que mes sous-listes vont se constituer selon quel element est choisi dans liste[$i].

    Et, si tu penses que je ne peux pas récupérer l'élement via javascript, alors oui déplaces le post dans php.
    Merci

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Avant d'envoyer le code html au client, tu sais forcément combien de lists tu vas lui envoyer.
    Exemple, ta requête te renvoit liste1, 2 et 3. Tu possèdes le nom des listes dans le table $lst

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
     
    //============================================================ 
    // Simulation du résultat de ta requête php 
    //============================================================ 
    $lst[]="liste1"; 
    $lst[]="liste2"; 
    $lst[]="liste3"; 
     
    $elem[]="élément1"; 
    $elem[]="élément2"; 
    $elem[]="élément3"; 
    $elem[]="élément4"; 
     
    //============================================================ 
    // Traitement de la saisie 
    //============================================================ 
    $cnt_lst=count($lst); 
    $cnt_elem=count($elem); 
     
    for($x=0;$x<$cnt_lst;$x++){ 
      if(isset($_POST['valider'.$x])){ 
        echo 'La liste sélectionnée est : "'.$lst[$x].'".<br/>'.
             'L\'élément sélectionné est : "'.$_POST[$lst[$x]].'".<br/><br/>'; 
      } 
    }
     
    //============================================================ 
    // Création du formulaire ensuite... 
    //============================================================ 
    echo '<form method="post">';
    for($x=0;$x<$cnt_lst;$x++){ 
      echo '<select name="'.$lst[$x].'">'; 
      for($y=0;$y<$cnt_elem;$y++){ 
        echo '<option value="'.$elem[$y].'">'.$elem[$y].'</option>'."\n"; 
      } 
      echo '</select>'. 
           '<input type="submit" name="valider'.$x.'"/><br/>'."\n";
    } 
    echo '</form>';
    ?>
    Si tu ne veux avoir qu'un seul bouton "valider", il faudra mémoriser la dernière liste à avoir été sélectionnée.
    Dans ce cas, utilise l'évènement onchange pour modifier la valeur d'un champs caché...

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    D'accord, je vois. Mais je pensais pas faire comme ça.
    Je voulais conserver des noms sous forme de tableau.
    En html, je voulais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <select name='liste[1]'>
    ...
    </select>
     
    <select name='liste[2]'>
    ...
    </select>
     
    ...
    Mais, je m'en sortirai effectivement beaucoup mieux si je construis mes select avec des noms simples.
    Merci

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

Discussions similaires

  1. [XL-2010] VBA : Bouton contrôle de formulaire avec insertion forme et suppression ancienne
    Par anonymous9 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/03/2014, 20h24
  2. Contrôle de formulaire avec Javascript
    Par darkterreur dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 06/09/2010, 21h51
  3. Accéder à un contrôle asp:Checkbox avec javascript
    Par marco01 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/06/2009, 13h43
  4. Champ de formulaire avec nom de la forme a[b][c][x]
    Par Baldurien dans le forum Struts 2
    Réponses: 5
    Dernier message: 01/03/2007, 17h47
  5. Accéder à un contrôle avec son numéro
    Par nattyman dans le forum Access
    Réponses: 2
    Dernier message: 23/09/2006, 06h47

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