Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/05/2013, 06:16
alchaser
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Test con PHP fallo en verificación de aciertos

Hola buenas,
Estoy haciendo una aplicación con PHP con una serie de preguntas obtenidas aleatoriamente de una base de datos MySql, y cuando paso a comprobar las respuestas, mi intención es contabilizar las correctas y tomarlas como +1 a la nota, y las erróneas restarlas 0.2. Tengo el siguiente código en la hoja de respuestas:
Código PHP:
if (is_array($_SESSION['id_pregunta']))
foreach ($_SESSION['id_pregunta'] as $key=>$value)
{
        $sql="SELECT * FROM preguntas WHERE id='$value'";
        if ($sql=mysql_query($sql))
        {?><tr><?
            $assoc
=mysql_fetch_assoc($sql);
            
$envio=$_SESSION['array'][$key];
            
$correcta=array_search("0",$envio);
            
$value1=$_POST['Pregunta'.$key];
            print 
"<td class=\"pregunta\"><b><tt>".$assoc['pregunta']."</b></tt></td>\n";
            print 
"<td".( ( array_search("0",$envio) == $value1 && $value1!="") ? " class=\"acierto\"" " class=\"acierto1\"" )."><tt>".$assoc['correcta']. "</tt></td>\n";
            print 
"<td".( ( array_search("1",$envio) == $value1 && $value1!="" ) ? " class=\"fallo\"" " class=\"fallo1\"" )."><tt>".$assoc['incorrecta1']. "</tt></td>\n";
            print 
"<td".( ( array_search("2",$envio) == $value1 && $value1!="" ) ? " class=\"fallo\"" " class=\"fallo1\"" )."><tt>".$assoc['incorrecta2']. "</tt></td>\n";
            print 
"<td".( ( array_search("3",$envio) == $value1 && $value1!="" ) ? " class=\"fallo\"" " class=\"fallo1\"" )."><tt>".$assoc['incorrecta3']. "</tt></td>\n";
            print 
"<td".( ( array_search("4",$envio) == $value1 && $value1!="" ) ? " class=\"fallo\"" " class=\"fallo1\"" )."><tt>".$assoc['incorrecta4']. "</tt></td>\n";

?></tr><?

    
    
}
}

?><table> <tr><td>
TU NOTA ES: <? 
$nota 
= array();
$arrayvalue 0;
while (
$arrayvalue <=9)
{
foreach (
$_SESSION['id_pregunta'] as $key=>$value)
{
if(
array_search("0",$envio) == $value1)
{
$nota[$arrayvalue++] = "1";
}
else
{
$nota[$arrayvalue++] = "-0.2";}
unset(
$value);

}






$scoring $nota[0]+$nota[1]+$nota[2]+$nota[3]+$nota[4]+$nota[5]+$nota[6]+$nota[7]+$nota[8]+$nota[9]; echo $scoringsession_destroy();
Y ocurre lo siguiente, si todas se aciertan, devuelve el valor 10, pero con que solo falles una ya las considera todas erróneas y devuelve -2. ¿Alguien podría ayudarme?
Gracias de antemano.