Foros del Web » Programando para Internet » PHP »

Ayuda con pase de variables desde un formulario!

Estas en el tema de Ayuda con pase de variables desde un formulario! en el foro de PHP en Foros del Web. Hola a todos! Estoy realizando una aplicacion web para evaluar examanes online. Surgio un problema que no logro resolver. Ya les explico: Yo utilizo php ...
  #1 (permalink)  
Antiguo 29/02/2004, 10:31
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 10 meses
Puntos: 0
Ayuda con pase de variables desde un formulario!

Hola a todos! Estoy realizando una aplicacion web para evaluar examanes online. Surgio un problema que no logro resolver. Ya les explico: Yo utilizo php y mysql para generar el examen con sus repuestas por pantalla. Coloco las preguntas y respuesta en una tabla para su ubicación en pantalla, para la seleccion de las preguntas utilizo botones de opciones. Luego necesito enviar los valores de las respuestas seleccionadas a otra página php donde necesito capturar cada uno de estos valores y realizar distintas operaciones( suma, resta, respuestas erradas,acertadas etc...)
El problema es que no se como capturar cada uno de los valores de las respuestas seleccionadas.
Si alguno de uds. puede ayudarme les estaria agradecido.

Aqui les dejo el código para que lo revisen y me den sus recomendaciones:

Este es el archivo PHP desde donde generamos por pantalla el examen:
Código PHP:
<?
include("conexion.php");
include(
"funciones.php");
    
$codigo=$_POST['examen']; 
    
$sql2 "select * from $codigo";
    
$resp2=enviar_sql($db$sql2);
    echo
"<form method='post' action='evaluar.php'>";
    echo
"<table width='750' border='0' cellpadding='0' cellspacing='0'>";
    
// Obtener números de filas del resultado
    
$num_filas=mysql_num_rows($resp2);
    
// Obtener números de atributos
    
$num_campos=mysql_num_fields($resp2);
      
//Mostrar el resultado de las columnas y filas de la tabla HTML
    
while ($array mysql_fetch_array($resp2))
          {
            echo
"<tr>";
            echo
"<td width='25' rowspan='4' valign='top'><strong><font color='#ff0000'>"$array["num_pregunta"];
            echo
"<td height='30' colspan='4' valign='top'><strong>"$array["pregunta"];
            echo
"</tr>";
            
$numero=$array['num_pregunta'];
            echo
"<tr>"
            echo
"<td width='30' height='30' align='center' valign='middle'>";
            echo
"<input type='radio' name='$numero' value='$array[valor1]'></td>";
            echo
"<td width='332' align='left' valign='middle'>"$array["respuesta1"];
            echo
"<td width='30' align='center' valign='middle'>";
            echo
"<input type='radio' name='$numero' value='$array[valor1]'></td>";
            echo
"<td width='332' align='left' valign='middle'>"$array["respuesta3"];
            echo
"</tr>";
            echo
"<tr>";
            echo
"<td width='30' height='30' align='center' valign='middle'>";
            echo
"<input type='radio' name='$numero' value='$array[valor1]'></td>";
            echo
"<td width='332' align='left' valign='middle'>"$array["respuesta2"];
            echo
"<td width='30' align='center' valign='middle'>";
            echo
"<input type='radio' name='$numero' value='$array[valor1]'></td>";
            echo
"<td width='332' align='left' valign='middle'>"$array["respuesta4"];
            echo
"</tr>";
            echo
"<tr>"
            echo
"<td height='20' colspan='10' valign='top'>&nbsp;</td>";
            echo
"</tr>";
        }
    echo
"<tr>"
    echo
"<td height='25' colspan='2' valign='top'><div align='center'> 
          <input type='submit' name='Submit' value='Evaluar'>
     </div></td>"
;
echo
"</tr>";
echo
"</table></center>";
echo
"</form>";
//Liberamos los recursos de las consultas
mysql_free_result($resp2);
//Se cierra la conexión
mysql_close($link);
?>
No les coloco la estructura de el archivo que utilizo para realizar la evaluación ya que lo he modificado demasiado que ya ni yo mismo lo entiendo espero alguno de uds. pueda ofrecerme alguna buena idea...

Por favor si pueden ayudarme se lo agradesco.
  #2 (permalink)  
Antiguo 01/03/2004, 07:46
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 14 años
Puntos: 0
Hola, vamos a ver si he entendido...
quieres recoger las respuestas del examen en el fichero evaluar.php,no?

