Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/11/2013, 06:40
Avatar de quinqui
quinqui
 
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Formulario php preguntas de 1 en una

Holas, ElleLawliet.

Ya que estás enviando tu respuesta por formulario en método POST, debes recibirla del mismo modo. Actualmente tienes una condición para detectar si hay una respuesta en sesión, puedes colgarte también de ella, aunque te falta el momento en el que le asignas su valor:

Código PHP:
<?php
    
if(isset($_SESSION['numpregunta']))
    {
        if (isset(
$_POST["resp"]))
        {
            
// acá haces las tareas para insertar la respuesta donde
            // lo tengas definido (base datos, sesión, etc.)
        
}
    }
    else
    {
        
$_SESSION['numpresgunta']=0;
    }
?>

    <form action="examen.php" method="POST">
    <?php
     
// si siempre vas a mostrar una sola pregunta por página,
     // no es necesario recorrer el array, sólo accede a la pregunta
     // que quieres por su número:
     
$num $_SESSION['numpregunta'];
     
$t $test[$num];
     echo 
$num.". {$t['pregunta']} <br/><br/>";
     foreach (
$t['respuestas'] as $res)
     {
         echo 
'<input name="resp" value="$resp" type="radio">'.$res."<br/>";
     }
     echo 
"<br/><br/>";
     
// acá dejas guardado en sesión que la última pregunta
     // a la que accediste fue la $num:
     // (esto en todo caso lo puedes cambiar por un variable oculta de formulario (hidden),
     // así también llega con el POST del formulario)
     
$_SESSION['numpregunta'] = $num;
     
?>
    </form>
Ahora, respecto a que la persona pueda navegar entre las preguntas (ir adelante o atrás a voluntad), si has planteado colocar la pregunta y sus alternativas en un form POST, debes agregar el botón que envía el form (submit). En ese sentido, tal vez habría que agregar a tus links de navegación el botón de "Guardar". Algo como:

Código PHP:
<form...>

 <!-- acá va tu form -->

 <!-- y esta es la navegación: debe ir dentro del form para que el botón quede dentro -->
    <a href="?num=<?php print $_SESSION['numpregunta']--; ?>">Pregunta Anterior</a> 
    <input type="submit" value="Guardar Respuesta" />
    <a href="?num=<?php print $_SESSION['numpregunta']++; ?>">Pregunta Siguiente</a>

</form>
Y como ves en el código que te puse, si vas a enviar los valores de la sesión por URL, debes asociarlos a algo. En este caso, yo te las asocié a una variable que recibirás luego por GET (y de paso te faltaba ponerle un print a las variables, ya que por si solas no harán nada).

Código PHP:
// con esta sentencia, el valor de la pregunta en curso lo toma en primera
// instancia desde el URL (GET), pero si no viene por allí, lo toma de la sesión
// anterior:
$_SESSION["numpregunta"] = (isset($_GET["num"]) ? $_GET["num"]: $_SESSION["numpregunta"]); 
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*