Imprimer la Page | Fermez la fenêtre

Liste déroulante en PHP

Imprimé depuis: Forum openElement
Categorie:

openElement


Nom du Forum: Scripts pour votre site
Description du Forum: Exemple de scripts utilisables dans les blocs de codes
URL: https://forums.openelement.uk/fr/forum_posts.asp?TID=22891
Date: 18 Avr 2024 à 14:54
Version logiciel: Web Wiz Forums 12.04 - http://www.webwizforums.com


Sujet: Liste déroulante en PHP
Posté par: Lolobass34
Sujet: Liste déroulante en PHP
Posté le: 04 Août 2017 à 08:25
Bonjour,

J'utilise OE depuis quelques temps maintenant, j'ai réalisé 3-4 sites avec, mais là je calle.

Je voudrais tout simplement remplir une liste déroulante avec les résultats d'une requête.
J'ai tenté d'insérer un code visuel, mais comment le placer avant la balise </select> ?

voici mon code :
<select name="WE0c4972b541" class="OESZ OESZ_ListBox OESZG_WE0c4972b541 OEDynTag0"></select>

Et le code PHP :

                        <?php
                        require('/class/database.class.php');
                            
                        $dbh1 = new DataBase();
                        $connexion1 = $dbh1->Connect();

                        $sql1 = "SELECT DATE_FORMAT(date_calendar,'%d/%m/%Y') as date_calendar, (10 - (if(nb_resa is null,0,nb_resa))) as dispo";
                        $sql1 .= " FROM tld_calendar LEFT OUTER JOIN (SELECT Date_resa as dateresa, COUNT(statut_resa) as nb_resa ";
                        $sql1 .= " FROM tld_resa WHERE (statut_resa > 0)) as resa ON (date_calendar = dateresa)";
                        $sql1 .= " WHERE tld_calendar.date_calendar >= NOW() and tld_calendar.date_calendar <= date_add(NOW(),interval 6 month);";

                        $res1=$connexion1->prepare($sql1);
                        $res1->execute();
                        $albi=$res1->fetchAll(PDO::FETCH_OBJ);
                       foreach($albi as $row)
                       { 
                       echo"<option id=".$row->date_calendar." value=".$row->date_calendar." class=OESZ OESZ_Options OESZG_WE0c4972b541>".$row->date_calendar." - ".$row->dispo." places disponibles</option>"; 
                       } 
                       ?>

Pour m'assurer que tout ceci fonctionne, j'ai forcé la position du code php hors OE et ça marche très bien. Il ne me reste qu'à l'intégrer dans ma page OE....

Merci pour votre aide.





Réponses:
Posté par: Dmit OE
Posté le: 04 Août 2017 à 14:13
Bonjour,

Si besoin de le faire prendre en charge par Envoi Mail ou Redirection Formulaire, on est oblige d'utiliser des elements OE. Mais, on peut copier le contenu de la balise pour l'inserer.

Du coup, votre code dans le Bloc sera qqch comme:

<div id='my-php-selects' style='display:none'>
(votre code PHP ici)
</div>
<script>
$(function(){ // apres chargement de la structure de la page
$('#WEid_element_select').find('select').html(
              $('#my-php-selects').html()
);
});


Posté par: Lolobass34
Posté le: 04 Août 2017 à 15:33
Merci pour voter réponse,

Mais la problématique que je rencontre est comment insérer le code via OE exactement où il doit être.
Que ce soit en visuel ou non, OE ne me permet pas de e positionner avec la balise </select>....
Laurent.


Posté par: Dmit OE
Posté le: 04 Août 2017 à 16:58
Dans le code que j'ai propose, c'est l'element OE qui s'affiche (element ayant l'ID WEid_element_select), et le code vous pouvez inserer ailleurs il n'y aura rien qui s'affiche.


Posté par: Lolobass34
Posté le: 04 Août 2017 à 17:50
Je viens d'essayer, mais la liste ne se remplit pas.

Dans le startbody j'ai placé mon PHP (bloc de code visible HTML).

<div id='my-php-selects' style='display:none'>
<?php
require('class/database.class.php');
        $dbh1 = new DataBase();
        $connexion1 = $dbh1->Connect();

        $sql1 = "SELECT DATE_FORMAT(date_calendar,'%d/%m/%Y') as date_calendar, (10 - (if(nb_resa is null,0,nb_resa))) as dispo";
                        $res1=$connexion1->prepare($sql1);
                        $res1->execute();
                        $albi=$res1->fetchAll(PDO::FETCH_OBJ);

                        foreach($albi as $row)
                        { 
                        echo"<option id=".$row->date_calendar." value=".$row->date_calendar." class=OESZ OESZ_Options OESZG_WE0c4972b541>".$row->date_calendar." - ".$row->dispo." places disponibles</option>"; 
                        } 
?>
</div>

interprété :
<div id='my-php-selects' style='display:none'>
<option id=19/08/2017 value=19/08/2017 class=OESZ OESZ_Options OESZG_WE0c4972b541>19/08/2017 - 8 places disponibles</option>...
<option id=28/08/2017 value=28/08/2017 class=OESZ OESZ_Options OESZG_WE0c4972b541>28/08/2017 - 10 places disponibles</option>  
</div>

J'ai bien les infos que je souhaite afficher.

Pour le html OE :

<div id="WE0c4972b541" class="BaseDiv RWidth OEWEListBoxV2 OESK_WEListBox2_Default" style="z-index:2012" title="Date de r&#233;servation">
<div class="OESZ OESZ_DivContent OESZG_WE0c4972b541">
      <select name="WE0c4972b541" class="OESZ OESZ_ListBox OESZG_WE0c4972b541 OEDynTag0">
</select>
         </div>
</div>

et le code JS mis dans le endbody dans un bloc de code source JS:
$(function(){ // apres chargement de la structure de la page
$('WE0c4972b541').find('select').html(
              $('#my-php-selects').html()
);
});

Mais la liste reste vide...

Où ai-je commis une erreur?

Merci encore de votre aide.


Posté par: MicroVinc
Posté le: 04 Août 2017 à 18:25
Il manque # devant l'id :
$('#WE0c4972b541').find('select').html(
              $('#my-php-selects').html()
);
});