Primero te recomiendo que en los nombre de los radio utilices cadenas de texto, quiero decir:
donde tienes <input type="radio" name="$numero" ...> pongas <input type="radio" name="pregunta$numero" ...>, por ejemplo.

Despues, para recoger los datos en la otra pagina solo tienes que acceder al valor $_POST['pregunta$numero'], donde aqui, $numero si que deberias obtenerlo de alguna de las siguientes maneras:
1. meterlo en la url -> evaluar.php?num=$numero,
2. meterlo en un campo hidden del formulario y recuperarlo en
evaluar.php asi $_POST['numero']
3. o pasarlo mediante una variable de sesion
$_SESSION['numero'].

Bueno, espero haberte ayudado, si tienes alguna duda no dudes en preguntarla,ok?

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #3 (permalink)  
Antiguo 01/03/2004, 09:12
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 10 meses
Puntos: 0
Gracias por contestar puchitol !!! entendiste bien, lo que necesito es capturar todas las respuestas seleccionadas. Intente hacerlo con el arreglo $_POST[ ] pero el problama es que no se como referirlo en la otra página, es decir tomar uno a uno cada valor, son 20 preguntas las que tendra el examen y debo verificar las respuestas de cada uno. La otra cuestion es que tengo poca experiencia programando en PHP.

En cuanto al nombre que utilize para los campos radio es el número con que esta almacenado en la base de datso la pregunta, de esa manera diferencio cada grupo de radiobottons.

Cuando me dices capturarlo en un campo hidden, debo capturar cada una de las 20 respuestas? Debo crear 20 camps hidden?? si puedes aclararme lo un poco más te lo agradecería...

Gracias por tu ayuda!!!!

Última edición por spectrum; 01/03/2004 a las 09:18
  #4 (permalink)  
Antiguo 01/03/2004, 21:26
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 10 meses
Puntos: 0
Por favor necesito su ayuda... pense que el problema no era tan complicado... he visto que han ayudado en problemas "mas complicados"... Por favor si necesitan que les aclare algo más sobre el problema solo haganmelo saber ... en serio necesito ayuda en esto...

Última edición por spectrum; 01/03/2004 a las 21:30
  #5 (permalink)  
Antiguo 02/03/2004, 02:42
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 14 años
Puntos: 0
hola,
las preguntas, segun veo (por los radio button) solo pueden tener una respuesta, no?
Entonces, si son 20 preguntas por examen, "solo" tendrias que recorrer en un bucle las 20 preguntas y obtener asi la respuesta de cada una.
Para empezar por algo sencillo, en vez de utilizar un bucle, haremos como si solo tuvieses una pregunta, de esta manera te ayudara a entenderlo mejor.

Código PHP:
//imaginamos que el nombre de lo radiobutton en el
//formulario del examen es pregunta1

//entonces para recuperar esa respuesta en evaluar.php seria asi

$respuesta $_POST['pregunta1'];

