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 :

Liste déroulante dynamique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut Liste déroulante dynamique
    Bonjour,
    Je suis en train de créer un petit menu permettant de modifier/supprimer des lignes contenu dans un fichier texte sous la forme :

    Dupont Thomas 21
    Jean Jacques 56

    Je voudrais donc afficher dans ma liste c'est nom afin de les avoirs en variable pour pouvoir par la suite executer mes actions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        <SELECT name="fonction">
            <OPTION VALUE="choix">
            <?php echo "$contents"; ?>
            </OPTION>
     
        </SELECT>
    Ceci marche mais m'affiche tous sur une seule ligne, logique d'ailleur...
    Voila je me demande si c'est possible de faire ca ?

    Merci d'avance pour vos réponses
    Yann

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Ben ouais normal que t'aies tout sur une seule ligne.

    Il faut qu'à chaque nouvelle ligne de ton fichier, tu créées une nouvelle option dans ta liste déroulante.

    D'ailleurs au lieu de faire:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo "$contents"; ?>
    Fais plutôt:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $contents; ?>
    Pas besoin de créer une chaine de caractères, tu perds en performance pour rien

  3. #3
    Membre Expert
    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 : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut et bienvenue dans les forums de développez.com !

    Si il s'agit d'une chaîne de caractères, il faut déjà la transformer en tableau. Il faudra donc spécifier le séparateur.
    Ensuite, tu génères les options avec les élement de ce tableau. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $chaine='choix;element 1;element 2;element 3;element 4';
     
    $tableau=@explode(';',$chaine);
     
    echo '<select name="fonction">'."\n";
     
    foreach($tableau as $key=>$value)
      echo '<option value="'.$key.'">'.$value.'</option>'."\n";
     
    echo '</select>'."\n";
    ?>
    Voici le résultat : http://sub0.developpez.com/php/select.php
    Regarde le code source de cette page pour voir le résultat en HTML...

  4. #4
    Membre averti
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut
    Ca marche trop bien !
    Merci beaucoup de vos réponses si rapide !

    Juste une petite question avant de mettre "Résolu", peut-on formater la chaine pour n'afficher que la 1er colonne du fichier ou ca serait trop compliqué ?
    Par exemple, dans mon cas, juste le nom ?
    Merci d'avance !

    Yann

  5. #5
    Membre Expert
    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 : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par horus535 Voir le message
    peut-on formater la chaine pour n'afficher que la 1er colonne du fichier
    J'ai un peu de mal à comprendre ta question...
    De quel fichier parles-tu ? De quelle colonne ?

    Dans la démo, je ne vois aucun fichier et aucune colonne.
    Il ya seulement un script, une chaîne, un séparateur, un tableau, une boucle, une liste déroulante...

  6. #6
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Je crois que j'ai compris, si ça te dérange pas sub0, je reprends la main

    En fait, il a un fichier qui stocke une série de noms, prénoms et age.

    Il en parle ici:
    Citation Envoyé par horus535 Voir le message
    Je suis en train de créer un petit menu permettant de modifier/supprimer des lignes contenu dans un fichier texte sous la forme :

    Dupont Thomas 21
    Jean Jacques 56
    Donc en fait là l'idée, c'est d'isoler le nom pour n'afficher que lui.

    Ce qui va être galère puisque le séparateur entre le nom et le prénom, c'est un espace, or l'espace sert aussi dans les noms à particule, par exemple. EN manipulant avec les expressions régulières ceci-dit, tu devrais pouvoir isoler le nom. J'ai la tête creuse et le ventre plein là alors je saurais pas te l'écrire, mais je sais que c'est faisable. Si elle est pas sortie avant, j'essaierais de te la mettre quand j'aurais digéré

  7. #7
    Membre averti
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut
    Hmm j'ai un petit problème, quand je veux récupérer une donnée de la liste, je la séléctionne et clique sur un bouton qui (pour le moment) m'éxécute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $choix = $_POST["fonction"];
    echo "$choix";
    ?>
    J'ai un chiffre 0 ou 1 en fonction de la donnée que je séléctionne.

    Pourtant mon code donne :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <FORM method=post action="collecte.php">
    <TABLE BORDER=0>
    <TR>
    	<TD>Collecter les informations sur : </TD>
    	<TD>
    	<?php include("menuderoulant.php"); ?>
    	</TD>
     
    	<TD COLSPAN=2>
    	<INPUT type="submit" value="Collecter">
        </TD>
     
    </TR>
    </TABLE>

    Je poste tout en cherchant !
    Merci

    PS: merci a toi gwinyam, digère bien :p je règle ce problème avant d'essayer de formater la chaine !

  8. #8
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    C'est normal qu'il te sorte soit un 1, soit un 0. Si tu lui fournis que deux lignes. Tu lui en fournirais 3 qu'il te sortirait aussi un 2.

    Par contre, je réitère, n'utilise pas ça:
    Mais ça:
    Tu gagneras en performance. Certes le gain est absolument imperceptible pour un truc de cette taille mais c'est une habitude à prendre

    Pareil:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include("menuderoulant.php"); ?>
    Utilise plutôt :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include('menuderoulant.php'); ?>

    En fait, le délimiteur de chaîne " permet d'indiquer à PHP qu'il y a des variables à interpréter dans la chaine et donc qu'il doit parcourir la chaine avant de l'utiliser. Ce qui est une perte de temps de le faire quand c'est une chaine sans variable ou quand la chaine est justement seulement une variable.
    En utilisant le symbole ', tu indiques à PHP d'utiliser la chaine telle qu'elle est. Donc gain de temps de traitement

  9. #9
    Membre averti
    Inscrit en
    Août 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 28
    Par défaut
    Ok merci des conseils j'optimise le code la !
    Mais le truc c'est que je veux pas un 0,1,2 ou même 3, je veux la ligne de ma liste déroulante que j'ai choisi

    Merci !

  10. #10
    Membre Expert
    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 : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par horus535 Voir le message
    Ok merci des conseils j'optimise le code la !
    Mais le truc c'est que je veux pas un 0,1,2 ou même 3, je veux la ligne de ma liste déroulante que j'ai choisi

    Merci !
    Dans ce cas, il suffit de récupérer l'élement correspondant dans le tableau :
    Citation Envoyé par gwinyam Voir le message
    Ce qui va être galère puisque le séparateur entre le nom et le prénom, c'est un espace, or l'espace sert aussi dans les noms à particule, par exemple.
    Je ne pense pas que ça posera problème.
    Suffira de compter le nombre d'élément pour voir si il yen a un de trop...

Discussions similaires

  1. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 17h51
  2. Liste déroulante dynamique
    Par Screw16 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/10/2005, 20h37
  3. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 20h51
  4. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 12h09
  5. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 10h07

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