Liste déroulante et affichage
Résolu/Fermé
Juuli
Messages postés
34
Date d'inscription
vendredi 3 février 2012
Statut
Membre
Dernière intervention
12 février 2019
-
12 déc. 2015 à 20:45
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 13 déc. 2015 à 16:09
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 13 déc. 2015 à 16:09
A voir également:
- Liste déroulante et affichage
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Supprimer une liste déroulante excel - Forum Word
- Supprimer liste déroulante excel - Forum Excel
1 réponse
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
140
Modifié par heliconius le 13/12/2015 à 11:40
Modifié par heliconius le 13/12/2015 à 11:40
Bonjour,
NB: Vu que tu veux afficher le résultat d'une requête SQL, je suppose a priori que tes pages sont écrites en PHP. Je te propose donc une solution PHP.
La chose peut se faire si ta liste déroulante se trouve dans une frame pour ne pas modifier ce qui est à droite (si ta liste est à gauche) :
Ci-dessous le contenu du fichier liste.php (frame de gauche). Le fichier liste.php est récursif, c'est à dire qu'il s'appelle lui-même avec l'attribut action du conteneur form.
1)
Quand la page est affichée pour la première fois, le formulaire s'affiche mais n'a pas été validé et donc la variable tableau $_POST["sValider"] correspondant au contrôle input de type submit et de nom sValider n'existe pas. Donc, le code PHP qui suit n'est pas exécuté
2)
Quand tu cliques sur le bouton [Afficher] du formulaire, le traitement va être effectué par la page désignée dans l'attribut action (et donc PHP_SELF). Ce qui revient à dire que la page va se rappeler elle-même mais cette fois-ci AVEC le formulaire validé et transmis dans la variable tableau $_POST utilisable par le script qui va traiter (et donc par le script lui-même). A ce moment là, la page va s'afficher à nouveau avec affichage du formulaire (au même endroit, et on aura l'impression qu'il n'a pas bougé) et comme le contrôle input de type submit et de nom sValider existe dans la variable $_POST["sValider"],le code du if() sera exécuté.
Ce code :
1) c'est créer la requête,
2) l'exécuter,
3) afficher le résultat.
Ci-dessous, un exemple en http://www.fauque.fr/demogen/ordre.php
Dans une base de données généalogique de démo, je vais piocher les personnes (noms et prénoms). Le formulaire permet de décider de l'ordre d'affichage. Le principe est le même et le code, ci-dessous.
Cela répond-il à ta question ?
Bon dimanche...
Un problème sans solution est un problème mal posé. (Albert Einstein)
NB: Vu que tu veux afficher le résultat d'une requête SQL, je suppose a priori que tes pages sont écrites en PHP. Je te propose donc une solution PHP.
La chose peut se faire si ta liste déroulante se trouve dans une frame pour ne pas modifier ce qui est à droite (si ta liste est à gauche) :
+-------------+-----------------------------------+
| liste | reste de la page à ne pas toucher |
| ... | ... |
+-------------+-----------------------------------+
<frameset cols="30,*" frameborder="0" border="0" marginheight="0" marginwidth="0">
<frame name="liste" src="liste.php" scrolling="no" noresize>
<frame name="main" src="page.php" scrolling="auto">
</frameset>
Ci-dessous le contenu du fichier liste.php (frame de gauche). Le fichier liste.php est récursif, c'est à dire qu'il s'appelle lui-même avec l'attribut action du conteneur form.
<html> <head> <title></title> </head> <body> <form name="statistique" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <select name="categorie"> <option value="">--Choisissez--</option> <option value="1">Par année</option> <option value="2">Par lieu</option> </select> <br> <input type="submit" name="sValider" value="Afficher"> </form> <p> </p> <!--Ici (ci-dessous) afficher le résultat de l'option choisie--> <?php if($_POST["sValider"]) { $requete = "écrire la requête SQL à exécuter"; ... exécuter la requete... ... afficher le résultat ... } ?> </body> </html>
1)
Quand la page est affichée pour la première fois, le formulaire s'affiche mais n'a pas été validé et donc la variable tableau $_POST["sValider"] correspondant au contrôle input de type submit et de nom sValider n'existe pas. Donc, le code PHP qui suit n'est pas exécuté
2)
Quand tu cliques sur le bouton [Afficher] du formulaire, le traitement va être effectué par la page désignée dans l'attribut action (et donc PHP_SELF). Ce qui revient à dire que la page va se rappeler elle-même mais cette fois-ci AVEC le formulaire validé et transmis dans la variable tableau $_POST utilisable par le script qui va traiter (et donc par le script lui-même). A ce moment là, la page va s'afficher à nouveau avec affichage du formulaire (au même endroit, et on aura l'impression qu'il n'a pas bougé) et comme le contrôle input de type submit et de nom sValider existe dans la variable $_POST["sValider"],le code du if() sera exécuté.
Ce code :
1) c'est créer la requête,
2) l'exécuter,
3) afficher le résultat.
Ci-dessous, un exemple en http://www.fauque.fr/demogen/ordre.php
Dans une base de données généalogique de démo, je vais piocher les personnes (noms et prénoms). Le formulaire permet de décider de l'ordre d'affichage. Le principe est le même et le code, ci-dessous.
<html> <head> <title></title> </head> <body> <form name="type_ordre" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <select name="choix"> <option value="null">Par ordre</option> <option value="nom">Nom, Prénom</option> <option value="prenom">Prénom, Nom</option> </select><br/> <input type="submit" name="submit" value="Afficher"> </form> <p> </p> <?php if($_POST["submit"]) { // Définition de la connexion. Mettre ses infos de connexion define (NOM, "xxxx"); // Utilisateur MySQL define (PASS, "xxxxxxxxxx"); // Mot de passe define (SERVER, "xxxxxxxxxxxxx"); // adresse du serveur MySQL define (BASE, "xxxx"); // Nom de la base de données $connexion = mysql_pconnect(SERVER,NOM,PASS); // Connexion au serveur $ok = mysql_select_db(BASE,$connexion); // Sélection de la base // Prise en compte du choix fait dans le formulaire switch($_POST["choix"]) { case "nom" : $ordre = "lname,fname"; break; case "prenom" : $ordre = "fname,lname"; break; } // Création de la requête et exécution, $requete = "SELECT lname,fname FROM gen_People ORDER BY $ordre;"; $resultat = mysql_query($requete,$connexion); // Affichage while($r=mysql_fetch_object($resultat)) { echo "$r->lname $r->fname<br/>\n"; } } ?> </body> </html>
Cela répond-il à ta question ?
Bon dimanche...
Un problème sans solution est un problème mal posé. (Albert Einstein)
13 déc. 2015 à 15:22
Je pense avoir compris comment faire avec tes explications. Merci encore une fois d'avoir pris de ton temps pour m'expliquer (ce que tu as d'ailleurs très bien fait), bon dimanche à toi aussi !
Modifié par heliconius le 13/12/2015 à 16:10
Ben les forums d'entraide, c'est fait pour ça, non ?
A+.