Imprimer la Page | Fermez la fenêtre

Ajouter une option dans un sélect

Imprimé depuis: Forum openElement
Categorie:

openElement


Nom du Forum: OE dynamique - bases de données etc.
Description du Forum: Le systeme de gestion de données et les Paquets d'Elements
URL: https://forums.openelement.uk/fr/forum_posts.asp?TID=24177
Date: 27 Feb 2024 à 21:30
Version logiciel: Web Wiz Forums 12.04 - http://www.webwizforums.com


Sujet: Ajouter une option dans un sélect
Posté par: Nandjm
Sujet: Ajouter une option dans un sélect
Posté le: 27 Avr 2022 à 15:20
Bonjour,

Le code suivant fonctionne très bien sur une page "basique" hors OpenElement et je l'ai donc modifié pour prendre en compte la liste déroulante qui est sur la page.

Ce code a été ajouté en End Body - en javascript sur la page OpenElement.


    var listepays = document.querySelector('*[id^="WE7572973d2e"]');
   
                     
    function Get_Pays() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = () => {
            //    La transaction est terminée ?
            if(xmlhttp.readyState == 4) {
            //    Si la transaction est un succès
                if(xmlhttp.status == 200) {
                // On traite les données reçues
                    let donnees = JSON.parse(xmlhttp.responseText);
                    // On boucle sur les données de la requête "Pays"
                    Object.entries(donnees.pays).forEach(country =>
                        {
                        var Nation0   = country[1].Nation;
                      

                        var OptionPays  = new Option(Nation0,Nation0);
                       
                        listepays.options[listepays.options.length] = OptionPays; })
                    }   
                }       
            }
            var Urlfichier = ".............db/ListePays.php";
            xmlhttp.open("GET", Urlfichier);
            xmlhttp.send(null);
            }
                       
Le même code crée donc les options dans la liste déroulante à partir de ma requête SQL (exécutée dans ListePays.php)  dans la page simple mais ne les crée pas dans la page OpenElement.
Je recherche donc une petite aide pour tenter de résoudre ce petit problème.

Avec tous mes remerciements

Cordialement

Jmd



Réponses:
Posté par: Hobby001
Posté le: 27 Avr 2022 à 15:26
Merci du retour

-------------
https://denislafrance.net" rel="nofollow - https://denislafrance.net https://www.youtube.com/playlist?list=PLWg7A6YtIr7VtnP3HvRpMhx8tFJET_fih" rel="nofollow - , Formation vidéo sur OE


Posté par: Nandjm
Posté le: 27 Avr 2022 à 21:15
Bonjour

Le problème est bien situé sur la ligne :

listepays.options[listepays.options.length] = OptionPays;

La donnée est bien présente avec la "value" et l'Id mais je n'arrive pas à l'ajouter dans la liste déroulante.

Quand je commente la ligne, je retrouve bien les données "pays".

Jmd


Posté par: Hobby001
Posté le: 28 Avr 2022 à 01:20
Êtes-vous bien certain que ceci: '*[id^="WE7572973d2e"]' fonctionne?

-------------
https://denislafrance.net" rel="nofollow - https://denislafrance.net https://www.youtube.com/playlist?list=PLWg7A6YtIr7VtnP3HvRpMhx8tFJET_fih" rel="nofollow - , Formation vidéo sur OE


Posté par: Nandjm
Posté le: 28 Avr 2022 à 07:54
Oui, j'ai vérifié l'Id de la liste déroulante et c'est le bon.

J'y ai ajouté manuellement une première option et si j'en ajoute une autre, on est bien dans le cas d'une liste déroulante.

Voici les lignes de code créées par OE.

<div id="WE7572973d2e" class="BaseDiv RWidth OEWEListBoxV2 OESK_WEListBox2_Default OECenterAH" style="z-index:37">
      <div class="OESZ OESZ_DivContent OESZG_WE7572973d2e">
       <select name="WE7572973d2e" class="OESZ OESZ_ListBox OESZG_WE7572973d2e OEDynTag0">
        <option value="1" class="OESZ OESZ_Options OESZG_WE7572973d2e">Etats-Unis</option>
       </select>
      </div>
     </div>



J'ai changé la ligne en :

listepays.innerHTML += '<option value = "'+ Nation0 +'">' + Nation0 + '</option>';

puis en

 <option value= "'+ Nation0 + '" class="OESZ OESZ_Options OESZG_WE18a6e3b276" selected="selected">Nation0</option>

Les options s'affichent bien  à la suite de la première  mais sans fond dans une listbox pour la première modification.

Pour la seconde, les options s'affichent également bien à la suite mais dans une listbox à fond blanc.


Posté par: Hobby001
Posté le: 28 Avr 2022 à 11:52
Si je comprends votre situation, votre code fonctionne hors OE mais pas dans OE.   Donc la syntaxe de OE ne convient pas.

Mettez le code HTML de la liste déroulante qui fonctionne dans un bloc de code visuel sur la page OE.




-------------
https://denislafrance.net" rel="nofollow - https://denislafrance.net https://www.youtube.com/playlist?list=PLWg7A6YtIr7VtnP3HvRpMhx8tFJET_fih" rel="nofollow - , Formation vidéo sur OE


Posté par: Nandjm
Posté le: 29 Avr 2022 à 09:07
Bonjour

Merci pour le proposition.
Entre temps, je me suis réorienté vers la méthode que j'avais utilisée il y a quelques semaines : reprendre le fichier créé par OE  dans un autre éditeur et le modifier avec les éléments qui fonctionnent hors OE.

Je commente le div qui me pose problème et je glisse mes lignes de code en lieu et place de celui créé grâce à OE et le tour est joué. Par contre, je ne peux plus reprendre le fichier sous OE sous peine de voir annuler tout mon travail. Je garde donc en copie les deux fichiers d'origine : la page créée sous OE et la page créée hors OE, au cas où.

OE est un formidable outil mais, à mon sens, pas assez souple pour travailler avec des requêtes dans les bases de données, ou, et c'est une autre hypothèse, je n'ai pas totalement exploré ses possibilités pour la gestion de bases de données.

Je ne sais pas si c'est possible mais il pourrait intéressant d'avoir la possibilité d'inclure du code dans à l'intérieur de n'importe quel ligne de code, comme je l'ai fait "par bricolage".

Cordialement

Jmd



Posté par: Hobby001
Posté le: 29 Avr 2022 à 11:06
Plus un logiciel vous tiens la main moins il est fait pour ce type de spécificités.

C'est pourquoi le bloc de visuel existe.  Il vous permet d'ajouter du code dans un endroit précis d'une page et de s'assurer que OE en tient compte


-------------
https://denislafrance.net" rel="nofollow - https://denislafrance.net https://www.youtube.com/playlist?list=PLWg7A6YtIr7VtnP3HvRpMhx8tFJET_fih" rel="nofollow - , Formation vidéo sur OE



Imprimer la Page | Fermez la fenêtre

Forum Software by Web Wiz Forums® version 12.04 - http://www.webwizforums.com
Copyright ©2001-2021 Web Wiz Ltd. - https://www.webwiz.net