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

Langage PHP Discussion :

Création d'un Select à partir des éléments d'un formualire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Création d'un Select à partir des éléments d'un formualire
    Hello.
    Je cherche comment génerer un menu déroulant à partir d'un formulaire.
    J'ai pensé à utiliser une boucle for() mais là je coince .
    Voici le code que j'ai rédigé et qui aparament ne marche pas
    Le code de la page où il ya le formulaire avec les champs dynamiques
    Mapage.html

    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
    <script>
    function create_champ(i) {
    var i2 = i + 1;
    document.getElementById('add1_'+i).innerHTML = 'Nom: <input type="text" size="15"  name="name_'+i+'" ></span>&nbsp;Valeur: <input name="value_1" size="24" type="text" id="flux_'+i+'" />';
    document.getElementById('add1_'+i).innerHTML += (i <= 10) ? '<br /><span id="add1_'+i2+'" style="font-family=Arial; size:10px;"><a href="javascript:create_champ('+i2+')">Ajouter un champ</a></span>' : '';
    document.forms['myform'].elements['nb_champs'].value="" +i+ ""; 
    }
    </script>
    <form name="myform" method="post" action="valid.php">
     
    Nom: <input name="name_1" type="text" id="name_1" size="15" >
    Value: <input name="value_1" type="text" id="flux_1" size="24"><br/>
    <span id="add1_2"><a href="javascript:create_champ(2)">Ajouter un champ</a></span><br />
    <input type="submit" value="valider">
    </form>

    Et pour la page php pour générer mon menu déroulant
    valid.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?
    foreach($_POST as $key => $value) {
       if(!isset($$key)) 
            $$key = $value;
    }
     
    $select = '<select name="myselect" >
        <option value="'.$value.'_1">'.$name.'_1</option>';
    for( $i=2; $i<=$nb_champs; $i++) {
     $select .= '<option value="'.$value.'_'.$i.'">'.$name.'_'.$i.'</option>' ."\n";
    }
    echo $select . '</select>;
    ?>

    Mais là dans le script de validation je coince, ca ne marche pas ...
    J'espère que j'étais assez clair ...

    Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    pourkoi tu n'utilise pas une base de donnée c'est plus simple.??

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par KHELOUIATI
    pourkoi tu n'utilise pas une base de donnée c'est plus simple.??
    Pourquoi? quesque ça me servirait ?

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    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
    <?
    foreach($_POST as $key => $value) {
       if(!isset($$key)) 
            $$key = $value;
    }
     
    $select = '<select name="myselect" >
        <option value="'.$value.'_1">'.$name.'_1</option>';
    for( $i=2; $i<=$nb_champs; $i++) {
     $select .= '<option value="'.$value.'_'.$i.'">'.$name.'_'.$i.'</option>' ."\n";
    }
    echo $select . '</select>;
    ?>
    Euh moi je comprends pas ce code.
    $nb_champs il vient d'où ? Idem pour $name ?
    Ton
    $value n'est pas sur d'exister ou est égal à 0 ou null.

    Et puis ton foreach il sert à quoi dans ton cas ? Récupérer la valeur de chaque champs ?

    Moi je serai partant pour utiliser un nom du styel array (exemple : nom[])


  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Kerod
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?
    foreach($_POST as $key => $value) {
       if(!isset($$key)) 
            $$key = $value;
    }
     
    $select = '<select name="myselect" >
        <option value="'.$value.'_1">'.$name.'_1</option>';
    for( $i=2; $i<=$nb_champs; $i++) {
     $select .= '<option value="'.$value.'_'.$i.'">'.$name.'_'.$i.'</option>' ."\n";
    }
    echo $select . '</select>;
    ?>
    Euh moi je comprends pas ce code.
    $nb_champs il vient d'où ? Idem pour $name ?
    Ton
    $value n'est pas sur d'exister ou est égal à 0 ou null.

    Et puis ton foreach il sert à quoi dans ton cas ? Récupérer la valeur de chaque champs ?

    Moi je serai partant pour utiliser un nom du styel array (exemple : nom[])

    Heu il ya deux fichiers dans mon script :
    - mapage.html pour la saisie des données dans le formulaire.
    - valid.php pour la génération de mon menu ...

    foreach() reprend le valeurs du formulaire de la page "mapage.html"


  6. #6
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut bien plus simple...
    ...et bien plus clair en faisant dans le formulaire un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='text' name='ceQueTuVeux' />
    et dans ce champ, tu écris toutes les valeurs séparées par une virgule (,).

    Puis tu les récupères dans ton .php avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayName = explode(",", $_POST[ceQueTuVeux]);
    La vie, c'est aussi simple que ça.

  7. #7
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    @SimoX1 : Ca j'avais bien compris mais je vois pas l'utilité de faire ton foreach tout seul dans son coin et de travailler sur une variable qui est présente dans ce foreach (mais peut etre que je suis pas assez réveillé ).
    Comme je le disais tu peux récuperer plus facilement tes champs si tu ne mets pas de _X dans le nom mais que tu passes directement comme ceci : nom[].
    Mais comme tu as commencé comme ceci, pourquoi ne pas faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $select = '<select name="myselect" >'; for($i=0;$i<count($_POST)-1;$i++)
    {
         $select .= '<option value="'.$_POST['value_'.$i].'">'.$_POST['name_'.$i].'</option>';
    }
    echo $select . '</select>;
    Ca devrait marcher. J'ai pas trop eu le temps de tester mais ca devrait etre quelque chose comme ca.(c'est un peu barbare mais bon).
    Petite précision $_POST contient tout tes champs plus le submit à la fin, en principe.

    Ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="'.$value.'_1">'.$name.'_1</option>
    il devrait pas trop servir donc je l'ai pas mis

    @zyongh : C'est peut etre pas ce qu'il souhaite faire tout simplement.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    BINGO !! ça marche
    j'ai rajouté un ' à la fin de </select>
    et ca tourne !

    Donc voila je reprend mon code (j'ai réalisé des modifications) :
    Mapage.html
    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
    <script>
    function create_champ(i) {
    var i2 = i + 1;
    document.getElementById('add1_'+i).innerHTML = 'Nom: <input type="text" size="15"  name="name_'+i+'" ></span>&nbsp;Valeur: <input name="value_'+i+'" size="24" type="text" id="flux_'+i+'" />';
    document.getElementById('add1_'+i).innerHTML += (i <= 10) ? '<br /><span id="add1_'+i2+'" style="font-family=Arial; size:10px;"><a href="javascript:create_champ('+i2+')">Ajouter un champ</a></span>' : '';
    document.forms['myform'].elements['nb_champs'].value= i ; 
    }
    </script>
    <form name="myform" method="post" action="valid.php">
     
    Nom: <input name="name_1" type="text" id="name" size="15" >
    Value: <input name="value_1" type="text" id="flux" size="24"><br/>
    <input type="hidden" name="nb_champs">
    <span id="add1_2"><a href="javascript:create_champ(2)">Ajouter un champ</a></span><br />
    <input type="submit" value="valider">
    </form>
    et pour le fichier pour valider
    valid.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
    $nb_champs = $_POST['nb_champs'];
    $select = '<select name="myselect" >';
    for($i=1;$i<=$nb_champs;$i++)
    {
         $select .= '<option value="'.$_POST['value_'.$i].'">'.$_POST['name_'.$i].'</option>';
    }
    echo $select . '</select>';
    ?>
    et voilivoilou ! Merci pour tous

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

Discussions similaires

  1. [AC-97] Création d'une table à partir des résultats d'une requete analyse croisée
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/11/2009, 21h46
  2. [AC-2003] Etat à partir des éléments selectionnés d'une liste
    Par -ULK- dans le forum IHM
    Réponses: 8
    Dernier message: 17/06/2009, 10h42
  3. Réponses: 4
    Dernier message: 09/01/2008, 20h10
  4. Select sur des éléments communs ?
    Par AsmCode dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/10/2007, 10h20
  5. Réponses: 5
    Dernier message: 21/05/2006, 13h23

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