2010-02-19 24 views
5

en cuenta lo siguiente estructura de datos:interfaz de usuario Web: Dinámica 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) 

Estoy teniendo un problema sobre cómo implementar la estructura de datos mencionada en los formularios web dinámicas. No estoy seguro de qué tipo de implementación usaré para que sea más fácil para el usuario final completarla. Al mismo tiempo, preservar la integridad de los datos.

Escenario:

  • Un usuario debe ser capaz de proporcionar los datos necesarios para poblar el "sujeto" objeto en una forma. Lo que significa que no se redirigirá a otras páginas (como un asistente) en su lugar, las subformulas por estudiante son javascript generadas.
  • Un usuario debería ser capaz de alterar los datos en el objeto "asunto" en la demanda .
  • Puede haber muchos estudiantes o ninguno.
  • La validación por subobjeto es necesaria.

Entonces, ¿cómo debo presentar esto usando formularios web?

+0

Esta pregunta es probablemente demasiado amplia. Es realmente interesante para mí, pero sería imposible proporcionar una respuesta que cubriera todo lo que está preguntando. –

+0

Probé varias cosas en esta situación. Ventanas emergentes, cajas emergentes de Javascript, adición de subformulario interno-html, etc. Llego a la conclusión de que ninguno de ellos es fácil. Por ejemplo, los códigos son redundantes y por eso requiere una cantidad de trabajo si tiene que corregir algunos campos. –

+0

+1 para una pregunta interesante – lock

Respuesta

2

También estoy enfrentando un problema similar con uno de mis proyectos, cómo llenar una gran cantidad de información de una manera no intrusiva, preservando el estado en las ediciones.

Las tecnologías ya existen para hacer esto bastante bien, a saber, ajax y json. Mi proyecto está construido con PHP, así que mi idea es crear una vista que muestre todos los formularios de entrada de datos, pero guarda los datos de forma incremental enviando los campos completados a un script PHP con ajax, que luego guarda/actualiza el objeto.

Teóricamente con un poco de amabilidad JavaScript debe ser posible hacer una interfaz muy eficiente (creo secciones terminadas tienen un botón Save y el tobogán cerrado, que luego se puede abrir para su posterior edición)

Su posible hacer de esto una diseño muy modular, que implementa, por ejemplo, campos de escritura una vez, una vez guardado no se puede editar.

Este es de hecho un tema muy interesante que muchos sitios parecen tener problemas. Por favor, dime si agarré el extremo equivocado aquí y posteé una respuesta que no es relevante/útil

Para reducir el código duplicado y hacerlo realmente elegante y manejable, lo implementaría con un patrón de diseño MVC. Haga que su vista envíe datos cuando el usuario deje de escribir en un campo y no esté vacío. Luego haga que el controlador verifique si el campo necesita actualización y envíe los acuses de recibo correctos a la vista. El modelo también jugará su parte, ya que sin duda guardará los datos en su base de datos.

La vista será esencialmente una secuencia de comandos ajax modular, tiene entradas y supervisa los cambios, tan pronto como se realizan suficientes cambios (para garantizar un guardado parcial) el ajax envía los datos al controlador y contrae la sección correspondiente para mostrar que ha sido completado. Del mismo modo, si vuelve a visitar la página y el controlador ve que hay algunos datos en el modelo para estos campos, lo envía a la vista ajax, que luego rellena y contrae las secciones precargadas =) Bastante limpio, creo.

Editar: la fijación de errores tipográficos, añaden MVC comentario

+0

exactamente! hay varias implementaciones, pero ¿cuál es la mejor? –

+0

Para ser honesto con mi conjunto de habilidades que consta de unix, ajax y php, esta es prácticamente la única opción que me queda. Podría haber alguna manera de hacerlo con el lado oscuro del desarrollo web, asp e IIS, pero por experiencia no recomendaría. Puedo ampliar mi respuesta si desea alguna implementación específica y/o ejemplos. –

+0

en primer lugar, quiero eliminar los códigos duplicados. para hacer eso, podría simplemente codificar 1 archivo html que contiene el formulario y pasarle variables para que el formulario se llene automáticamente a través de la var. GET. de esa manera podemos hacer llamadas ajax "GET" al mismo tiempo pasarle valores. si no se pasan valores, se llama a una nueva forma; de lo contrario, se activa "edit mode". algo como eso. –

1

basado en las directrices de usabilidad, campos deben agruparse en fieldset elemento basado en su sujeto/por ejemplo, primero/apellido juntos etc.

debido a la gran cantidad de datos, se debe usar una interfaz JavaScript para mostrar la página por pasos (los formularios se pueden cargar en una página, pero JS serviría para mostrar y ocultar las respectivas secciones/conjuntos de campos) enviar enviaría todos los datos a la vez o, alternativamente, AJAX podría ser demandado después de cada sección actualizada ...

Las mejores cosas sobre conjuntos de campo es que se pueden agrupar también e incluir uno en el otro.

+0

JavaScript es mi mejor apuesta en este momento para ocultar formularios y mostrar a pedido. Hay 2 enfoques, ya sea precarga los formularios en la página o carga los formularios a través de ajax ... Estoy seguro de que ajax es una mejor opción, ya que no ralentiza la carga de la página la primera vez. Entonces, de nuevo, ¿cómo pasamos los datos al formulario ajax en caso de que estemos editando el sub-registro? –

+0

a través de AJAX nuevamente - sáquelos de MySQL bajo demanda y llene los formularios requeridos. – dusoft

Cuestiones relacionadas