Salut à tous !
J'ai longtemps cherché comment récupérer des champs provenant soit d'un formulaire contenant des fichiers (donc envoyé en ENCTYPE="multipart/form-data"), soit d'un formulaire "normal" (utile si on utilise par exemple la même page pour afficher une liste de données correspondant à des critères de recherches, pour valider la modification d'une donnée, la supprimer,...). Comment savoir quand utiliser request.form et aspsmartupload ?
Voila ma solution... Peut être pas la meilleure, mais elle me fait gagner pas mal de temps maintenant !
Il suffit de récupérer toutes les données en début de page d'une façon où de l'autre suivant le cas, et de les enregistrer dans un dictionnaire. Ainsi, on pourra faire appel aux éléments de ce dictionnaire (et donc, les champs du formulaire précédent) dans toute la page, et ce, de la même façon que l'on vienne d'un formulaire envoyé en multipart/form-data ou normal.
Le code que je vous met gère en fait 2 dictionnaires différents :
Un pour les champs "courants" (attention, il enregistrera aussi les boutons comme étant des champs)
Et un autre pour mes critères de recherches : Dans mon cas, l'utilisateur accède à une liste qui correspond à ses critères (Tous les "name" des champs critères commencent par "rec_" afin de pouvoir par la suite les différencier des autres : ex <input type="text" name="rec_motclé">).
Il peut ensuite naviguer dans les résultats (modifier / ajouter / ...), et donc changer de pages et il retrouve la liste correspondant à ses critères de recherche (il faut donc afficher sur toutes les pages tout les champs des critères de recherche).
Mémoriser les champs de mes critères de recherches dans un dictionnaire séparé me permet donc d'afficher rapidement via une boucle tout mes critères dans des champs cachés.
Bon, je suis pas des plus excellent dans la rédaction, vous l'auerz surement remarqué, mais j'espère avoir été clair. Sinon, regardez le code, il est pas bien compliqué, ou posez moi des questions !
A bientôt
Matt