-------------
-Éléments pour OpenElement : https://goo.gl/Wq3Cpp" rel="nofollow - ICI
-Tutoriels pour OpenElement : https://goo.gl/NdpS1i" rel="nofollow - ICI


La Bretagne, un État dans l'État


Posté par: Dmit OE
Posté le: 04 Août 2017 à 22:04
Aussi, il manque les "" autour de valeurs d'attibutes des options, il faut par exemple ({} c'est pour ne pas avoir besoin de sortir de "" a chaque variable):

echo"<option id=\"{$row->date_calendar}\" value=\"{$row->date_calendar}\" class=OESZ OESZ_Options OESZG_WE0c4972b541>{$row->date_calendar} - {$row->dispo} places disponibles</option>"; 


Posté par: Lolobass34
Posté le: 05 Août 2017 à 11:47
Bonjour,

C'est parfait !
Il manquait juste le #.
Merci beaucoup, je vais pouvoir continuer....

J'ai du coup une autre question...
Dans mon formulaire j'ai 3 import de fichier (pour pièce jointe), le mail part très bien avec les pièces, mais le formulaire conserve le nom des fichier après envoi !
Comment réinitialiser tout ?

Encore merci.

Laurent


Posté par: MicroVinc
Posté le: 05 Août 2017 à 11:58
Après le post il faut :


session_unset(); // Détruit toutes les variables de la session courante.
session_destroy(); // Détruit toutes les données associées à la session courante. Cette fonction ne détruit pas les variables globales associées à la session, de même, elle ne détruit pas le cookie de session.

Ou 
unset($MaVariable);


-------------
-Éléments pour OpenElement : https://goo.gl/Wq3Cpp" rel="nofollow - ICI
-Tutoriels pour OpenElement : https://goo.gl/NdpS1i" rel="nofollow - ICI


La Bretagne, un État dans l'État


Posté par: Dmit OE
Posté le: 05 Août 2017 à 16:30
Je pense qu'il parle des elements-champs "fichier" (input type=file). On peut eventuellement recharger la page apres l'envoi.


Posté par: Lolobass34
Posté le: 05 Août 2017 à 19:06
C'est exactement ce que je pense faire.
J'avoue que j'ai un peu de mal avec l'archi d'OE...


Posté par: Dmit OE
Posté le: 05 Août 2017 à 22:50
Au pire vous pouvez faire votre propre <form>, en utilisant une Groupe d'Elements et sa nouvelle propriete pour choisir la balise englobante, form dans ce cas, et ses attributes (action, method etc.), et mettre les elements dedans. Comme ca vous pourrez gerer vous-meme le fonctionnement.


Posté par: Lolobass34
Posté le: 06 Août 2017 à 14:38
C'est ce que j'aurais voulu éviter et pouvoir ton gérer depuis OE, mais j'avoue que j'ai quelques difficultés.
N'étant pas un expert JS, j'ai pris l'habitude d'utiliser des rechargement de page php pour effectuer mes vérifications et validations...
Et du coup dans OE ça devient problématique.
Concrètement, j'essaye de mettre en place un formulaire de réservation.
Le liste déroulante contient les dates avec le nombre de places dispo.
En l'état actuel du code, j'ai une date sur toutes les lignes, ce qui présélectionne la date la plus proche. Pourquoi pas. J'ai pour habitude d'ajouter une ligne dans mon select :

echo"<option id=999 value=999 class=OESZ OESZ_Options OESZG_WE0c4972b541>Sélectionner la date</option>"; 

Et je suis donc obligé d'effectuer un test sur le onchange du select pour vérifier que l'id selected <> 999.

si je rajoute ce code dans ma page OE via un editeur de texte (NetBeans) tout fonctionne, mais lorsque je reviens sur OE pour travailler sur ma page, tout disparait....

C'est là que j'ai besoin d'aide...

Merci


Posté par: Dmit OE
Posté le: 07 Août 2017 à 09:52
Il faut utiliser des Blocs de Code Source type Javascript, et le code du genre:

$(function(){
  $('#WEid_element_Select  select').change(function(){ 
    var $select = $(this);
    if ($select.val() != '999') { 
    // ....
    }
  });
});


Posté par: Lolobass34
Posté le: 07 Août 2017 à 16:23
C'est parfait.
Ça marche au top.
Merci beaucoup Dmit 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