Vous avez sûrement entendu l'adage : "plus un logiciel est simple pour l'utilisateur, plus il a été dur à créer pour le développeur".
En voici un exemple tiré du web, et accessoirement de ma propre expérience.
L'idée est d'avoir un formulaire le plus rapide/efficace pour l'utilisateur.
Donc le but est de créer à partir d'une base de données de noms (Durand, Dupont, etc...) un champ de type select, qui quand on va changer l'option du select, va mettre à jour certaines valeurs du formulaire (par exemple, selon le nom choisi, on remplit automatiquement le prénom).
Le tout SANS faire un appel au serveur.
Donc, le PHP va pécher dans la base de données, et le Javascript va s'occuper de générer/modifier les champs texte.
Jusqu'ici, tout va bien.
Là où cela se complique, c'est que le PHP va devoir générer le Javascript (qui donc va lui aussi générer quelque chose).
Bref, on génère le code qui va générer du code.
C'est encore à peu près simple...
Compliquons encore : l'idée est maintenant d'avoir un select (par exemple un choix Homme/Femme), qui lui-même va modifier le select suivant (les noms), qui va modifier les champs suivants.
Donc, nous allons devoir faire du PHP, qui va générer du Javascript, qui lui-même va générer un select(*), lequel va mettre à jour les champs.
Or le select généré (là où il y a une astérisque *), va devoir utiliser du Javascript pour mettre à jour le select suivant.
Donc, nous avons du PHP pour générer du Javascript et un select, qui lui-même va générer un autre select (via Javascript), lequel select généré (vous me suivez ?) va mettre à jour les champs.
Mais, et c'est là que ça se complique, c'est qu'il faut générer en PHP tous les "javascripts" précédents.
Donc il faut du PHP, qui va générer un select, lequel va utiliser du javascript (qui est lui généré en PHP, bien sûr !), pour générer un autre select, qui lui va également utiliser du Javascript (qui lui aussi sera généré via PHP, vous suivez ? J'ai les noms de ceux qui font les cons... copyright Coluche), pour mettre à jour les champs.
Ce qui est d'une simplicité enfantine pour l'utilisateur (deux select et basta tout le boulot est fait) se révèle bien moins enfantin pour le développeur... limite infernal !
Donc, quand vous verrez un système très simple qui fait le boulot à votre place, ayez une pensée gentille pour le développeur qui s'est arraché les cheveux pour que tout marche bien-comme-il-faut... parce qu'il ne faut pas qu'il y ait des bugs !
Mieux encore, si vous avez le développeur à portée de remerciements, n'hésitez pas, croyez-moi, ça lui fera plaisir !