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 :

[POO] Recuperer info dans un select autre que text et value


Sujet :

JavaScript

  1. #1
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut [POO] Recuperer info dans un select autre que text et value
    Bonjour,

    Je suis néophyte en js et je bloque sur qqchose qui a priori me semble simple.

    Je génère (via php) un "select" avec toutes une série d'"option".

    Il s'agit d'entrée dans une table sql, dans value je renseigne l'ID de l'enregistrement j'affiche la donnée utilisateur dans text et j'ai une info supplémentaire qui correspond au droit de suppression.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <select  name="TableBidon" >
      <option class='readOnly' value='ID00'>Donnee 1</option>
      <option class='readWrite' value='ID01'>Donnee 2</option>
    </select>
    Pour récupérer value et text pas de soucis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.form.TableBidon.options[document.form.TableBidon.selectedIndex].text;
    document.form.TableBidon.options[document.form.TableBidon.selectedIndex].value;
    Par contre pour récupérer les droits un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.form.TableBidon.options[document.form.TableBidon.selectedIndex].class;
    ne me donne aucun résultat (j'ai utilise class, mais aussi ID et même des mots non clef).

    Bien sur je peux tout concaténer dans value et le récupérer après, mais franchement c'est moche!

    Si qq'un a une solution propre je suis preneur.
    Le problème de droit est donné a titre d'exemple.

    cordialement,

    /JMLLB
    S'il n'y a pas de solutions, il n'y a pas de problème.

  2. #2
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Je ne suis pas sûr mais je crois que c'est className au lieu de class

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    +1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    bon il y a du changement.

    Effectivement la ou j'avais un undefined j'ai maintenant une valeur nulle (ce qui est normal puisque je n'ai pas défini de style pour readOnly ou readWrite.

    Mais je crains m'être mal exprime dans l'idéal j'aurai bien vu un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <select  name="TableBidon" >
      <option param1='12' param2='23' param3='34' value='ID00'>Donnee 1</option>
      <option param1='02' param2='03' param3='04'  value='ID01'>Donnee 2</option>
    </select>
    avec une récupération du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.form.TableBidon.options[document.form.TableBidon.selectedIndex].param1;
    document.form.TableBidon.options[document.form.TableBidon.selectedIndex].param2;
    document.form.TableBidon.options[document.form.TableBidon.selectedIndex].param3;
    De cette maniere je n'ai pas a refaire de consultation de ma base de donnees.

    J'ai utilisé le mot clef class car en créant de toute pièce un id cela n'a pas marché.

    en tout cas merci de votre promptitude!
    S'il n'y a pas de solutions, il n'y a pas de problème.

  5. #5
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Pour quoi ne pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (document.form.TableBidon.options[document.form.TableBidon.selectedIndex].value = 'ID00')
    {
    param1 = 12 ;
    param2 = 23 ;
    param3 = 34 ;
    }

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Je ne suis pas sur que cela focntionne avec tous les browsers avec l'attribut nommé directment dans la balise ...
    Par contre avec javascript tu peux attribuer une propriété à un objet ...
    peut être alors en lançant une fonction dans le onload ...

    sinon avec des champs cachés et des id rationnels ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par jumano Voir le message
    Pour quoi ne pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (document.form.TableBidon.options[document.form.TableBidon.selectedIndex].value = 'ID00')
    {
    param1 = 12 ;
    param2 = 23 ;
    param3 = 34 ;
    }
    euh... parce que les 12,23 et 34 sont des valeurs que je veux récupérer et que je ne connais pas a priori. Elles se trouvent dans une table sql dont je me sert pour générer mon select via du php. Mais j'ai peut être pas compris ce que tu voulais dire.

    Citation Envoyé par SpaceFrog
    Je ne suis pas sur que cela fonctionne avec tous les browsers avec l'attribut nommé directement dans la balise ...
    Je confirme ça ne marche pas du tout.

    Pour le reste je vais reprendre ca demain matin parce que les id rationnels et les onload ça ne me parle pas du tout et il se fait un peu tard...

    J'ai aussi essaye de créer un sous niveau de balise style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select  name="TableBidon" >
      <option value='ID00'>Donnee 1<param1 value='12'></param1></option>
    </select>
    avec une recuperation dans le genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.form.TableBidon.options[document.form.TableBidon.selectedIndex].param1.value;
    Mais ça a vraiment fâche le navigateur.

    ps: désole pour les accents mais je fais ce que je peux avec un clavier cyrillic.
    S'il n'y a pas de solutions, il n'y a pas de problème.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ton php peut renseigner des vairables javascript ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre averti Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Points : 425
    Points
    425
    Par défaut
    Utilises un objet pour gérer tes paramètres (que tu génères en php) :

    params={
    ID00:[p0,p1,p2],
    ID01:[p0,p1,p2],
    ...
    }

    ensuite, pour récupérer :

    p=params[document.form.TableBidon.options[document.form.TableBidon.selectedIndex].value];
    11001.00101.10010.10000.00111

  10. #10
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Bon je vais essayer de donner un exemple parlant.

    J'ai une table sql (PERSONNES) constituée des colonnes suivantes:

    ID,NOM,PRENOM,SEXE,AGE.

    via un script php défini dans un fichier je génère un select de cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <select  name="client" >
      <option sexe='h' age='34' value='ID00'>Roger DUPOND</option>
      <option sexe='f' age='58' value='ID01'>Ginette MARTIN</option>
    </select>
    inclus ce script dans différentes pages.

    Sur une page ou gère des groupes d'activités je peux utiliser les paramètres sexe et age pour refuser ou valider les soumissions de requêtes.
    Les paramètres age et sexe ne doivent pas apparaitrent à l'utilisateur mais seulement
    servir de contrôle.

    Comme je ne sais pas où et comment je vais utiliser ce script je ne peux être trop spécifique.
    Je voyais plutôt ça comme une structure où je pourrai accéder aux informations dont j'ai besoin selon les cas.

    J'espère que c'est plus clair.

    Je viens de voir la réponse de marts je vais donc essayer demain de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <select  name="client" >
      <option value='ID00'>Roger DUPOND</option>
      <option value='ID01'>Ginette MARTIN</option>
    </select>
    params={
    ID00:[h,34],
    ID01:[f,58]
    }
    merci,

    je vais voir ce que ça donne demain.
    S'il n'y a pas de solutions, il n'y a pas de problème.

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Et un truc dans ce 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
    <?php
      if (isset($_POST['btn']))  
      {
        list($client, $sexe, $age) = explode(',', $_POST['client']);
        echo 'client :' . $client . '<br>sexe : ' . $sexe . '<br>age : ' . $age . '<br>';
      }
    ?>
    <html>
      <head>
      </head>
      <body>
        <form name="test" method="post" action="">
          <select name="client" >
            <option value="ID00,h,34">Roger DUPOND</option>
            <option value="ID01,f,58">Ginette MARTIN</option>
          </select>
          <br>
          <input type="submit" name="btn" />
        </form>
      </body>
    </html>

  12. #12
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Problème réglé!

    Je suis passe par un tableau php que je récupére en tant que paramètre in/out
    de ma fonction qui construit mon select.
    Dans un deuxieme temps je recopie mon tableau php dans un tableau js qui va me servir pour faire mes verifications.

    C'est un peu compliqué a mon gout, mais bon ça marche et au je n'ai plus d'infos saucissonnées dans l'argument valeur.

    Je pensai qu'il avait moyen de construire des structures dont seulement une partie servait a l'affichage de manière plus souple mais je suis très loin de maitriser l'approche html/php/js.

    en tout cas merci de vos conseils!
    S'il n'y a pas de solutions, il n'y a pas de problème.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/12/2010, 17h46
  2. "Save as" dans une location autre que le fichier où est enregistré le code
    Par Victoire 85 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2007, 13h16
  3. Réponses: 3
    Dernier message: 18/07/2006, 10h32
  4. Réponses: 3
    Dernier message: 14/11/2005, 15h06
  5. Réponses: 1
    Dernier message: 15/08/2005, 19h38

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