Rafraichir form après choix dans <SELECT>
Résolu
reedbedroom
Messages postés
80
Date d'inscription
Statut
Membre
Dernière intervention
-
reedbedroom -
reedbedroom -
Bonjour,
J'ai un formulaire contenant deux liste Select, l'une contenant des pays, et l'autre contenant des ville.
Je souhaiterai pouvoir sélectionner un pays -> rafraichir le formulaire -> récupérer la variable $pays pour ensuite charger le contenu de la liste ville en PHP.
Je sais que je l'ai déjà fait sur un site il y a un moment mais je ne m'en souviens plus. Le tout étant de ne pas perdre les données du formulaire saisies dans les champs précédents et de récupérer le pays pour la requete SQL des villes.
Est il possible d'envoyer la valeur de liste pays avec onchange="location.reload()+value" par exemple ?!
Merci !
J'ai un formulaire contenant deux liste Select, l'une contenant des pays, et l'autre contenant des ville.
Je souhaiterai pouvoir sélectionner un pays -> rafraichir le formulaire -> récupérer la variable $pays pour ensuite charger le contenu de la liste ville en PHP.
Je sais que je l'ai déjà fait sur un site il y a un moment mais je ne m'en souviens plus. Le tout étant de ne pas perdre les données du formulaire saisies dans les champs précédents et de récupérer le pays pour la requete SQL des villes.
Est il possible d'envoyer la valeur de liste pays avec onchange="location.reload()+value" par exemple ?!
Merci !
A voir également:
- Rafraichir form après choix dans <SELECT>
- Liste déroulante de choix excel - Guide
- Google form sans compte google - Forum Google Docs
- Please select boot device - Forum Windows
- Reboot and select proper boot device asus - Forum Matériel & Système
- [Google form] Fichiers joints et connexion - Forum Webmastering
2 réponses
Bonsoir.
Une solution consiste à utiliser une requête Ajax déclarée dans une fonction javascript qui serait appelée sur l'événement "onchange" de ta zone de liste pays.
La requête Ajax appelle un script PHP en lui passant en méthode GET ou POST au choix, l'id ou le nom du pays. Elle reçoit en retour une chaine JSON générée par le script PHP et contenant la liste des villes. Elle peut alors effacer le contenu de la zone de liste ville et insérer les enregistrements reçus. Le tout se fait sans rechargement de page.
Si tu ne connais pas Ajax, tu peux trouver de bons tutos sur internet en tapant requête Ajax ou httprequest. Par ailleurs, tu peux utiliser une librairie javascript comme prototypejs ou jquery qui facilite grandement l'utilisation de requêtes Ajax.
Une autre solution au plus simple est de créer une page qui contient ton script PHP de traitement, puis ton code HTML. Il te faut ensuite un formulaire qui contient tes deux zones de liste et un champ caché nommé "op" par exemple qui sert à mémoriser l'action demandée. Le paramètre "action" de ton formulaire rappelle cette même page. Tu associes une fonction javascript à l'événement onchange de ta liste pays. Cette fonction met à jour la propriété value du champ caché "op" (par exemple "chargeVilles" puis poste le formulaire. La page est rappelée. Le script PHP figurant en début de page vérifie la présence de données dans $_POST et si en trouve, teste la valeur du champ "op", lance le traitement associé (en utilisant les autres valeurs contenues dans le $_POST - dans ton cas l'id ou le nom du pays sélectionné) et place les données dans un tableau PHP (par exemple $listeVilles). Enfin, il faut que les "<option>" de ta liste ville soit générés par PHP à partir des informations lues dans le tableau.
Ex :
<select name="villes">
<?php
if(isset($listeVilles) && !empty($listeVilles))
{
foreach($listeVilles as $id=>$nom)
{
echo '<option value="' . $id . '">' . $nom . '</option>';
}
}
?>
</select>
Voilà grosso modo, la démarche, mais bien sûr, elle peut être optimisée.
Bon courage
IC
Une solution consiste à utiliser une requête Ajax déclarée dans une fonction javascript qui serait appelée sur l'événement "onchange" de ta zone de liste pays.
La requête Ajax appelle un script PHP en lui passant en méthode GET ou POST au choix, l'id ou le nom du pays. Elle reçoit en retour une chaine JSON générée par le script PHP et contenant la liste des villes. Elle peut alors effacer le contenu de la zone de liste ville et insérer les enregistrements reçus. Le tout se fait sans rechargement de page.
Si tu ne connais pas Ajax, tu peux trouver de bons tutos sur internet en tapant requête Ajax ou httprequest. Par ailleurs, tu peux utiliser une librairie javascript comme prototypejs ou jquery qui facilite grandement l'utilisation de requêtes Ajax.
Une autre solution au plus simple est de créer une page qui contient ton script PHP de traitement, puis ton code HTML. Il te faut ensuite un formulaire qui contient tes deux zones de liste et un champ caché nommé "op" par exemple qui sert à mémoriser l'action demandée. Le paramètre "action" de ton formulaire rappelle cette même page. Tu associes une fonction javascript à l'événement onchange de ta liste pays. Cette fonction met à jour la propriété value du champ caché "op" (par exemple "chargeVilles" puis poste le formulaire. La page est rappelée. Le script PHP figurant en début de page vérifie la présence de données dans $_POST et si en trouve, teste la valeur du champ "op", lance le traitement associé (en utilisant les autres valeurs contenues dans le $_POST - dans ton cas l'id ou le nom du pays sélectionné) et place les données dans un tableau PHP (par exemple $listeVilles). Enfin, il faut que les "<option>" de ta liste ville soit générés par PHP à partir des informations lues dans le tableau.
Ex :
<select name="villes">
<?php
if(isset($listeVilles) && !empty($listeVilles))
{
foreach($listeVilles as $id=>$nom)
{
echo '<option value="' . $id . '">' . $nom . '</option>';
}
}
?>
</select>
Voilà grosso modo, la démarche, mais bien sûr, elle peut être optimisée.
Bon courage
IC
DarkAurora
Messages postés
417
Date d'inscription
Statut
Membre
Dernière intervention
27
Il faut effectivement passer par là... si jamais tu ne sais pas par ou commencer, viens nous donner tes impressions et on t'aideras à réaliser les appels ajax et autres
Bonsoir,
Et merci pour ta réponse. J'ai retrouver la solution que j'avais utilisé il y a quelques temps. Moins compliquée et suffisante pour le site que je réalise actuellement.
Au cas où cela intéresse quelques la voici :
Merci.
Et merci pour ta réponse. J'ai retrouver la solution que j'avais utilisé il y a quelques temps. Moins compliquée et suffisante pour le site que je réalise actuellement.
Au cas où cela intéresse quelques la voici :
<select name="pays_sportif" id="pays_sportif" onchange="window.location='index.php?page=promesse_don.php'&pays_sportif=' + document.form.pays_sportif.value;" > <? if($pays_sportif != "") { echo '<option value="'.$pays_sportif.'" selected="selected">'.$pays_sportif.'</option>'; } ?> <option value="Allemagne">Allemagne</option> <option value="Australie">Australie</option> <option value="Belgique">Belgique</option> <option value="Chili">Chili</option> <option value="Aspagne">Espagne</option> <option value="Usa">États Unis</option> <option value="Finlande">Finlande</option> <option value="France">France</option> <option value="Italie">Italie</option> <option value="Nouvelle zelande">Nouvelle Zélande</option> <option value="Portugal">Portugal</option> <option value="Royaume uni">Royaume Uni</option> <option value="Suede">Suède</option> </select>
Merci.