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

Bibliothèques & Frameworks Discussion :

Récupérer une valeur dans un Select


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut Récupérer une valeur dans un Select
    Bonjour,
    Je souhaiterai lors de l'édition d'une occurrence pouvoir récupérer dans un select la valeur contenue initialement dans la table.
    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut précision
    Peux tu préciser parce que là c'est très très flou...
    As tu un morceau de ton code, etc ...

    ERE

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Peux tu préciser parce que là c'est très très flou...
    As tu un morceau de ton code, etc ...

    ERE
    Bonjour,
    Oui pas de soucis !

    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
    42
    43
    44
    45
    46
    47
    48
     
           <tr>
     
              <td style="width:170px;"><strong>Nom de l'activit&eacute;</strong></td>
     
              <td>
     
              <input 
     
                   dojotype="Textbox"
     
                   type="text"
     
                   id="activite"
     
                   name="activite"
     
                   value="<?php echo $infosActivite['Nom_Activite'];?>"
     
                   trim="true"
     
                   uppercase="false"
    	       maxlength="4"
     
                   hacks="false"
     
                   style="width: 300px;"/>
     
              </td>
     
           </tr>
     
    	<tr>
     
              <td><strong>Pour quel diplome ?</strong><br /></td>
     
          <td colspan="3">
          	<select dojotype="Select" 
          		dataurl="../../data/activites/diplomes.js" 
          		style="width: 300px;" 
          		name="diplcourt" 
          		id="diplcourt"
                    value="<?php echo $infosActivite['Nom_Dipl_Court'];?>">
          	</select>      
     
               </td>     
     
    	</tr>
    Donc je récupère sans soucis le contenu de la ligne de ma table que je veux éditer, mais par contre quand je souhaite avoir le "value" pour le select ça ne marche pas !

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Questions
    Salut,

    2 questions avant de te répondre précisément:
    • Quelle version de Dojo utilises tu ?
    • Si tu utilises une version < 0.9, as tu la possibilité d'upgrader vers une 0.9+ ?



    ERE

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Salut,

    2 questions avant de te répondre précisément: quelle version de dojo utilises tu ?
    Etant donné que je travaille sur un projet déjà commencé, je n'ai donc pas télécharger dojo et ne sait pas la version.
    En allant voir quelques fichiers dans la bibliothèque dojo, j'ai lu régulièrement en commentaire, que c'était la version 2.1.
    Donc c'est peut être celle ci que j'utilise.

    Merci.

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Pas la bonne version
    Il n'existe pas de 2.1

    0.3x
    0.4x
    0.9x
    1.0x
    1.1x
    1.2x

    Fais ton choix !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Apparemment cela serait la version 1.0x.
    Merci !

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Version 0.4
    Bon a priori vu ton code il me semble que c'est une 0.4. Ton code ne pourrait pas fonctionner en 0.9+.

    Peux tu ajouter ce code pour tester ta valeur retournée:

    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
     
           //ajouter cette focntion JS
     
            function displayValue(val){
    		alert('Valeur:' +val);
    	}
     
            //modifier ton select
          	<select dojoType="Select" 
          		dataUrl="../../data/activites/diplomes.js" 
          		style="width: 300px;" 
          		name="diplcourt" 
          		id="diplcourt"
                    value="<?php echo $infosActivite['Nom_Dipl_Court'];?>"
                    onValueChanged="displayValue">
          	</select>

    Vérifie qu'il t'affiche la valeur attendue.
    Et peux tu poster un bout de ton fichier diplomes.js qui doit être je pense un tableau JS ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Bon a priori vu ton code il me semble que c'est une 0.4. Ton code ne pourrait pas fonctionner en 0.9+.

    Peux tu ajouter ce code pour tester ta valeur retournée:

    Vérifie qu'il t'affiche la valeur attendue.
    Et peux tu poster un bout de ton fichier diplomes.js qui doit être je pense un tableau JS ?
    Merci de ton aide.
    Après test je n'obtiens pas de résultat.

    Voici le code de mon fichier diplome.js.

    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
     
    [
    	["BEP METIERS PRODUCTION MECANIQUE INFORMATISEE","BEPMPMI"],
    	["CAP AGENT POLYVALENT DE RESTAURATION","CAPAPR"],
    	["BAC PROFFESSIONNEL ESTETHIQUE COSMETIQUE PARFUMERIE","BACPROECP"],
    	["BEP CONDUITE ET SERVICES DANS LE TRANSPORT ROUTIER","BEPCSTR"],
    	["CAP AGENT D''ENTREPOSAGE ET DE MESSAGERIE","CAPEM"],
    	["BAC PROFESSIONNEL LOGISTIQUE","BACPROLOG"],
    	["MENTION COMPLEMENTAIRE ESSAYAGE RETOUCHE VENTE","MCERV"],
    	["BEP CARRIERES SANITAIRES ET SOCIALES","BEPCSS"],
    	["BEP METIERS DE LA COMPTABILITE","BEPMC"],
    	["BEP VENTE ACTION MARCHANDE","BEPVAM"],
    	["BEP METIERS DE L''HYGIENE","BEPMHPE"],
    	["CAP MAINTENANCE ET HYGIENE DES LOCAUX","CAPMHL"],
    	["CAP METIER DU PRESSING","CAPMP"],
    	["BAC PROFESSIONNEL COMPTABILITE","BACPROCOMP"],
    	["BAC PROFESSIONNEL SECRETARIAT","BACPROSEC"],
    	["BAC PROFESSIONNEL COMMERCE","BACPROCOMM"],
    	["BAC PROFESSIONNEL SERVICES DE PROXIMITE ET VIE LOCALE","BACPROPVL"],
    	["BEP METIERS DE LA MODE","BEPMM"],
    ]

  10. #10
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Comment cela ?
    Tu dois avoir un résultat: si la boite de message ne s'affiche pas c'est qu'il y a une erreur JS quelque part. Peux tu la renvoyer stp ?

    Et au passage quel navigateur utilises tu pour ton dev ? IE ? Si oui, peux tu essayer de faire un test avec Firefox ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Tu dois avoir un résultat: si la boite de message ne s'affiche pas c'est qu'il y a une erreur JS quelque part. Peux tu la renvoyer stp ?

    Et au passage quel navigateur utilises tu pour ton dev ? IE ? Si oui, peux tu essayer de faire un test avec Firefox ?
    J'ai mis la fonction que tu m'as donnée dans un fichier .js que j'appelle au début de ma page ou je souhaite récupérer une valeur.
    J'utilise FF, étant sous linux je ne teste pas sous IE (pour le moment).
    Effectivement le "alert" qui devrait m'ouvrir une boite de dialogue ne s'affiche pas du tout !

  12. #12
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Reste à savoir pourquoi...
    Le code JS que tu as initialement écrit semble correct.

    L'erreur peut donc provenir de n'importe où.

    Et si tu ne vois pas la boite de message quand tu sélectionnes une un élément de la combo, il te faut tracker l'erreur JS qui a dû être déclenchée. Sans celle-ci cela va être difficile à cerner.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Le code JS que tu as initialement écrit semble correct.

    L'erreur peut donc provenir de n'importe où.

    Et si tu ne vois pas la boite de message quand tu sélectionnes une un élément de la combo, il te faut tracker l'erreur JS qui a dû être déclenchée. Sans celle-ci cela va être difficile à cerner.
    En fait quand je selectionne j'ai bien la boite d'alerte qui me donne le diplome sélectionné !
    Sauf qu'au départ de la page, j'ai toujours le select qui est vide. Le contenu du champ dans ma table n'est pas visible. Ce qui fait que quand je souhaite éditer ma page, on ne voit pas quel diplome l'on doit éditer.
    Merci.

  14. #14
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Solution
    Salut,

    Effectivement après avoir regardé le code source du Select dans Dojo 0.4 il n'existe aucun moyen de sélectionner par défaut une valeur d'un widget
    Select. La seule solution que j'entrevois c'est de ton créer propre widget qui effectue ça. Allons y.

    Il y aurait la possibilité de créer ton propre Widget dans ton propre Namespace, mais cela sortirait du cadre ici, donc je te propose de faire
    au plus simple, à savoir modifier le code source original de Dojo pour ajouter la fonctionnalité.

    • La première chose à comprendre c'est que l'attribut value mis dans la balise Select est ignoré par Dojo.
    • D'un autre côté le Select dispose d'une fonction setAllValues(label, value) qui affiche le texte "label" et affecte la valeur en cours à "value"
    • Toute propriété d'un widget est automatiquement affecté par son attribut associé si celui-ci existe; Autrement dit si tu écris <select dojoType="Select" initValue="CAPMHL" ... > alors dojo va essayer d'initialiser le widget en cherchant à affecter la propriété "initValue" avec la valeur "CAPMHL"


    Concrètement, tu vas aller dans les sources de Dojo, et trouver ce fichier: src/widget/Select.js

    Et tu remplaces le code existant par celui-ci (je t'ai mis les commentaires):
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    dojo.provide("dojo.widget.Select");
    dojo.require("dojo.widget.ComboBox");
    dojo.require("dojo.widget.*");
    dojo.require("dojo.widget.html.stabile");
    dojo.widget.defineWidget("dojo.widget.Select", dojo.widget.ComboBox, {
     
    	/**
    	* Ajout pour gérer les valeurs initiales
    	* Pour êre utilisé, créer les attributs associés dans le code HTML de la balise
    	*/
    	initValue:"", initText:"", 
     
     
    	forceValidOption:true, setValue:function (value) {
    	this.comboBoxValue.value = value;
    	dojo.widget.html.stabile.setState(this.widgetId, this.getState(), true);
    	this.onValueChanged(value);
    }, setLabel:function (value) {
    	this.comboBoxSelectionValue.value = value;
    	if (this.textInputNode.value != value) {
    		this.textInputNode.value = value;
    	}
    }, getLabel:function () {
    	return this.comboBoxSelectionValue.value;
    }, getState:function () {
    	return {value:this.getValue(), label:this.getLabel()};
    }, onKeyUp:function (evt) {
    	this.setLabel(this.textInputNode.value);
    }, setState:function (state) {
    	this.setValue(state.value);
    	this.setLabel(state.label);
    }, setAllValues:function (value1, value2) {
    	this.setLabel(value1);
    	this.setValue(value2);
    },
     
    /**
    * Modification de l'initialisation: redéfinition de la création du widget
    *
    */
    postCreate:function () {
    	//on appelle la méthode de la class parent (ComboBox)
    	this.constructor.superclass.postCreate.apply(this, arguments);
     
    	//Test élémentaire: si on a une valeur à initialiser...
    	//Ce test permet de rester compatible avec le mode de fonctionnement normal du Select
    	if (this.initValue) {
    		this.setAllValues(this.initText, this.initValue);
    	}
    }
     
     
    });
    Tu peux maintenant changer ta balise Select Dojo ainsi (attention j'ai changé le path des datas pour mon test):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          	<select dojoType="Select" 
          		dataUrl="diplomes.js" 
          		style="width: 300px;" 
          		name="diplcourt" 
          		id="diplcourt"
                    initText="CAP MAINTENANCE ET HYGIENE DES LOCAUX"
                    initValue="CAPMHL"
                 ></select>

    Dis moi ce que tu en penses et si cela répond à tes attentes.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup cela marche très bien.
    En fait, ce que je souhaiterai exactement c'est récupérer dans le "value" récupérer le contenu d'un champ de ma table.
    Au départ j'ai un formulaire d'ajout qui insère des données dans ma table. Et la ensuite je créé une page pour éditer ma table. Mais dans ce formulaire d'édition je voudrais que mes select est pour valeur d'origine, ce qui a été entré lors de l'ajout.
    Afin que l'utilisateur s'il voulait modifier une seule autre chose, n'est pas a remettre a chaque fois la valeur du diplôme ou autre qu'il ne voulait pas spécialement modifier.
    Je suis désolé de vous donner tant de mal.
    C'est déjà très bien ce que vous avez fait.
    Encore merci.

  16. #16
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Observations
    Pour affecter le Select de ton formulaire tu peux appeler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Select01 est le Select dans la ligne de ta table HTML
    var sel1 = dojo.widget.byId("Select01")
     
    //formSelect est le Select de ton formulaire
     
    //la ligne de code:
    dojo.widget.byId("formSelect").setAllValues(sel1.getLabel(), sel1.getValue());

    Enfin je voudrais juste faire une observation quant à ton code original.
    Tu as créé une table HTML, et pour chaque ligne de cette table tu génères une balise du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          	<select dojoType="Select" 
          		dataUrl="diplomes.js" 
          		style="width: 300px;" 
          		name="diplcourt" 
          		id="diplcourt"
                    initText="<?= texte ?>"
                    initValue="<?= valeur ?>"
                 ></select>
    Or les données que tu charges dans ton select résident dans un fichier Javascript "diplomes.js" sur le server ...
    Finalement, si ta table fait 100 lignes, tu vas exécuter 100 requêtes HTTP pour rapatrier 100 fois le même fichier...
    Alors évidemment le server va certainement renvoyer un code HTTP 302 indiquant au navigateur qu'il peut utiliser son cache car le
    fichier n'aura pas été modifié, mais il reste quand même 100 requêtes qui fondamentalement NE SERVENT A RIEN, car tes données sont statiques.

    Le bon sens (en conservant ton architecture de table HTML) serait de générer les données directement DANS la page, au sein de ton Select, en utilisant
    des balises option qui sont acceptées par Dojo Select (dans ce cas, il n'y a plus de dataUrl), à l'ancienne quoi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          	<select dojoType="Select" 
          		style="width: 300px;" 
          		name="diplcourt" 
          		id="diplcourt"
                    initText="<?= texte ?>"
                    initValue="<?= valeur ?>">
    			<option value="BEPMPMI">BEP METIERS PRODUCTION MECANIQUE INFORMATISEE</option>
    			<option value="CAPAPR">CAP AGENT POLYVALENT DE RESTAURATION</option>
    			<option value="BACPROECP">BAC PROFFESSIONNEL ESTETHIQUE COSMETIQUE PARFUMERIE</option>
    			...
    	</select>


    Bon courage,

    ERE

Discussions similaires

  1. Récupérer une valeur dans un formulaire SELECT javascript
    Par valentin12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/04/2014, 09h06
  2. [Interbase] Récupérer une valeur dans un select
    Par ftoutin dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/01/2007, 13h36
  3. récupérer une valeur dans un selected
    Par lacfab dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2005, 09h48
  4. Réponses: 5
    Dernier message: 09/09/2005, 17h51
  5. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49

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