2009-08-23 23 views
5

Hago un poco de HTML/CSS para divertirme, pero estoy buscando algo de habilidades de programación.Programación de principiante: consejos para diseñar una aplicación web

He estado leyendo en PHP y MySQL. Hasta ahora no me ha resultado muy difícil entender los conceptos como bucles, declaraciones de estado, etc., pero quiero quedarme atascado y comenzar a desarrollar una aplicación antes de aburrirme demasiado al leer y abandonar por completo.

Mi idea ...

da la casualidad que estudiar para un examen en el momento y tener estos exámenes de práctica en el papel. Pensé por qué no poner esto en una aplicación para poder tomar el examen en la computadora.

Características:

  • La aplicación puede contener múltiples exámenes
  • Se puede asignar al azar a preguntas o mostrarlas con el fin
  • tiene la opción de mostrar respuesta para cada pregunta
  • tiempo la duración para completar el examen
  • Página de administración para agregar nuevos exámenes y preguntas/respuestas

Ok, ustedes pueden dejar de reírse ahora, sé que está un paso por encima de Hello World, pero pensé que comenzaría en alguna parte.

Desarrollaré esto en PHP/MYSQL o tal vez RoR si ustedes piensan que es mejor para un principiante. Creo que estaré bien leyendo/escribiendo en la base de datos, pero no estoy tan seguro de la estructura del sitio, el diseño de la base de datos y, en general, lo mejor para hacerlo.

Si tengo un examen compuesto por 50 preguntas, cada una de ellas recibe una identificación. Si elimino una pregunta, ¿cómo actualizo el resto con nuevas ID? Es decir. si elimino la pregunta 3, todas las siguientes preguntas necesitan cambiar su identificación posterior en 1.

EDIT:

¿cómo iba a representar una instancia de un examen en mi esquema de base de datos? La relación entre el examen y la pregunta será de uno a muchos, ya que las preguntas serán exclusivas de un único examen. Pero dado que pretendo realizar múltiples exámenes, ¿cómo puedo representar eso?


¿Cómo puedo representar una instancia de un examen en el esquema de mi base de datos? La relación entre el examen y la pregunta será de uno a muchos, ya que las preguntas serán exclusivas de un único examen. Pero dado que pretendo realizar múltiples exámenes, ¿cómo puedo representar eso?

+2

¿Estás seguro de que esto no es solo una forma de evitar hacer una revisión;) – APC

+0

Busted! La revisión es tan tediosa ¿no? : D – Fred

+0

Para ser sincero, creo que para cuando haya insertado todas las preguntas en su base de datos, rediseñado la aplicación, eliminado las tablas, rediseñado la base de datos reinsertada nuevamente (y repita al menos cuatro veces) tendrá Probablemente revisado tanto como cualquier otra persona =) –

Respuesta

2

Lo más importante aquí, en mi opinión, será la estructura de su base de datos. Tendrá que leer un poco sobre db-design y normalización.Básicamente, usted desea planear lógicamente a cabo las diferentes entidades que existen en su aplicación:

  1. Exámenes
  2. tomadores del examen
  3. Preguntas
  4. Respuestas

Y algunos de ellos serán vinculados entre sí:

  1. Preguntas -> Exámenes
  2. Tomadores -> Exámenes
  3. respuestas -> Preguntas

Siempre que tenga este tipo de situaciones, es necesario determinar si la relación es de uno a uno, uno-a-muchos, muchos-o demasiados. Las preguntas pueden pertenecer a un examen, o a muchas. Eso depende de ti para decidir. Si una pregunta pertenece solo a un examen, puede crear un campo en su tabla de preguntas para albergar un identificador de examen. Si una Pregunta puede pertenecer a muchos exámenes, creará una nueva tabla con dos campos: QuestionID, ExamID. Esto construye su relación de muchos a muchos.

Honestamente, esta podría ser una empresa muy grande y difícil para alguien que tiene muy poca experiencia en programación. En mi opinión, debes comenzar con algo mucho más simple, como un libro de visitas o un mini blog.

Independientemente de la aplicación que decida construir, SO está aquí para usted durante todo el proceso.

8

OK, antes que nada, bienvenido :) En segundo lugar: la suya no es una idea estúpida, de hecho, ha elegido la mejor manera de aprender a programar: hacer algo útil y divertido.

Para responder a su pregunta: ¿por qué necesita ID consecutivos para las preguntas? En lo que respecta a la base de datos, solo necesita tener diferentes ID por fila.

Si es un requisito de visualización, ¿por qué no asigna un número sobre un bucle durante la visualización? Entonces, por ejemplo, cuando hace un foreach para mostrar las preguntas puede mantener una variable de índice que incrementa en cada bucle, y usar eso para mostrar el ordinal.

