Select dans un formulaire en fonction d'un choix précédent

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 10:51

Bonjour à toutes et à tous,

J'ai crée une liste déroulante nommée 'paires' dans un formulaire. Liste basée sur des données dans une table.
<option value="<?php echo $donnees['paires']; ?>"> <?php echo $donnees['nom']; ?></option>
Juste là tout va bien mais cette liste est très grande.

Il est possible de la réduire pour que l'utilisateur s'y trouver plus facilement.

Le champs précédent se somme 'exchange'.

Je vais modifier la table pour qu'elle se retrouve avec 2 champs. Un nommé 'exchange' et un autre nommé 'paire'

Je vais attribuer plusieurs 'paires' à un 'exchange'

Donc mes problèmes.

1 - Il arrive que certaines 'paires' puissent être sur plusieurs 'exchange'

Comment faire pour attribuer la même 'paire' à plusieurs 'exchange' ?

2 - Comment faire pour que dès que l'utilisateur a sélectionné un exchange (liste déroulante), la liste 'paire' se mette à jour en fonction du choix de l'utilisateur ?

Merci pour vos avis, pistes, et aides.

Bon dimanche

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 oct. 2019, 12:36

1 - Il arrive que certaines 'paires' puissent être sur plusieurs 'exchange'

Comment faire pour attribuer la même 'paire' à plusieurs 'exchange' ?
En terme de schéma de données, le plus classique pour faire cela est de créer 3 tables :
- une table, nommée par exemple "exchanges" avec uniquement les "exchange" et leurs caractéristiques à chacun, dont un champ par exemple id_exchange, identifiant unique de cet élément (en général INT AUTOINCREMENT dans ton schéma de table)
- une table, nommée par exemple "paires" avec uniquement les "paire" et leurs caractéristiques à chacune, dont un champ par exemple id_paire, identifiant unique de cet élément (en général INT AUTOINCREMENT dans ton schéma de table)
- et une table, nommée par exemple "liens_exchange_paire" dont l'objectif est de permettre de faire les liens entre les 2 précédentes tables. A ce titre elle n'a besoin que de 2 champs, id_exchange et id_paire. Si une paire a 2 exchange, alors elle aura 2 entrées dans cette table.

C'est la façon la plus propre, évolutive et optimisée pour faire des relations n..n en SQL
2 - Comment faire pour que dès que l'utilisateur a sélectionné un exchange (liste déroulante), la liste 'paire' se mette à jour en fonction du choix de l'utilisateur ?
Pour faire des listes liées, on a un tuto ici : faq-tutoriels/listes-liees-avec-html-ja ... 55580.html

A noter que si c'est juste une question de confort dans la sélection, si les utilisateurs savent ce qu'ils cherchent peut être que le mieux serait de faire un champ Select amélioré.
Par exemple : https://select2.org/getting-started/basic-usage
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 34 Messages

06 oct. 2019, 13:40

Bonjour @rthur,

Je te remercie pour ces explications complètes et parfaitement claires.

Je vais partir sur des listes liées car le 'select amélioré' sera beaucoup trop long.
Je vais avoir pour certains 'exchange' plus d'une centaines de 'paires'

Donc autant sélectionner en amont ;)

Merci pour ton aide.