Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
18 Juillet 2019, 18:00:47


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: formulaire - filtre des choix sur des champs interliés  (Lu 6622 fois)
0 Membres et 1 Invité sur ce fil de discussion.
fontaineff
Nouveau
*
Hors ligne Hors ligne

Messages: 37


Voir le profil
« le: 14 Novembre 2010, 22:28:20 »

Bonjour,

J'espère que quelqu'un pourrait me conseiller pour une solution php.
Dans mon formulaire d'inscription, je souhaiterais que le visiteur qui s'inscrit indique son choix concernant 2 champs qui sont interliés entre eux, le choix sur le premier champs devant limiter 'automatiquement' les choix sur le second champs.
Existe-t-il un moyen php de faire cela dans un seul formulaire (un seul bouton submit) et en un seul temps?

Un exemple étant certainement plus parlant, imaginons que dans ma BDD j'ai une table avec la liste de tous les pays et dans une seconde table la liste de toutes les gauffres de tous les pays. Cette dernière table incluant un champs 'pays_id' qui me lie toutes les gauffres à un seul pays.
Je souhaiterais que le visiteur en remplissant son formulaire choisisse d'abord son pays préféré pour les gauffres (la Belgique, cela va de soit Grimaçant) et qu'il choississe ensuite - dans le même formulaire - une des gauffres de ce pays, la liste des gauffres qui lui sont proposées étant préalablement filtrée par le système pour ne lui proposer que les gauffre de ce pays.
est-il possible de faire ce filtrage sans que le visiteur clique sur un quelconque bouton ?

Merci d'avance à ceux qui peuvent me conseiller.

François
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 14 Novembre 2010, 22:28:20 »

 Journalisée
MrsB
Staff Webou.net
*****
Hors ligne Hors ligne

Messages: 1 133



Voir le profil
« Répondre #1 le: 15 Novembre 2010, 00:00:26 »

Là comme ça à froid, sans voir le bazar, ça ne me paraît pas évident du tout en php seul...

La page produite dans ton navigateur par ta bdd est figée, sans dialogue avec la bdd, jusqu'à ce que tu lui renvoies des données ou en appelles d'autres par une action (un clic, un timeout, que sais-je).

En un mot, je ne jurerais pas que c'est impossible (avec un rafraîchissement fréquent de la page, renvoyant à chaque fois les données, ça me paraît envisageable, par ex.), mais ça me paraît très lourd par rapport à une petite bricole en javascript qui, par exemple, ne dévoilerait le 2ème choix qu'après sélection du 1er (et après avoir fait le tri en question par pays_id).

Avec du chocolat et de la chantilly, ma gaufre.
Journalisée
fontaineff
Nouveau
*
Hors ligne Hors ligne

Messages: 37


Voir le profil
« Répondre #2 le: 16 Novembre 2010, 01:07:15 »

Merci MrsB,
(ok pour la chantilli mais c'est dommage le chocolat ... ça tue le goût de la gaufre)
C'est bien ce que je craignais pour PHP...
J'avais aussi pensé à un rafraîchissement (bien que je ne connaisse pas encore comment l'écrire en PHP) mais cela aurait le gros inconvénient de me remettre à vide tous les autres champs du même formulaire complété par le visiteur.

PHP commence à me parler, java pas du tout. Aurais-tu un script ou un lien internet (ou des mots clés pour moteurs de recherche) à me suggérer?

Merci d'avance

François
Journalisée
MrsB
Staff Webou.net
*****
Hors ligne Hors ligne

Messages: 1 133



Voir le profil
« Répondre #3 le: 16 Novembre 2010, 18:55:27 »

Ah non! le chocolat ne tue rien du tout, si c'est du bon!!!

Alors, pour en revenir à nos moutons,
il me semble qu'ici il y a une situation qui ressemble à ton problème:
http://www.commentcamarche.net/forum/affich-8127805-menu-deroulant-dynamique-php-mysql-et-ajax
et surtout plusieurs solutions apportées.
Mais c'est du non-testé, donc du non-garanti!!

Moi je suis plutôt TVHTML et TVPHP (Très Vieux HTML et Très Vieux PHP),
donc je n'ai pas pensé à la piste Ajax, vu que je n'y ai jamais eu recours.
Apparemment c'est plutôt intéressant pour ton souci, mais là-dessus, je ne pourrai guère t'en dire plus!

Attention: moi j'avais envisagé javaSCRIPT, pas java, ne pas mélanger les 2!!!
Journalisée
fontaineff
Nouveau
*
Hors ligne Hors ligne

Messages: 37


Voir le profil
« Répondre #4 le: 17 Novembre 2010, 22:41:10 »

Du bon chacolat belge (un peu de promo nationale ne fait pas de tort)  ... ok alors.
PS: je voulais bien dire javascript (désolé pour le diminitif trompeur)

