Rendre un formulaire dynamique

Résolu
tom_apprenti Messages postés 6 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 6 septembre 2004 - 10 août 2004 à 12:13
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009 - 13 août 2004 à 18:42
Je voudrais rendre un formulaire dynamique .
J'ai 2 balises : une balise select correspondant à mes entreprises et une autre correspondant aux différents sites des entreprises .
Je veux que la liste des sites proposés corresponde à l'entreprise qui a été choisie par l'utilisateur .
Car sinon on affiche les 25 sites de mes entreprises dans le menu Site et non les 3 sites de l'entreprise qui a été sélectionnée !!!!!!
Il faudrait rester côté client donc utiliser du Javascript (que je ne connais pas trop) .
Le problème , c'est que pour afficher côté client la liste des sites de l'entreprise sélectionnée par l'utilisateur , il faut effectuer une requête SQL dans ma base et donc appeler le serveur .
C'est un casse-tête qui me semble insurmontable .
La seule petite solution que j'entrevois , c'est de soumettre le formulaire "automatiquement" dès lors que l'utilisateur sélectionne une entreprise dans la liste des entreprises qui lui sont proposées .
Peut on faire en sorte que , dès qu'un choix dans un menu a été fait , il y ait envoi automatique du formulaire au serveur (pour qu'il sache quelle entreprise a été sélectionnée) avec réaffichage de ce formulaire (avec comme sites les sites de l'entreprise choisie par l'utilisateur) pour que l'utilisateur puisse le compléter ?
Pensez vous qu'il s'agisse d'une bonne idée ? Et si oui , quelle fonction Javascript ou PHP utiliser ?

Tom :)

7 réponses

aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
10 août 2004 à 12:33
yep,

donc si on dit que ta liste deroulante entreprise s'appelle lstEntreprise et l'autre lstSite

tu peux ajouter un évenement sur lstEntreprise onchange="javascript:monform.submit();"

donc là tu vas soumettre direct ta page (surement qui s'appelle elle meme)

lorsque tu appelle ta page, au tout début tu regarde toujours si lstEntreprise à une valeur, si y en a une tu l'intègre dans ton where de ta requete qui sélectionne les sites... et comme ça c'est bon... tu n'auras que les sites qui sont relatifs à l'entreprise sélectionnée...

Ne pas oublier quand tu as une valeur de lstEntreprise qui est postée de mettre selected sur la valeur sinon :(

En gros ça ferais ça

<?php
.....

if(isset($_POST["lstEntreprise"]))
{
$cod_entreprise = $_POST["lstEntreprise"];
}
else
{
/* ya rien de posté */
$cod_entreprise = ""; /* g supposé que ctait de type string */
}

ensuite construction de la requete

$requeteSQL = "SELECT cod_site, nom_site from site";
if(strlen(trim($cod_entreprise))>0)
{
$requeteSQL .= " where entreprise_id='" . $cod_entreprise . "'";
};

tu fais ta requete,

et lorsque tu affiche les entreprises
tu oublie pas d'avoir ce code pour chaque option

<select name="lstEntreprise" id="lstEntreprise" onchange="javascript:monform.submit();" ... >
<option value=""> - choisissez -</option>
<option value="PHP" <?php if($cod_entreprise=="PHP") echo "selected "; ?>>SSII PHP Appli</option>
<option value="CS" <?php if($cod_entreprise=="CS") echo "selected "; ?>>Codes sources & Cie</option>
<option value="9T" <?php if($cod_entreprise=="9T") echo "selected "; ?>>Neuf télécom</option>
</select>

voila , en esperant avoir répondu a ta question ;)
-------------
Aurél :big)
3
tom_apprenti Messages postés 6 Date d'inscription lundi 9 août 2004 Statut Membre Dernière intervention 6 septembre 2004
10 août 2004 à 13:42
Encore merci Aurel .
Je vais changer mon code cette aprèm .
Tom :)
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
10 août 2004 à 13:45
de rien Tom (oublie pas réponse acceptée)
-------------
Aurél :big)
"Avant de dire à l'autre qu'il sait pas faire du vélo, vérifies d'abord que tu sais encore faire du tricycle. Après, tu pourras alors te permettre de lui faire remarquer gentiment que lui, il est sur une trottinette!"
0
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006
12 août 2004 à 18:14
G 1 porposition a faire, meme si g ne sais pas si c possible avec java Script car g ne connais pas trop les possibilités de ce langage: si on récupère toutes les entreprises et tous les sites existant dans la BDD, qu'on stocke dans un tableau le résultat de cette requete SQL dans un tableau-tampon, puis que l'on affiche que la liste des entreprises au début. Lorsqu'une entreprise est sélectionnée c'est le javascript qui affiche la 2° liste avec les sites correspondant à l'entreprise choisie, mais pas en lancant une requete SQL mais plutot en récupérant dans le tableau-tampon. Ainsi le code serait un switch dont chaque cas correpond à une entreprise. Ainsi il n'y aurait pas de pages rechargées depuis le serveur, ce qui serait plus rapide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
13 août 2004 à 11:34
oui ça pourrait être une éventualité...