Espero que esto es lo que está buscando, ¡buena suerte!

+0

¡Oh, sí! eso tiene sentido. Solo generaré los IDs a medida que los recorro. Creo que necesito obtener un cerebro antes de poder programar: p Supongo que esto se relaciona con lo que dice Rich a continuación sobre nunca eliminar ID principales. – Fred

+0

@Jon, no * exactamente *, debe generar los números de la pregunta a medida que los recorre, pero los ID se deben dejar en blanco una vez que se hayan asignado en el Db, como indica Rich Apodaca en su respuesta. –

+3

Creo que parte de la confusión puede ser lo que significa "ID": (i) en la base de datos, la clave principal para cada pregunta debe _nunca_ cambiar; (ii) en la interfaz de usuario, el número de pregunta que se muestra al usuario debe generarse dinámicamente, como sugerí en mi respuesta. – Argalatyr

1

Una aplicación específica es una excelente manera de aprender a programar, incluso si tales aplicaciones ya existen (y lo hacen, pero evitaría mirarlas, ¡simplemente crea y aprende!).

Una de sus especificaciones es que las preguntas se pueden mostrar en cualquier orden. Otra es que pueden eliminarse. Por lo tanto, está claro que la numeración no está directamente relacionada con la pregunta; debe generarse dinámicamente una vez que se haya establecido el conjunto de preguntas y su orden en la prueba. Debe pensar en estos requisitos, que proporcionan la base para el diseño de los componentes. La interfaz de usuario debe estar aislada de la lógica del programa, que debe aislarse de la base de datos de preguntas. Intente pasar información entre estas partes en la forma más primitiva posible. De esta forma, cuando desee rediseñar una de las capas, no tendrá que cambiarla por completo.

+0

Por cierto, es posible que desee permitir el almacenamiento y la visualización de un lenguaje de marcado como HTML en sus preguntas y respuestas, y usar CSS o similar, para que pueda formatear el texto. – Argalatyr

2

Si tengo un examen compuesto de 50 preguntas, cada una de ellas recibe una identificación. Si elimino una pregunta, ¿cómo actualizo el resto con nuevas ID? Es decir.si elimino la pregunta 3, todas las siguientes preguntas deben cambiar su ID por 1.

Las ID principales no deberían cambiar nunca. Cuando elimina una fila en su tabla, la ID primaria correspondiente simplemente desaparece, pero no debe haber renumeración de las otras claves primarias de fila.

Si decides ir con Rails, echa un vistazo al excelente sitio de screencast de Ryan Bates Railscasts.

1

Estoy de acuerdo con todas las otras respuestas, la implementación de una aplicación útil es una excelente manera de aprender desarrollo web. Pero, como dijo Jonathan, no es una aplicación muy simple la que está planeando construir. Dicho eso, aquí están mis pensamientos:

Ruby on Rails es un marco para Ruby. También puede utilizar MySQL. PHP es un lenguaje de programación (como ruby ​​es para RoR), y no proporciona ningún marco. Sin embargo, hay algunos para PHP, CodeIgniter, Zend Framework, Symfony o CakePHP por nombrar algunos. Los marcos implementan los aspectos que se utilizan con frecuencia de una aplicación de forma flexible, por lo que se pueden usar para diversas aplicaciones. Algunos de estos aspectos pueden ser la autenticación, el acceso a la base de datos, el almacenamiento en caché, la representación de plantillas y mucho más.

Los marcos generalmente se escriben para acelerar el desarrollo de aplicaciones; si elige php, puede intentar escribir su propio marco de trabajo, si su objetivo principal es aprender. Todavía debería echar un vistazo a los otros marcos y probarlos para ver qué son y cómo funcionan.

Recomendaría seguir algunos tutoriales para uno o dos marcos, y para investigar todo lo que no sabe (MVC, patrones de codificación, etc.). Encuentro el english wikipedia muy útil.

La otra parte de la aplicación será la base de datos. Algunos marcos ofrecen algún tipo de ORM, que "protegerá" el acceso a la base de datos de usted, una vez que haya configurado su esquema. Aún así, recomendaría echar un vistazo a cómo consultar una base de datos, ya que luego sabrá qué hace el marco cuando recupera datos de la base de datos.

This parece ser un buen recurso para una introducción al servidor mysql, y contiene algunos enlaces a sql-tutorials (para consultar el servidor db). Y recomendaría this tutorial sobre cómo crear su esquema de base de datos.

Espero que algunos de estos recursos sean útiles para usted y le deseo buena suerte.

+0

Gracias por la información. Creo que voy a seguir con este proyecto y comenzar con el esquema DB. Ese tutorial que vinculó sobre la normalización parece muy útil. – Fred

Cuestiones relacionadas