Foros del Web » Programando para Internet » PHP »

registros aleatorios

Estas en el tema de registros aleatorios en el foro de PHP en Foros del Web. hola bueno empiezo por explicar que es lo que quiero hacer. Quiero hacer un sistema de cuestionarios en el cual inserten x preguntas y a ...
  #1 (permalink)  
Antiguo 27/09/2008, 22:24
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 6 meses
Puntos: 0
Busqueda registros aleatorios

hola bueno empiezo por explicar que es lo que quiero hacer.
Quiero hacer un sistema de cuestionarios en el cual inserten x preguntas y a cada pregunta se le pone un nivel de dificulta. Bueno eso lo se hacer guardo la pregunta en la bd y le pongo un campo que diga dificultad, bueno eso no es el problema, lo que quiero hacer es que la persona pueda escoger que de todas las preguntas que el inserto se hagan x preguntas aleatoriamente y el va aa tener como parametros cuantas preguntas de tal dificultad quiere osea que eso se haga aleatoriamente mientras el diga que quiere 10 preguntas de 30 que haya insertado y que de esas 10 2 sean de dificultad dificil, 3 de dificultad media y 5 de dificultad facil, asiq ue todo es aleatoriamente.

bueno aparte quisiera hacer que si tiene 30 preguntas y quiere hacer 3 cuestionaros de 10 preguntas lo haga tomando esas preguntas pero en funcion de los parametros de la dificultad de las preguntas asi que quedarian 3 cuestionarios diferentes y que tengan la misma dificultad.

No se si me entiendan.
espero su respuesta
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #2 (permalink)  
Antiguo 27/09/2008, 22:58
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: registros aleatorios

Puedes usar ORDER BY RAND() y LIMIT de MySQL.

SELECT * FROM cuestionario WHERE dificultad='3' ORDER BY RAND() LIMIT 10

Eso toma los registros, donde el campo dificultad sea 3, los ordena aleatoriamente y luego saca 10 de esos.
  #3 (permalink)  
Antiguo 28/09/2008, 17:20
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: registros aleatorios

si pero no quiero que sean nadamas 10 de esos si no que por ejemplo si piden un cuestionario de 10 preguntas y quieren 2 de dificultad 3, 3 de dificultad 2, y 5 de dificultad 1
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #4 (permalink)  
Antiguo 28/09/2008, 17:34
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: registros aleatorios

Si son 10 preguntas.
Haz un random de 1 a 8.
El numero que salga, haz una consulta y extrae las faciles.
Entonces si por ejemplo el primer random te dio 5. Restale 5 a 10. Te quedan 5 preguntas.
Haz un random de 1 a 4 (el numero anterior -1)
Y si por ejemplo te da 3 saca 3 preguntas intermedias con una consulta.
Luego restas el numero de preguntas que sacaste 10 - 8 = 2.
Saca 2 preguntas dificiles.

Es solo una idea.
Porque elijo de 1 a 8 primero te preguntaras ...
Para que por lo menos haya 2 preguntas de diferentes dificultades si el numero maximo da 8.
  #5 (permalink)  
Antiguo 28/09/2008, 21:13
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: registros aleatorios

mmm ok lo romare en cuenta haber si no tienen otra sugerencia por ahi se los agradeceria
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #6 (permalink)  
Antiguo 28/09/2008, 21:32
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: registros aleatorios

Definitivamente, si deseas obtener aleatoriamente N preguntas, y deseas que estas cumplan algunas condiciones, entonces ya no estamos en un aleatorio en el más estricto sentido de la palabra. La única solución es realizar una consulta por cada nivel de dificultad, indicando en la consulta el nivel del cual se debe escoger las preguntas y el número a extraer. Siguiendo tu ejemplo sería algo así:

Código sql:
Ver original
  1. SELECT * FROM cuestionario WHERE dificultad='3' ORDER BY RAND() LIMIT 0, 2
  2. SELECT * FROM cuestionario WHERE dificultad='2' ORDER BY RAND() LIMIT 0, 3
  3. SELECT * FROM cuestionario WHERE dificultad='1' ORDER BY RAND() LIMIT 0, 5
Cada una de esas tienes que realizarla por separado, y luego puedes juntarlas en un arreglo, y si deseas, reordenarlo aleatoriamente para que las preguntas que ya tienes se mezclen entre sí.

Saludos,
  #7 (permalink)  
Antiguo 28/09/2008, 21:36
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: registros aleatorios

mm ha mira me parece perfecto eso asi como lo dices entonces voy a hacer algunas pruevas y hay les cuento jejej gracias por el momento
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:06.