Foros del Web » Programando para Internet » PHP »

Promedio Examen

Estas en el tema de Promedio Examen en el foro de PHP en Foros del Web. Hola, bueno tengo esta sección del formulario del cual deseo sacar promedio: Código PHP: $id = 1 ; while ( $row3  =  mysql_fetch_array ( $result3 )) ...
  #1 (permalink)  
Antiguo 27/01/2010, 21:47
Avatar de JHTKoZ  
Fecha de Ingreso: noviembre-2009
Ubicación: Teocaltiche, Mexico
Mensajes: 67
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta Promedio Examen

Hola, bueno tengo esta sección del formulario del cual deseo sacar promedio:

Código PHP:
$id=1;
while (
$row3 mysql_fetch_array($result3))
{
    
$id++;
    echo 
'<TR height="150"><TD><P>' $row3['Numero'] . '.-' $row3['Pregunta'] . '</P></TD>';
        echo 
'<td><P><INPUT type="radio" name="op'.$id.'" value="1"> 1. ' .     $row3['Opcion1'] . '</P><P><INPUT type="radio" name="op'.$id.'" value="2"> 2. ' $row3['Opcion2'] . '</P><P><INPUT type="radio" name="op'.$id.'" value="3"> 3. ' $row3['Opcion3'] . '</P><P><INPUT type="radio" name="op'.$id.'" value="4"> 4. ' $row3['Opcion4'] . '</P></td></tr>';

Las preguntas las saco de mi base de datos, lo que hace es que cada pregunta tiene 4 opciones, y pues a cada vuelta, opn va incrementando su valor en n, así a cada vuelta tendré el name de op distinto para cada grupo de 4 opciones por pregunta. Hasta ahí todo funciona, el problema es en el archivo donde se saca la calificación:

Código PHP:
include "bdconection.php"//aqui mando llamar a la base de datos, aqui todo bien
$link conectarse();
$idExamen $_POST['idExamen'];//se postea de el formulario anterior
$id $_POST['id'];

$suma 0;
for(
$i 1$i == $id$i++) //id es el número de preguntas
{
    if (
$_POST['op'.$i] != //pregunta si la opción trae valor, si está en blanco va a la sigueinte pregunta sin incrementar $suma
    
{
        
$sql "SELECT * FROM preguntas WHERE idExamen = '$idExamen' AND Numero = '$i'";//de la tabla preguntas, seleccionara donde sea el idExamen y donde el campo Numero sea igual a el numero de pregunta que esta revisando
        
$result mysql_query($sql) or die ("La siguiente consulta contiene algún error:<br>nSQL: <b>$sql</b>");
        
$row mysql_fetch_array($result);
        if (
$row['Respuesta'] == $_POST['op'.$i])//si lo que arrojo de respuesta (que esta guardado en un campo) es igual a el valor de op, va a incrementar suma, ya que la respuesta es correcta, si no no lo cuenta
        
{
            
$suma += 1;
        }
    }
}
    echo((
$suma*100)/$id); 
Eso ultimo no me corre, siempre imprime "0" o sea que no esta revisando ninguna pregunta, que podría ser?

P.D. Siempre me imprimirá "0" aunque intente revisar el examen con las respuestas correctas de acuerdo a mi tabla mysql

Última edición por JHTKoZ; 27/01/2010 a las 22:10
  #2 (permalink)  
Antiguo 27/01/2010, 22:36
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 15 años, 5 meses
Puntos: 27
Respuesta: Promedio Examen

Estas estas incrementado $id antes de usarlo. Y capaz que te revisa pero por esto no te coincien las respuestas.
Código PHP:
$id=1;
while (
$row3 mysql_fetch_array($result3))
{
    echo 
'<TR height="150"><TD><P>' $row3['Numero'] . '.-' $row3['Pregunta'] . '</P></TD>';
        echo 
'<td><P><INPUT type="radio" name="op'.$id.'" value="1"> 1. ' .     $row3['Opcion1'] . '</P><P><INPUT type="radio" name="op'.$id.'" value="2"> 2. ' $row3['Opcion2'] . '</P><P><INPUT type="radio" name="op'.$id.'" value="3"> 3. ' $row3['Opcion3'] . '</P><P><INPUT type="radio" name="op'.$id.'" value="4"> 4. ' $row3['Opcion4'] . '</P></td></tr>';
    
$id++;

Osea que en vez de que $i empiece en 1 empieza en 2

Otra cosa es que me parece que si vien estas recorriendo el nro de preguntas me parece que te falta recorre en nro de opciones de repuesta que tiene cada una.

Espero que te sirva.
  #3 (permalink)  
Antiguo 27/01/2010, 22:37
Avatar de JHTKoZ  
Fecha de Ingreso: noviembre-2009
Ubicación: Teocaltiche, Mexico
Mensajes: 67
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Promedio Examen

Muchas gracias, eso era :P

Etiquetas: examen, promedio
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 00:48.