Merci pour tes informations et pour le lien. Je t'avoue par contre je suis qulque peu hésitant sur l'emploi de l'un des script de cette page. Il y en a tellement de versions avec erreurs ou sans, etc. Par contre ton indication m'a permis de mettre le doigt sur l'appelation 'liste déroulante dynamique' qui est LE terme à utiliser sur les moteur de recherche pour obtenir beaucoup d'info.
Pour l'instant un lien qui se dégage des autres est http://marcel-bultez.chez-alice.fr/documents/ADSL/ADSL.php qui propose 3 solutions :
- 1 en pur javascript (je l'ai testé et cela fonctionne!) mais l'exemple manque de 'dynamisme', l'auteur stoque à l'avance l'intitulé du sous-champs dans des ARRAY alors que ce serait mieux d'aller les chercher dans la BDD (me manque les connaissance javascript pour cela) Pleurs;
- 1 en pur PHP mais je met mon doigt à couper que dans cet exemple, si l'on change plusieurs fois son 1er champ, la liste liée du second restera figée; Tire la langue
- 1 en Ajax-php. Je l'ai essayé directement adapté à mon cas mais cela tourne pas encore Triste

Si je réussi, je dirai quoi et comment (pê utile pour d'autres).

encore merci MrsB (et essayerai de pense à t'envoyer du bon côte d'or ... ou des pralines godiva ... meilleur.

François
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« Répondre #4 le: 17 Novembre 2010, 22:41:10 »

 Journalisée
fontaineff
Nouveau
*
Hors ligne Hors ligne

Messages: 37


Voir le profil
« Répondre #5 le: 18 Novembre 2010, 01:16:58 »

J'y pense ... pour d'autres de mes pages avec du javascript (pour des accordéons) j'avais dû faire appel (dans le <head></head>) à des 'librairies' javascript en insérant une ligne style    <script type="text/javascript" src="js/accordion.js"></script>.
Faut-il une telle librairie pour ajax (qui est un mix de php et de javascript)?
Si oui, qqun peut me dire laquelle et où la trouver gratuitement?

Merci d'avance à ceux qui aurait des suggestions (ou réfutations).

François
Journalisée
fontaineff
Nouveau
*
Hors ligne Hors ligne

Messages: 37


Voir le profil
« Répondre #6 le: 18 Novembre 2010, 22:08:01 »

Pour info, dans le lien cité ci-dessus http://marcel-bultez.chez-alice.fr/documents/ADSL/ADSL.php, les listes déroulantes dynamiques pure PHP sont à oublier !! (logique puisque $_POST n'existera que lorsque le visiteur cliquera sur le bouton submit du formulaire ... système très peu réactif)

Je n'arrive pas à faire fonctionner le script 'pur ajax (php+javascipt)' Pleurs

Donc il me reste le pur javascrip qui fonctionne mais qui n'est pas dynamique (le SELECT 'sel2' ne va pas chercher les options dans la BDD). si une bonne âme pratiquant le javascript pouvait me dire comment mettre des données de la BDD dans des ARRAY ustilisés dans un javascript, je lui en serais très reconnaissant. Le script (ci-dessous) vient du lien cité, ce script fonctionne (je l'ai testé tel quel).

Code:
<HTML>
<HEAD>
<TITLE>2 Selects dépendants en JavaScript</TITLE>
<script   type="text/javascript">
function gensel2()
{  s2.length=0;
for ( var n=0; n<liste[s1.selectedIndex].length; n++ )
{  s2.length++;
s2.options[s2.length-1].text=liste[s1.selectedIndex][n];
}
}

</script>
</HEAD>
<BODY>
<form    name="frm">

<select  size=4
name="sel1"
id="sel1"
onchange="gensel2();">
<optgroup label="Régions">
<option>Bretagne</option>
<option>Centre</option>
<option>Nord-Pas-de-Calais</option>
</optgroup>
</select>

<select  size=4
name="sel2"
id="sel2">
<optgroup label="Départements">
</optgroup>
</select>

</form>
<script   type="text/javascript">
var s1=document.getElementById("sel1");
var s2=document.getElementById("sel2");
var liste=new Array(
new Array("Côtes-d'Armor","Finistère","Ille-et-Vilaine","Morbihan"),
new Array("Cher","Eure-et-Loire","Indre","Indre-et-Loire","Loir-et-Cher","Loiret"),
new Array("Nord","Pas-de-Calais")
);
</script>
</BODY>
</HTML>

Je suis capable en PHP de lire les tables de ma BDD, de faire un SELECT dessus et de stocker les données sélectionnées dans une variable ((mais pas encore dans une matrice)). Mais comment injecter ces données sélectionnées en PHP vers ce javascript ou comment lire ma BDD en javascript, cela je n'en suis pas capable.

Merci pour tout conseil.

François
Journalisée
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.143 secondes avec 22 requêtes.