mais à mon avis, moi je sais que j'aime pas trop voir des données dans le javascript (moi ya de javascript dans ma page mieux je me porte lol comme ça même si c'est désactivé ben ça marche quand même.)
Car pour moi javascript, du fait qu'on puisse pas compter dessus a 100% (navigateur qui ne le supporte pas - pas forcément ancien mais spécialisé - ou utilisateur qui ne veut pas de ça) je pense que ça doit être que des fonctions annexes... comme des confirmations, éventuellement si il est activé des vérif de formulaires pour limiter les erreurs et les accès au serveur mais on sait très bien qu'on doit revérifier le formulaire après donc voila....
l'avantage de la soluce du haut, c'est que même si il a désactivé javascript, il pourra quand meme voir les sites (même s'ils sont pas filtrés)... le mieux aurait été d'utiliser un bouton "raffraichir" ou actualiser pour soumettre le form... comme ça pas de javascript, tout le monde peut l'utiliser ;)

et ensuite dans une moindre mesure,
si les données sont modifiées régulièrement, l'utilisateur peut se retrouver au bout de 5 minutes avec des données 'pas modifiées" et il dira "ben pourtant elle se met bien a jour ma page car quand je change d'entreprise ben ya bien les sites qui s'affichent"
bref et avec des réflexions comme ça on peut chercher longtemps un problème qui n'existe pas... lol

donc...

mais en tout cas elle serait faisable ta solution... :)

-------------
Aurél :big)
"Avant de dire à l'autre qu'il sait pas faire du vélo, vérifies d'abord que tu sais encore faire du tricycle. Après, tu pourras alors te permettre de lui faire remarquer gentiment que lui, il est sur une trottinette!"
0
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006
13 août 2004 à 17:40
oki, merci aurelien0306 de me confirmer la possibilité de mon idée... moi aussi je n'aime pas particulièrement Java script pour les mêmes raison que toi. je m'en sers en génral pour les vérification des formulaire (champ vide ou valeur erronée...).Pour ton histoire de bouton rafraichir, il suffit de rafraichir la page dès que la première liste est saisie à l'aide de Java Script(je sais qu'on peut mais je ne connais plus trop la commande... je suis vraimen nul en JS!!!):ainsi ce sera php qui créera la 2° liste avec les sites correspondant aux entreprises de la 1° liste
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
13 août 2004 à 18:42
oui justement en fait le bouton raffraichir que je proposais c'est juste l'évolution de la 1ere solution...
au lieu de faire une action sur l'évenement onchange, l'utilisateur une fois qu'il a choisi son entreprise dans la liste, clique sur le bouton actualiser qui n'est autre qu'un simple bouton de type submit et voila...

apres le reste ce fait comme dans la 1ere soluce :)
l'avantage du bouton submit c'est qu'il fait la meme chose que l'action javascript que l'on avait définie sans utiliser de javascript ;)

généralement ce que je fait c'est que je met les deux... comme ça, pour ceux qui ont activés javascript ça le fait tout seul, dès le changement de valeur, pour les autres il suffit de cliquer sur le bouton actualiser
comme ça tout le monde peut filtrer sa liste de sites et tout le monde est content lol :)
-------------
Aurél :big)
"Avant de dire à l'autre qu'il sait pas faire du vélo, vérifies d'abord que tu sais encore faire du tricycle. Après, tu pourras alors te permettre de lui faire remarquer gentiment que lui, il est sur une trottinette!"
0
Rejoignez-nous