2010-02-19 4 views
5

considèrent la structure des données suivantes:interface utilisateur Web: Dynamic Web Forms

subject (stdClass) 
    topic (stdClass) 
     units (int) 
     title (varchar 50) 
     description (varchar 255) 
     start_time (time) 
     end_time (time) 
    teacher (stdClass) 
     first_name (varchar 50) 
     last_name (varchar 50) 
    students (stdClass[]) 
     1 (stdClass) 
      first_name (varchar 50) 
      last_name (varchar 50) 
     2 (stdClass) 
      first_name (varchar 50) 
      last_name (varchar 50) 
     3 (stdClass) 
      first_name (varchar 50) 
      last_name (varchar 50) 
    proctor (stdClass) 
     first_name (varchar 50) 
     last_name (varchar 50) 

Je vais avoir un problème sur la façon de mettre en œuvre le mentionné ci-dessus la structure des données dans les formulaires Web dynamiques. Je ne suis pas certain du type d'implémentation que j'utiliserai pour faciliter le remplissage de l'utilisateur final. En même temps, préserver l'intégrité des données.

Scénario:

  • Un utilisateur doit être en mesure de fournir les données nécessaires pour remplir le « sujet » objet sous une forme. Ce qui signifie qu'il sera pas être redirigé vers d'autres pages (comme un assistant) à la place, les sous-formes par étudiant sont javascript généré.
  • Un utilisateur devrait pouvoir modifier les données dans l'objet "sujet" sur la demande .
  • Il peut y avoir plusieurs étudiants ou aucun. La validation par sous-objet est requise.

Alors, comment dois-je présenter cela en utilisant des formulaires Web?

+0

Cette question est probablement trop large. C'est vraiment intéressant pour moi, mais il serait impossible de fournir une réponse qui couvre tout ce que vous demandez. –

+0

J'ai essayé plusieurs choses dans cette situation. Popup windows, javascript popups, ajout de sous-formulaire html interne, etc. J'arrive à la conclusion que non d'entre eux sont faciles. Par exemple, les codes sont redondants et à cause de cela, il faut une quantité de travail si vous devez corriger certains champs. –

+0

+1 pour une question intéressante – lock

Répondre

2

Je suis confronté à un problème similaire avec l'un de mes projets, à savoir comment remplir une grande quantité d'informations de manière non intrusive, en préservant l'état des modifications.

Les technologies existent déjà pour faire cela très bien, à savoir ajax et json. Mon projet est construit avec PHP donc mon idée est de créer une vue qui affiche toutes les formes de saisie de données, mais il enregistre les données de manière incrémentale en envoyant les champs complétés à un script PHP avec ajax, qui enregistre/met à jour l'objet.

En théorie, avec un peu niceness javascript, il devrait être possible de faire une interface très efficace (pensez sections complétées ont un bouton d'enregistrement et glisser fermé, qui peut être ouvert pour une édition ultérieure alors)

Il est possible d'en faire une conception très modulaire, mettant en œuvre par exemple écrire une fois les champs, une fois sauvegardé ne peut être édité.

Il s'agit en effet d'un sujet très intéressant sur lequel de nombreux sites semblent avoir des difficultés. S'il vous plaît dites-moi si j'ai attrapé la mauvaise extrémité du bâton ici et posté une réponse qui n'est pas pertinente/utile

Pour réduire le code en double et vraiment le rendre élégant et gérable je l'implémenterais avec un motif de conception MVC. Avoir votre vue envoyer des données lorsque l'utilisateur arrête de taper dans un champ et ce n'est pas vide. Demandez ensuite au contrôleur de vérifier si le champ doit être mis à jour et renvoyez les accusés de réception corrects à la vue. Model jouera également son rôle car vous enregistrerez sans doute les données dans votre base de données. La vue sera essentiellement un script ajax modulaire, elle a des entrées et les surveille pour les changements, dès que suffisamment de changements sont faits (pour garantir une sauvegarde partielle) l'ajax envoie les données au contrôleur et réduit la section concernée pour montrer qu'il a été complété. De même, si vous revisitez la page et que le contrôleur voit qu'il y a des données dans le modèle pour ces champs, il les envoie à la vue ajax, qui remplit alors et réduit les sections préremplies =) Tout à fait propre je pense.

Edit: fautes de frappe de fixation, a ajouté MVC commentaire

+0

exactement! il y a plusieurs implémentations, mais laquelle est la meilleure? –

+0

Pour être honnête avec mon ensemble de compétences composé d'unix, ajax et php, c'est à peu près la seule option qui me reste. Il pourrait y avoir un moyen de le faire avec le côté sombre du développement web, ASP et IIS, mais par expérience, je ne recommanderais pas. Je peux élargir ma réponse si vous souhaitez une implémentation spécifique et/ou des exemples. –

+0

premièrement, je veux éliminer les codes en double. Pour ce faire, je pourrais simplement coder 1 fichier html qui contient le formulaire et lui passer des variables afin que le formulaire soit rempli automatiquement via GET var. de cette façon, nous pouvons faire des appels ajax "GET" en même temps lui transmettre des valeurs. Si aucune valeur n'est passée, une nouvelle forme est appelée sinon "mode édition" est activé. quelque chose comme ca. –

1

sur la base des directives de rentabilité, les champs doivent être regroupés dans l'élément fieldset en fonction de leur sujet/par exemple En raison de la grande quantité de données, une interface Javascript devrait être utilisée pour afficher la page par étapes (les formulaires pourraient être chargés sur une page, mais JS servirait à afficher et masquer les sections/ensembles de champs respectifs).). soumettre enverrait alors toutes les données à la fois ou alternativement AJAX pourrait être poursuivi après chaque section mise à jour ...

meilleures choses à propos de fieldsets est qu'ils peuvent également être regroupés et inclus dans un autre.

+0

javascript est mon meilleur pari en ce moment pour cacher les formulaires et montrer à la demande. Il y a 2 approches soit pré-charger les formulaires sur la page ou charger les formulaires via ajax ... Je suis sûr que ajax est un meilleur choix car il ne ralentit pas le chargement de la page la première fois. Ensuite, comment pouvons-nous passer les données à la forme ajax dans le cas où nous éditons le sous-enregistrement? –

+0

via AJAX à nouveau - sortez-les de MySQL à la demande et remplissez les formulaires requis. – dusoft