Foros del Web » Programando para Internet » PHP »

Ayuda! php + mysql en examen

Estas en el tema de Ayuda! php + mysql en examen en el foro de PHP en Foros del Web. Hola! Estoy haciendo un proyecto en el que tengo que desplegar unas preguntas en radio button que deberán ser aleatorias, y luego obtener si las ...
  #1 (permalink)  
Antiguo 21/05/2008, 21:02
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Ayuda! php + mysql en examen

Hola! Estoy haciendo un proyecto en el que tengo que desplegar unas preguntas en radio button que deberán ser aleatorias, y luego obtener si las respuestas son verdaderas o no. Tengo una tabla preguntas en mysql que tiene los campos id_pregunta, pregunta, verdadera, falsa1 y falsa2. Tengo que obtener si la respuesta seleccionada en el radio button es verdadera o falsa, y contar el número de verdaderas para regresar un mensaje con la calificación, mi código es el siguiente, estoy usando easyphp y dreamweaver, agradecería su ayuda =D


<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Examen</title>
</head>
<body>
<H1>Nuevo Examen</H1>

<?php
include("conex.phtml");
$link=Conectarse();


//generamos un número aleatorio
$result=mysql_query("select * from preguntas order by rand() limit 5",$link);
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,2);
shuffle($num);
while (list(,$pregunta) = each($num))
{
$posicion = "$pregunta";
echo"$pregunta";
switch($posicion)
{
case 0: // Bloque 1
echo '<input type="radio" name="'.$i.'" value="'.$row['ver_pre'].'"> '.$row['ver_pre'].' <br>';
$x=$row['ver_pre'];
break;
case 1: // Bloque 2
echo '<input type="radio" name="'.$i.'" value="'.$row['f1_pre'].'"> '.$row['f1_pre'].' <br>';
break;
case 2: // Bloque 3
echo '<input type="radio" name="'.$i.'" value="'.$row['f2_pre'].'"> '.$row['f2_pre'].' <br>';;
break;
}
}
}

?>

<?php
mysql_free_result($result);
mysql_close($link);
?>
  #2 (permalink)  
Antiguo 21/05/2008, 22:41
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Respuesta: Ayuda! php + mysql en examen

lo que deberias de hacer es guardar en algun lugar el id de la pregunta o la pregunta

ejemplo

echo '<input type="radio" name="p'.$i.'" value="'.$row['ver_pre'].'"> '.$row['ver_pre'].' <br>';

luego al final pones un input submit

y al recibir tendrias por ejemplo

$_POST['p12'];
$_POST['p33'];
$_POST['p67'];

....

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

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

$resultado=mysql_query("select * from pregutnas where id='$id' LIMIT 1");

if(mysql_num_rows($resultado)==1){

$pregunta=mysql_fetch_assoc($resultado);

if($pregutna['ver_pre']==$valor){
echo "respuetsa correcta para ".$pregunta['pregunta'];
}else{
echo "resputa incorrecta para ".$pregunta['pregunta']." la respuesta era ".$pregunta['ver_pre'];
}

}else{echo "la pregutna no existe";}



}
//foreach

bueno algo asi seria, revisalo seguro pifie en alguna tecleada
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 24/05/2008, 12:42
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Ayuda! php + mysql en examen

Muchas gracias, funcionó de maravilla
  #4 (permalink)  
Antiguo 04/09/2008, 18:05
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Antigüedad: 16 años, 2 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
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:55.