// en respuesta tendrias el value del radio seleccionado
// entonces tendrias que compararlo con la respuesta correcta 
comprueba este pequeño script (haz que se imprima solo una pregunta y compruebalo. Si te funciona bien pasamos a la siguiente fase: implementar el bucle.

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #6 (permalink)  
Antiguo 02/03/2004, 09:41
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 10 meses
Puntos: 0
Gracias por tu ayuda puchitol. Te digo que esa prueba ya la habia realizado y me funciono perfectamente, el probelma se me presento cuando tenia más de una pregunta
Dejame explicarte algo:
La base de datos de las preguntas tiene la siguiente estructura:
num_pregunta : número que le asigno a la pregunta en la BD
pregunta: la pregunta
respuesta1: primera respuesta posible
valor1: valor de la primera respuesta
respuesta2: segunda respuesta posible
valor2: valor de la segunda respuesta
respuesta3:
valor3:
respuesta4:
valor4:

Tiene esa estructura por que cada respuesta posible debe poseer un valor, esto debido a que pueden haber puntiaciones parciales, es decir, cada respuesta correcta vale 1 pto, pero pueden haber opciones donde alguna respuesta de las 4 posibles pueden valer 0,25 ó 0,50 ptos. Se utiliza los radiobottons para limitar que se seleccione solo una respuesta.

Ahora cuando tengo más de 1 pregunta cada grupo de botones de opciones debe poseer un nombre destinto para cada pregunta??
Lo que trato de hacer es asignarle como nombre a cada grupo de botones de opciones el número de la pregunta en la base de datos.
Luego tomar cada respuesta selecionada de cada pregunta y sumar la puntuación alcanzada.

Espero haberte aclarado un poco más el panorama, como ves no necesito comparar si la respuesta es correcta o no, eso lo puedo determinar si el valor de la respuesta que la persona selecione vale 1Pto.

Gracias por tu ayuda y espero puedas seguir orientandome.
  #7 (permalink)  
Antiguo 03/03/2004, 22:51
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 10 meses
Puntos: 0
Por favor... alguien puede ayudarme.. darme un poco de orientación en esto...

Espero su ayuda... la necesito!!

Última edición por spectrum; 03/03/2004 a las 22:52
  #8 (permalink)  
Antiguo 04/03/2004, 04:38
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 14 años
Puntos: 0
Hola, vamos a ver...
el problemilla que veo es el de si siempre van a ser las mismas preguntas o no, me explico... Si fueran simpre las mismas preguntas, no tendrias mayor problema, solo tendrias que hacer 20 $_POST['valor_radiobutton'] (donde valor_radiobutton es el valor que tiene la opcion seleccionada en el formulario del examen) e ir sumando todos los valores para obtener la nota final. En caso contrario, que imagino que sera tu caso, querras ir cambiando las preguntas, por lo que iran cambiando los nombres de los radiobutton,no?. Entonces, para este caso, una manera que piensote vendria bien seria la de utlizar variables de sesion para pasar los nombres de los radio y obtener asi su valor.

Ejemplo:

en formulario.php
Código PHP:
<?
 session_start
();
?>
<form ....>
...
Pregunta 1: Como te llamas?:
Opcion 1<input type="radio" name="pregunta1" value=0>
Opcion 2<input type="radio" name="pregunta1" value=0.5>
Opcion 3<input type="radio" name="pregunta1" value=1>

<? // se almacena el nombre de los radio
     // para obtener asi el valor del radio seleccionado
    // en el ficehro evaluar.php
$_SESSION['pregunta'][1] = "pregunta1";
?>
Pregunta 2: Que edad tienes?:
20<input type="radio" name="pregunta2" value=0>
22<input type="radio" name="pregunta2" value=0.25>
23<input type="radio" name="pregunta2" value=0.75>
25<input type="radio" name="pregunta2" value=1>
<?
$_SESSION
['pregunta'][2] = "pregunta2";
?>
...
Asi hasta las 20 preguntas...
</form>
Creo que la sintaxis es asi, mas o menos, si te da algun problema intenta consultar la documentacion para las variables de sesion.

en evaluar.php
Código PHP:
<?
session_start
();
?>
<html>
...
<body>
<?
 
// recorrido de todas las preguntas y suma de las respuestas
 
$nota=0;
  for(
$i=1;$i<=20;$i++)
 {
   
$nota $nota $_SESSION['pregunta'][$i];
 }

 
// por pantalla la nota del examen
 
echo "La nota es: $nota";
?>
</body>
</html>
Creo que el codigo seria asi, de todas formas, como ya te he dicho, busca en la documentacion de PHP todo lo referente a sesiones

Espero que estes más orientado.

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #9 (permalink)  
Antiguo 04/03/2004, 04:42
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 14 años
Puntos: 0
Perdon, una pequeña rectificacion:
donde pone $_SESSION['pregunta'][$i] en evaluar.php tiene que aparecer $_POST['$_SESSION['pregunta'][$i]']. Si no te funciona asi, haz esto:

$valor = $_SESSION['pregunta'][$i];
$nota = $nota + $_POST["$valor"];

Si no se pone el $_POST, no se obtendrian los valores de las respuestas seleccionadas en el form del examen (un pequeño lapsus!!)
un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #10 (permalink)  
Antiguo 04/03/2004, 13:52
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 10 meses
Puntos: 0
O.k Pichitol, gracias por esa... Dejame probarlo con sesiones a ver que tal funciona y luego te cuento.

Nos vemos...

Última edición por spectrum; 04/03/2004 a las 14:02
  #11 (permalink)  
Antiguo 11/03/2004, 21:25
 
Fecha de Ingreso: febrero-2004
Mensajes: 35
Antigüedad: 13 años, 10 meses
Puntos: 0
Sonrisa

Gracias Puchitol, no habia podido contestarte. Me sirvio de mucha ayuda lo que me sugeriste... Gracias!

Esperaba que me saliera un poco más corto el código, pero.... me salios super largo... de todas maneras funciona, espero mejorarlo hacerlo más corto...

Muchas gracias por todo... es bueno contar con gente como tu!!

Hasta una proxima ...

Última edición por spectrum; 11/03/2004 a las 21:43
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 14:43.