Bonjour à tous,

Je me décide enfin à poster car je rencontre un problème qui m'a déjà fait réfléchir pas mal de temps. J'ai déjà eu ce problème lors d'un développement avec RoR et maintenant avec Symfony.

Le concept est assez simple. Je vais prendre un exemple.
Dans ma base de données, j'ai trois tables:
- Title (id,name,artiste)
- Compile (id, name)
- CompileTitle (id,is_title,id_compile)

C'est une relation Many-to-Many. En gros, une compilation peut contenir plusieurs morceau de musiques.

Maintenant, le problème ce situe au niveau du formulaire de création d'une compile. Par exemple, Symfony générera automatiquement un "input" pour le nom et un "select multiple" pour les musiques. Il suffira de sélectionner une musique dans la liste ou plusieurs avec Ctrl enfoncé. Vous conviendrez qu'avec une centaine de musique ou plus, le "select multiple" risque d'être chiant à parcourir sans parler de la sélection multiple...

Le problème c'est que j'aimerais faire un truc sympa et jolie. J'aurais le nom et une liste de musique vide et un champ de recherche. Le champ de recherche permettrait de rechercher une musique et de l'ajouter (avec un lien sur une icône) à la liste des musiques de la compile. Et une fois qu'on a notre compile on pourra soumettre le formulaire. La liste de musique serait une "div" a remplir d'un "input hidden" (pour le formulaire) avec le nom du titre voire quelques informations (visuel pour l'utilisateur).

Sans AJAX, c'est super compliquer. Lors de la recherche ou de l'ajout/retirement d'une musique, on devra ne pas perdre les données du formulaire déjà rempli comme les musiques déjà ajouté ou le nom de la compile.

Avec AJAX, c'est plus simple, mais le code devient assez obscur avec les différents "append" et le remplissage de "div" à la volé. Sans compter qu'il faut pouvoir retirer une musique si on s'est trompé. Bref, on joue avec des "id" et on s'y perd.

Ma question: Y a-t-il une marche à suivre pour coder cela proprement (sans "select multiple" et avec une recherche et un ajout/retirer a la compile avant soumission du formulaire)? sans AJAX? et avec AJAX?

Je cherche un principe, une technique ou un système déjà en place qui fonctionne.

Merci d'avance pour votre aide ainsi qu'à ceux qui auront lu jusqu'au bout