Foros del Web » Programando para Internet » PHP »

Ayuda con Pregunta Aleatoria y sus respuesta

Estas en el tema de Ayuda con Pregunta Aleatoria y sus respuesta en el foro de PHP en Foros del Web. Estoy armando un sistema de preguntas aleatorio. Digamos, selecciona de la tabla pregunta, 5 preguntas en forma aleatoria del mudulo 1, hasta aca todo bien, ...
  #1 (permalink)  
Antiguo 31/03/2008, 07:22
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Ayuda con Pregunta Aleatoria y sus respuesta

Estoy armando un sistema de preguntas aleatorio. Digamos, selecciona de la tabla pregunta, 5 preguntas en forma aleatoria del mudulo 1, hasta aca todo bien, con el siguiente codigo:
Código PHP:
$Conexionmysql_connect ('localhost''pdu2207''sabrosos');
$database 'pdu2207_2';
mysql_select_db($database$Conexion);
$query "SELECT * FROM pregunta WHERE idmodulo='1' ORDER BY RAND() LIMIT 0,5";
$res mysql_query($query);
$array mysql_fetch_array($res);
do {
    
$datos[] =$array;
        } while (
$array mysql_fetch_array($res)) ; 
lugoe muestro la pregunta que quiero de las 5 encontradas
Código PHP:
echo $datos[0]['idpregunta']; 
echo 
$datos[1]['idpregunta']; 
echo 
$datos[2]['idpregunta']; 
echo 
$datos[3]['idpregunta']; 
echo 
$datos[4]['idpregunta']; 
Bien, pero ahora en otra tabla preguntas, tengo distintas cantidades posibles preguntas, por ello hago lo siguiente y lo repito 5 veces modificando la variable $dato = $datos[0]['idpregunta']; colocando en $datos[] 1,2,3,4 no me funciona, me tira error, simplemente no funciona.
Código PHP:
$dato $datos[0]['idpregunta'];
$respuesta =  "SELECT * FROM respuestas WHERE idpregunta='$dato' ";
$resultado mysql_query($respuesta);
while (
$linea mysql_fetch_array($resultado)){
echo 
"".$linea["idrespuesta"]."  |  ".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>
"
;

Alguna alluda por favor, o alguna otra manera de hacerlo.
Repito de nuevo que es lo que intento hacer.

Conecto a la base de datos, selecciono 5 preguntas en forma aleatorio, cada pregunta tiene en otra tabla distinta candiad de respuestas que pueden o no ser todas o ninguna verdadera. estos datos son luego enviados medianto un formulario e una tabla examen (esta ultima parte no me hace falta, solo la consulta que me muestre los datos).

AYUDA PLISSS
  #2 (permalink)  
Antiguo 31/03/2008, 07:27
Avatar de RollerSky  
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 16 años, 7 meses
Puntos: 8
Re: Ayuda con Pregunta Aleatoria y sus respuesta

Holass.. Copia el error que te tira,


salu2
  #3 (permalink)  
Antiguo 31/03/2008, 07:32
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Re: Ayuda con Pregunta Aleatoria y sus respuesta

No me tira error, directamente no funciona, me muestra correctamente las preguntas, pero en cuenta a las respuestas sucede que me muestra solo las respuestas de la primer pregunta y nada mas, las demas no me las muestra, no me sale error.
  #4 (permalink)  
Antiguo 31/03/2008, 09:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Ayuda con Pregunta Aleatoria y sus respuesta

Lo que pasa es que tienes que ciclar las respuestas:
Código PHP:
foreach( $datos as $pregunta ) {
      
$idPregunta $pregunta['idpregunta'];
      
$respuesta =  "SELECT * FROM respuestas WHERE idpregunta='$idPregunta' ";
      
$resultado mysql_query($respuesta);
      while (
$linea mysql_fetch_array($resultado)){
             echo 
"".$linea["idrespuesta"]."  |  ".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>";
       }  

Saludos.
  #5 (permalink)  
Antiguo 31/03/2008, 09:33
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Re: Ayuda con Pregunta Aleatoria y sus respuesta

Muchas gracias, pero ya solucione el incomveniente que tenia, era una tontera y quedaria asi....

Código PHP:
$dato $datos[0]['idpregunta'];
$respuesta =  "SELECT * FROM respuestas WHERE idpregunta='$dato' ";
$resultado mysql_query($respuesta);
while (
$linea mysql_fetch_array($resultado)){
echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>
"
;

Ahora otra consultita, como puedo modificar esto para que pueda repetirlo 5 veces pero sin tener que poner el codigo las 5 veces..... algo mas dinamico, ya que tengo que modificar de este mismo script lo siguiente:

$dato = $datos[0]['idpregunta']; Esto tengo que modificarlo por $dato = $datos[1]['idpregunta']; y asi 5 veces....

Para que me quede en cada pregunta la respuestas correspondientes a esas pregutnas.... o sea algo asi...
Código PHP:

$Conexion
mysql_connect ('localhost''pdu2207''sabrosos');
$database 'pdu2207_2';
mysql_select_db($database$Conexion);
$query "SELECT * FROM pregunta WHERE idmodulo='1' ORDER BY RAND() LIMIT 0,5";
$res mysql_query($query);
$array mysql_fetch_array($res);
do {
    
$datos[] =$array;
        } while (
$array mysql_fetch_array($res)) ;

echo 
$datos[0]['pregunta']; 
echo 
$datos[0]['idpregunta']; 

$dato $datos[0]['idpregunta'];
$respuesta =  "SELECT * FROM respuestas WHERE idpregunta='$dato' ";
$resultado mysql_query($respuesta);
while (
$linea mysql_fetch_array($resultado)){
echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>
"
;
}

echo 
$datos[1]['pregunta']; 
echo 
$datos[1]['idpregunta']; 

$dato $datos[1]['idpregunta'];
$respuesta =  "SELECT * FROM respuestas WHERE idpregunta='$dato' ";
$resultado mysql_query($respuesta);
while (
$linea mysql_fetch_array($resultado)){
echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>
"
;
}

echo 
$datos[2]['pregunta']; 
echo 
$datos[2]['idpregunta']; 

$dato $datos[2]['idpregunta'];
$respuesta =  "SELECT * FROM respuestas WHERE idpregunta='$dato' ";
$resultado mysql_query($respuesta);
while (
$linea mysql_fetch_array($resultado)){
echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>
"
;

Con respecto a la respuesta de3 Gatarov me tira el resultado de las preguntas sin identificarme el idpregunta, es decir que para todas las preguntas me tira todas las respuestas....

Última edición por cmarrero; 31/03/2008 a las 09:39 Razón: respuesta de gatarov
  #6 (permalink)  
Antiguo 31/03/2008, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Ayuda con Pregunta Aleatoria y sus respuesta

Para "optimizarlo" como propones, debes de ciclar tu arreglo de $datos como te expuse en mi ejemplo usando un foreach.

Saludos.
  #7 (permalink)  
Antiguo 31/03/2008, 09:53
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Re: Ayuda con Pregunta Aleatoria y sus respuesta

trate de hacer lo que me comenta GatorV:
Cita:
Iniciado por GatorV Ver Mensaje
Para "optimizarlo" como propones, debes de ciclar tu arreglo de $datos como te expuse en mi ejemplo usando un foreach.

Saludos.
Pero el resultado es que me tira todas las respuestas en la primer pregunta....

Como impentaria en el codigo que expuse arriba, el ciclo...

Gracias por responder...
  #8 (permalink)  
Antiguo 31/03/2008, 10:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Ayuda con Pregunta Aleatoria y sus respuesta

Código PHP:
foreach( $datos as $num => $pregunta ) {
      
$id $pregunta['idpregunta'];
      
$respuesta =  "SELECT * FROM respuestas WHERE idpregunta='$id' LIMIT 1";
$resultado mysql_query($respuesta);
while (
$linea mysql_fetch_array($resultado)){
echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>
"
;
}

Saludos.
  #9 (permalink)  
Antiguo 01/04/2008, 05:09
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Re: Ayuda con Pregunta Aleatoria y sus respuesta

Gracias por responder, pero el ciclo que me bindaste no me sirve por que me muestra 1 pregunta y debajo todas las respuestas de la consulta, digamos la consulta funcionaria bien, el problema es que tengo que ubicar en el php, una pregunta determinada y sus respuestas posibles debajo, son 5 preguntas y x cantidad de respuestas debajo. Con el arreglo que me diste es una pregunta y las respuestas de las demas preguntas debajo de la primer pregunta....

Como hago para fucionar las 2 consultas y poder mostrar la pregunta y debajo sus respuestas...

Gracias
  #10 (permalink)  
Antiguo 01/04/2008, 05:49
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: Ayuda con Pregunta Aleatoria y sus respuesta

Yo diría que algo así te valdría pero estoy un poco desentrenado:
Código PHP:
<?

$Conexion
mysql_connect ('localhost''pdu2207''sabrosos');
$database 'pdu2207_2';
$numero=5;
mysql_select_db($database$Conexion);
$res mysql_query("SELECT * FROM pregunta WHERE idmodulo='1' ORDER BY RAND() LIMIT 0,$numero");
while (
$array mysql_fetch_assoc($res)) 
{
    echo 
$array['pregunta']; 
    echo 
$array['idpregunta']; 
    
$resultado =  mysql_query("SELECT * FROM respuestas WHERE idpregunta='".$array['idpregunta']."' ");
    while (
$linea mysql_fetch_assoc($resultado))
    {
        echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>";
    }
}
Salu2 ;)
__________________
[+]
[+]
  #11 (permalink)  
Antiguo 01/04/2008, 19:01
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Re: Ayuda con Pregunta Aleatoria y sus respuesta

MUGRACIAS ME SIRVIO A LA PERFECCION:

Cita:
Iniciado por yoseman Ver Mensaje
Yo diría que algo así te valdría pero estoy un poco desentrenado:
Código PHP:
<?

$Conexion
mysql_connect ('localhost''pdu2207''sabrosos');
$database 'pdu2207_2';
$numero=5;
mysql_select_db($database$Conexion);
$res mysql_query("SELECT * FROM pregunta WHERE idmodulo='1' ORDER BY RAND() LIMIT 0,$numero");
while (
$array mysql_fetch_assoc($res)) 
{
    echo 
$array['pregunta']; 
    echo 
$array['idpregunta']; 
    
$resultado =  mysql_query("SELECT * FROM respuestas WHERE idpregunta='".$array['idpregunta']."' ");
    while (
$linea mysql_fetch_assoc($resultado))
    {
        echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>";
    }
}
Salu2 ;)

AHORA, SE ME COMPLICA UN POCO PARA ACOMODARLO EN EL DISEÑO..

UNA ULTIMA PREGUNTITA, CUAL ES LA MEJOR FORMA PARA CREAR ESTO EN FORMA DE FUNCION Y LLAMARLA...

GRACIAS
  #12 (permalink)  
Antiguo 01/04/2008, 20:17
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: Ayuda con Pregunta Aleatoria y sus respuesta

Supongo que algo así te serviría:

Código PHP:
<?

$Conexion
mysql_connect ('localhost''pdu2207''sabrosos');
$database 'pdu2207_2';
mysql_select_db($database$Conexion);

function 
devuelvePreguntasRespuestas($idmodulo=1,$numero=5)
{
    
$res mysql_query("SELECT * FROM pregunta WHERE idmodulo='".$idmodulo."' ORDER BY RAND() LIMIT 0,".$numero);
    while (
$array mysql_fetch_assoc($res)) 
    {
        echo 
$array['pregunta']; 
        echo 
$array['idpregunta']; 
        
$resultado =  mysql_query("SELECT * FROM respuestas WHERE idpregunta='".$array['idpregunta']."' ");
        while (
$linea mysql_fetch_assoc($resultado))
        {
            echo 
"".$linea["respuesta"]."<input type=checkbox name=".$linea["idrespuesta"]." id=checkbox /><br>";
        }
    } 
}


// por defecto modulo 1 y 5 respuestas
devuelvePreguntasRespuestas();

//modulo 2 y por defecto 5 preguntas
devuelvePreguntasRespuestas(2);

//modulo 3 y 10 preguntas
devuelvePreguntasRespuestas(3,10);

?>
Se llama a la función una vez se ha conectado a la db y se le pasa como parámetros el id del módulo y el número de preguntas, si no se pone nada, por defecto módulo 1 y 5 preguntas.



Salu2 ;)
__________________
[+]
[+]
  #13 (permalink)  
Antiguo 02/04/2008, 07:51
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación Re: Ayuda con Pregunta Aleatoria y sus respuesta

Barabaro, me sirve a la perfeccion, pero tengo un par de dudas que espero me puedas resolver con respecto al script que me brindaste..

La idea de colocarlo en funciones es poder hacer un include(fucniones.php) para cargar las preguntas y respuestas, la idea es modularizar el proyecto, yo soy novato con php y estoy tratando de hacer lo mas ordenado posible el trabajo que estoy haciendo...

Entonces, las preguntas serian las siguientes. como hago el include al diseño que tengo armado, digamos que quiero separar los array en tablas con sus respecticas celdas y todo eso como hago.... ya que la funciones me imprime directamente los resultados ordenados.....

estoy tratando de aprender esto de utilizar funciones y aplicarlas al diseño... una ayudita de como aplicaria este script correctamente con include y en un diseño de tablas o div ....

Gracias yoseman te debo ya varias...... gracias de nuevo....
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 21:49.