Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/09/2008, 18:05
sbol
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda! php + mysql en examen

Hola!

Estoy en un proyecto similar e intenté probar e código que mencionan pero no me funciona bien.

Ojalá puedan orientarme, se los agradezco de antemano...

El formulario arroja correctamente las preguntas aleatorias y sus opciones en formato RADIO, pero al hacer click en enviar, el php que recibe me arroja siempre lo siguiente:

la pregunta no existe
respuesta (correcta/incorrecta) para (Pregunta 1). la respuesta era: (Respuesta 1)
respuesta (correcta/incorrecta) para (Pregunta 2). la respuesta era: (Respuesta 2)
la pregunta no existe

Esto aun cuando la pregunta 1 y la pregunta 2 ni siquiera aparecen en el formulario. Vean que el primer renglón y el cuarto renglón siempre indica que la pregunta no existe.


Mi BD tiene la tabla 'preguntas' y sus campos son: id, nom_pre, ver_pre, f1_pre, f2_pre, f3_pre


El código del formulario es: (no incluyo todo el HTML para ser concreto)

<form action="registro.php" method="post" name="registro_trivia">
<?
include ("atodb.php");
$enlace = mysql_connect ($host, $user, $password);
mysql_select_db ($db, $enlace);

$result = mysql_query ("SELECT * FROM preguntas ORDER by rand() LIMIT 5", $enlace);
echo "<br>";
for($i=0 ; $i<5 ; $i++)
{
$row = mysql_fetch_array($result);
echo "<br><br>";
printf("%d %s",$i+1,$row[("nom_pre")]);
echo "<br>";
$num = range(0,3);
shuffle($num);
while (list(,$pregunta) = each($num))
{
$posicion = "$pregunta";
// echo "$pregunta"; // Esta línea la puse como comentario porque me agregaba el 'case' antes de la pregunta y todas las que tienen 0 se decubría que eran correctas
switch($posicion)
{
case 0: // Bloque 1
echo '<input type="radio" name="p'.$i.'" value="'.$row['ver_pre'].'"> '.$row['ver_pre'].' <br>';
$x=$row['ver_pre']; //¿Cuál es la función de esta línea?
break;
case 1: // Bloque 2
echo '<input type="radio" name="p'.$i.'" value="'.$row['f1_pre'].'"> '.$row['f1_pre'].' <br>';
break;
case 2: // Bloque 3
echo '<input type="radio" name="p'.$i.'" value="'.$row['f2_pre'].'"> '.$row['f2_pre'].' <br>';
break;
case 3: // Bloque 4: Lo agregué porque mi ejemplo lleva 1 verdadera y 3 falsas
echo '<input type="radio" name="p'.$i.'" value="'.$row['f3_pre'].'"> '.$row['f3_pre'].' <br>';
break;
}
}
}
?>
<input name="submit" type="submit" value="Enviar" />
</form>
<?
mysql_free_result($result);
mysql_close($enlace);
?>


Y el código del PHP que recibe es:

<?
include ("atodb.php");
$enlace = mysql_connect ($host, $user, $password);
mysql_select_db ($db, $enlace);

foreach ($_POST as $clave => $valor){
// clave el nombre de la pregunta pXXXX
// la respuesta elegida
// quitamos la p para tener el id de la pregunta

$id=substr($clave,1,strlen($clave));

$resultado=mysql_query("SELECT * FROM preguntas WHERE id='$id' LIMIT 1");

if(mysql_num_rows($resultado)==1){
$pregunta=mysql_fetch_assoc($resultado);
if($pregunta['ver_pre']==$valor){
echo "respuesta correcta para&nbsp;".$pregunta['nom_pre'];
echo "<br>";
}else{
echo "respuesta incorrecta para&nbsp;".$pregunta["nom_pre"].".&nbsp;La respuesta era:&nbsp;".$pregunta["ver_pre"];
echo "<br>";
}
}else{echo "la pregunta no existe";
echo "<br>";
}
}
//foreach
?>

Bueno mil gracias de antemano otra vez!!

Saludos!

SBOL