Autor Tema: Test en PHP con respuestas aleatorias  (Leído 4524 veces)

Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Test en PHP con respuestas aleatorias
« en: 01 de Junio de 2011, 17:31:48 pm »
¡Hola!

Estoy haciendo un test en php con opción a elegir una de las tres posibles respuestas las cuales me gustaría que saliesen mezcladas, es decir, distinto del orden en que lo tengo en la BD. Lo voy a explicar más claro con un ejemplo:

BD:
-pregunta
-respuesta1
-respuesta2
-respuesta3

Siempre respuesta1 es la correcta.

A la hora de mostrarlo, el html del navegador:

Pregunta
respuesta1
respuesta2
respuesta3

(en otra pregunta o a otra persona la misma)

Pregunta
respuesta3
respuesta2
respuesta1

Y así sucesivamente, que sea aleatorio el orden en que aparecen. Probé con un switch case...pero el resultado fue un desastre.

Muchas gracias.

Comunidad PHPeros

Test en PHP con respuestas aleatorias
« en: 01 de Junio de 2011, 17:31:48 pm »

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re:Test en PHP con respuestas aleatorias
« Respuesta #1 en: 01 de Junio de 2011, 19:36:01 pm »
Buenas,

Es muy fácil... MySQL tiene un comando que es RAND() que ordena los resultados de forma aleatoria.
Y yo a su vez te diría que el orden de las preguntas también fueran aleatorios.

el código explicado podría ser algo así:

Base de datos: testaleatorio
Tablas:
- preguntas: id(smallint 5), pregunta (varchar 255)
- respuestas: id(smallint 5), pregid (smallint 5), respuesta (varchar 200), correcta (bool)

haríamos dos querys (una dentro de otra, algo así):

$query1 mysql_query("SELECT * FROM preguntas ORDER BY RAND()");
while(
$assoc1 mysql_fetch_assoc($query1)) {

print 
$assoc1["pregunta"]."<br>\n";

$query2 mysql_query("SELECT * FROM respuestas WHERE pregid='".$assoc1["id"]."' ORDER BY RAND()");
while(
$assoc2 mysql_fetch_assoc($query2)) {
print 
"<input type=\"radio\" name=\"preg-".$assoc1["id"]."\" value=\"".$assoc2["id"]."\"> ".$assoc2["respuesta"]."<br>\n";
}

}


Explicación del código (esquematizado)

QUERY con preguntas aleatorias -> mostramos la pregunta y hacemos query para buscar las respuestas de la pregunta con la id de la pregunta -> la mostramos en un input radio con nombre preg-$pid (siendo $pid la id de la pregunta) con valor $rid (siendo $rid en este caso la de la respuesta)

Así a la hora de comprobar sacando el valor de $_POST["preg-id pregunta"] hacemos a una consulta a la base de datos verificando mediante la id de la respuesta si el campo correcto es true, vamos que si es 1.

Tan simple como eso!

Espero que te haya quedado toooooodo claro, y si no, pregunta las dudas!

Un abrazote :D
Sin Firma me haces una? :P

Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:Test en PHP con respuestas aleatorias
« Respuesta #2 en: 01 de Junio de 2011, 21:01:49 pm »
¡Vaya!
No lo había pensado de ese modo, es mucho más sencillo y además funciona xD

Muchísimas gracias, al fin pude terminar esa parte que tenía trabada.

K+ para ti :D

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re:Test en PHP con respuestas aleatorias
« Respuesta #3 en: 01 de Junio de 2011, 22:22:53 pm »
Jajajaja todo es sencillo en la programación solo hay que tener las ideas claras y saber manejarte con los conocimientos que tienes jeje.

De nada para eso estamos! :)

Me alegro de que te sirva & gracias por el Karma!! ^^
Sin Firma me haces una? :P

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:Test en PHP con respuestas aleatorias
« Respuesta #4 en: 02 de Junio de 2011, 01:08:42 am »
Esto, y muchas de tus preguntas me suenan muy conocidas de una web en la que estuve, ¿acaso la estás tratando de copiar?
- Moderador de PHP


Desconectado BlackDragon

  • PHPer@ Fijo
  • ***
  • Mensajes: 133
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:Test en PHP con respuestas aleatorias
« Respuesta #5 en: 02 de Junio de 2011, 01:37:17 am »
Pues...no sé de que web hablarás, pero mi web trata sobre cultura general...y croe no estar copiando nada...

Desconectado Tony-uchiha

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:Test en PHP con respuestas aleatorias
« Respuesta #6 en: 03 de Julio de 2017, 08:22:27 am »
Hola disculpa ya me quedado claro lo de la creación de la base de datos y los querys, pero no logro entender como hacer eso del post y validar las preguntas

Desconectado lore99

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:Test en PHP con respuestas aleatorias
« Respuesta #7 en: 08 de Agosto de 2017, 17:01:57 pm »
Amigos en el caso de que yo quiera que aparescan 5 preguntas nomas en x evaluación y 20 en otra x evaluación que deberia hacer y como as califico gracias