Foros del Web » Programando para Internet » PHP »

Autoevaluacion en php

Estas en el tema de Autoevaluacion en php en el foro de PHP en Foros del Web. estoy utilizando este codigo para la autoevaluacion html> <head> <title> Cuestionario de preguntas con tiempo </title> </head> <body> <H2 align='center'> CUESTIONARIO </H2> <br> <hr> <br> ...
  #1 (permalink)  
Antiguo 31/03/2009, 15:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 48
Antigüedad: 16 años
Puntos: 0
Autoevaluacion en php

estoy utilizando este codigo para la autoevaluacion
html> <head> <title> Cuestionario de preguntas con tiempo </title> </head> <body>

<H2 align='center'> CUESTIONARIO </H2> <br> <hr> <br>

<?php

if ( !isset($_POST['evaluar']) ) {
$_SESSION['preguntas'] = array();
$_SESSION['respuestas'] = array();

if ($_SESSION['temporizador'] > 0) {
echo "<script language='JavaScript'> \n";
echo "temporizador = setInterval('document.forms.fo.submit();', ({$_SESSION['temporizador']} *60 *1000) ); \n";
echo "</script>";
}

$db = mysql_connect('localhost', '', '');
mysql_select_db('cuestionario', $db);
$consulta = "SELECT cod_preg, enunciado FROM preguntas WHERE nivel = {$_SESSION['nivel']}";
$preguntas = mysql_query($consulta, $db);
if ( mysql_num_rows($preguntas) ) {
echo "<form name='fo' method='post'> \n";
while ($pregunta = mysql_fetch_array($preguntas) ) {
$_SESSION['preguntas'][$pregunta['cod_preg']] = array();
$_SESSION['preguntas'][$pregunta['cod_preg']]['puntuacion'] = 0;
$_SESSION['preguntas'][$pregunta['cod_preg']]['numrespuestas'] = 0;
echo "{$pregunta['enunciado']} <br> \n";
$consulta = "SELECT cod_resp, enunciado, valor FROM respuestas WHERE cod_preg = '{$pregunta['cod_preg']}'";
$respuestas = mysql_query($consulta, $db);
if ( mysql_num_rows($respuestas) ) {
while ($respuesta = mysql_fetch_array($respuestas) ) {
echo "{$respuesta['enunciado']} <input type='radio' value='{$respuesta['cod_resp']}' name='RB{$pregunta['cod_preg']}'> <br> \n";
$_SESSION['respuestas'][$respuesta['cod_resp']] = $respuesta['valor'];
$_SESSION['preguntas'][$pregunta['cod_preg']]['numrespuestas'] ++;
}
}
}
echo "<input type='submit' name ='evaluar' value='Evaluar'> <br> \n";
echo "</form> <br> \n";
}
mysql_close();

} else {
$puntuacion = 0;
$contestadas = 0;
$acertadas = 0;
$totalPreguntas = count( $_SESSION['preguntas'] );

$db = mysql_connect('localhost', '', '');
mysql_select_db('cuestionario', $db);

foreach ($_POST as $nombre => $valor) {
if ( substr_count($nombre, "RB") > 0 ) {
$contestadas ++;
$codigo_pregunta = substr( $nombre, 2 );
echo "{$_SESSION['preguntas'][$codigo_pregunta]} <br> $codigo_pregunta <br> \n";
$preguntaMal = - (1 / $_SESSION['preguntas'][ $codigo_pregunta ]['numrespuestas'] );
if ( $_SESSION['respuestas'][ $valor ] ) {
$_SESSION['preguntas'][ $codigo_pregunta ]['puntuacion'] = 1;
$acertadas ++;
} else {
$_SESSION['preguntas'][ $codigo_pregunta ]['puntuacion'] = $preguntaMal;
}
$puntuacion += $_SESSION['preguntas'][ $codigo_pregunta ]['puntuacion'];
$respusta = "INSERT INTO historial (cod_preg, puntuacion) VALUES ('{$codigo_pregunta}', '{$_SESSION['preguntas'][ $codigo_pregunta ]['puntuacion']}' )";
$ok = mysql_query($respuesta, $db);
}
}
mysql_close($db);

echo "<B> El test ha finalizado. </B> <br> <br> \n";
echo "Los resultados son los siguientes: <br> \n";
echo " - Pregutnas contestadas: $contestadas <br> \n";
echo " - Preguntas acertadas: $acertadas <br> \n";
echo " - Preguntas falladas: " . ($contestadas - $acertadas) . " <br> \n";
echo " - Puntuación total: <B> $puntuacion </B> <br> <br> \n";
echo "Puntuación de cada pregunta (preguntas del nivel {$_SESSION['nivel']}): <br> \n";

$contador = 1;
foreach ($_SESSION['preguntas'] as $preg => $valor) {
$puntos = each($valor);
echo "- Pregunta ". $contador++ .": {$puntos[1]} <br> \n";
}

}

?>

</body> </html>

el problema q tengo es q cuando le doy al boton evaluar me genera un error y no me muestra los datos por que es espero q me pueda ayudar
  #2 (permalink)  
Antiguo 31/03/2009, 15:41
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
Respuesta: Autoevaluacion en php

Hola ron234,

¿Que error te marca?

Saludos.
  #3 (permalink)  
Antiguo 31/03/2009, 15:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 48
Antigüedad: 16 años
Puntos: 0
Respuesta: Autoevaluacion en php

me muestra que internet explorer no puede mostrar la pagina
  #4 (permalink)  
Antiguo 31/03/2009, 15:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 48
Antigüedad: 16 años
Puntos: 0
Respuesta: Autoevaluacion en php

se queda buscando despues me dice que apache http genero un error
  #5 (permalink)  
Antiguo 31/03/2009, 15:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Autoevaluacion en php

Si te fijas, verás que estás haciendo un bucle while para recorrer la consulta SQL, pero dentro de ese bucle, sobreescribes el resultado de la consulta por otra y la recorres, lo cual hace que no se genere el resultado esperado.

Si necesitas en todo caso hacer una consulta dentro del bucle while, usa otro nombre de variable para guardar el resultado.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 31/03/2009, 16:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 48
Antigüedad: 16 años
Puntos: 0
Respuesta: Autoevaluacion en php

mucha gracias david grande coloque otra variable pero igual me genera error
  #7 (permalink)  
Antiguo 31/03/2009, 16:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Autoevaluacion en php

Por favor, si te genera error, especifica cuál es, de lo contrario, difícilmente podremos ayudarte.

También, fíjate en lo siguiente:
Código php:
Ver original
  1. $respusta = "INSERT INTO ...";
  2. $ok = mysql_query($respuesta, $db);
El nombre de la variable a la que estás asignando es incorrecta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 31/03/2009, 16:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 48
Antigüedad: 16 años
Puntos: 0
Respuesta: Autoevaluacion en php

error comienza de este codigo en adelante

foreach ($_POST as $nombre => $valor) {
if ( substr_count($nombre, "RB") > 0 ) {
$contestadas ++;
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:13.