Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/05/2012, 07:17
afuentealba
 
Fecha de Ingreso: abril-2012
Mensajes: 65
Antigüedad: 12 años
Puntos: 0
Respuesta: crear un campo creciente (no id)

Cita:
Iniciado por quimfv Ver Mensaje
Creo que se complican la vida....

El usuario debe estar usando un formulario para responder al cuestinario... luego en el momento de guardar la respuesta debes guardar el idUsuario, para saber quien esta contestando, el idCuestionario para saber que cuestionario esta respondiendo, y el idPregunta para saber que pregunta esta contestando.

Toda esa información la tienes que usar para presentar el formulario con la pregunta al usuario, luego usala para guardar la respuesta.

TblCuestionarios
idCuestionario
cuestionario
....

TblPreguntas
idPregunta (autoincremental)
idCuestionario FK
pregunta

TblUsuarios
idUsuario
usuario
....

TblRespuestas
idRespuesta
idCuestionario
idPregunta
idUsuario
respuesta

Código MySQL:
Ver original
  1. SELECT c.cuestionario, count(*) as preguntas
  2. FROM tblPreguntas p INNER JOIN tblCuestionarios c
  3.       ON p.idFormulario=c.idFormulario
  4. GROUP BY c.formulario

Te da el numero de preguntas por formulario.

Código MySQL:
Ver original
  1.        (@a:=@a+1) norden,
  2.        idPregunta,
  3.        pregunta
  4.     FROM tblPreguntas p JOIN (SELECT @a:= 0) t
  5.     WHERE p.idCuestionario=X
  6.     ORDER BY idPregunta

La lista de preguntas con su numerador sin saltos y empezando de 1, con esta query podras presentar el cuestionario con su numerador pero en el momento de guardar la respuesta guarda el idPregunta no el numero de orden....

Para confeccionar el cuestionario solo tienes que preocuparte de introducir las preguntas en el orden correcto

INSERT INTO tblPreguntas (idCuestionario,pregunta) VALUES (X,"La pregunta");

el auto incremental generara solo el identificador de la pregunta....y como es autoincremental siempre las podras listar por orden aun que tenga saltos....
Gracias por todo, finalmente hice un procedimiento de almacenado y lo ejecute desde php y listo!

Saludos

pd: habia probado con (@a:=@a+1) y me solucionaba el tema, si ejecutaba la query desde mysql, pero al phpalizar el codigo no me funciono, pero ya esta arreglado. saludos!