Foros del Web » Programando para Internet » PHP »

Como hacer un test

Estas en el tema de Como hacer un test en el foro de PHP en Foros del Web. Hola soy principiante en esto del php y me han encargado hacer un test, ya m he planteado como hacerlo pero creo k no es ...
  #1 (permalink)  
Antiguo 28/11/2007, 12:11
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
Como hacer un test

Hola soy principiante en esto del php y me han encargado hacer un test,
ya m he planteado como hacerlo pero creo k no es la mejor forma, xk es muxo codigo, y ahora quiero hacer k llege al email la respuesta de cada pregnta, pero veo que haciendolo aasi es hacer muxo codigo, prgnto si alguien m puede dcir alguna otra manera para haceerlo, si se puede con arrays o algo para ahorrar codigo y tiempo, muxas gracias, lo he hecho de la siguiente manera:

HTML (SON 60 PREGUNTAS, LAS HE QUITAO PA OCUPAR MENOS)
Cita:
<html>
<head>
<title>Test</title>
</head>

<body bgcolor="99FFFF">
<h1>Test</h1>
<form action="mail.php" method="post">

Nombre :
<input name="nombre" size="15">
Apellidos :
<input name="apellidos" size="15">

<h3>Responde a las siguientes preguntas : </h3>

<li>¿ Pregunta 1 ? <br>
<input type="radio" name="no1" value="1"> Si
<input type="radio" name="no1" value="0"> No
<p>

<li>¿ Pregunta 2 ? <br>
<input type="radio" name="no2" value="3"> Si
<input type="radio" name="no2" value="0"> No
<p>

<li>¿ Pregunta 3 ? <br>
<input type="radio" name="no3" value="1"> Si
<input type="radio" name="no3" value="0"> No
<p>

<li>¿ Pregunta 4 ? <br>
<input type="radio" name="no4" value="2"> Si
<input type="radio" name="no4" value="0"> No
<p>

<li>¿ Pregunta 5 ? <br>
<input type="radio" name="no5" value="1"> Si
<input type="radio" name="no5" value="0"> No
<p>

<li>¿ Pregunta 6 ? <br>
<input type="radio" name="no6" value="1"> Si
<input type="radio" name="no6" value="0"> No
<p>

<li>¿ Pregunta 7 ? <br>
<input type="radio" name="no7" value="2"> Si
<input type="radio" name="no7" value="0"> No
<p>

<li>¿ Pregunta 8 ? <br>
<input type="radio" name="no8" value="1"> Si
<input type="radio" name="no8" value="0"> No
<p>

<li>¿ Pregunta 9 ? <br>
<input type="radio" name="no9" value="1"> Si
<input type="radio" name="no9" value="0"> No
<p>

<li>¿ Pregunta 10 ? <br>
<input type="radio" name="no10" value="1"> Si
<input type="radio" name="no10" value="0"> No
<p>

<li>¿ Pregunta 11 ? <br>
<input type="radio" name="no11" value="2"> Si
<input type="radio" name="no11" value="0"> No
<p>

<li>¿ Pregunta 12 ? <br>
<input type="radio" name="no12" value="2"> Si
<input type="radio" name="no12" value="0"> No
<p>

<li>¿ Pregunta 13 ? <br>
<input type="radio" name="no13" value="2"> Si
<input type="radio" name="no13" value="0"> No
<p>

<li>¿ Pregunta 14 ? <br>
<input type="radio" name="no14" value="2"> Si
<input type="radio" name="no14" value="0"> No
<p>

<li>¿ Pregunta 15 ? <br>
<input type="radio" name="no15" value="1"> Si
<input type="radio" name="no15" value="0"> No
<p>

<li>¿ Pregunta 16 ? <br>
<input type="radio" name="no16" value="1"> Si
<input type="radio" name="no16" value="0"> No
<p>

<li>¿ Pregunta 17 ? <br>
<input type="radio" name="no17" value="1"> Si
<input type="radio" name="no17" value="0"> No
<p>

<li>¿ Pregunta 18 ? <br>
<input type="radio" name="no18" value="2"> Si
<input type="radio" name="no18" value="0"> No
<p>

<li>¿ Pregunta 19 ? <br>
<input type="radio" name="no19" value="2"> Si
<input type="radio" name="no19" value="0"> No
<p>

<li>¿ Pregunta 20 ? <br>
<input type="radio" name="no20" value="3"> Si
<input type="radio" name="no20" value="0"> No
<p>

<li>¿ Pregunta 21 ? <br>
<input type="radio" name="no21" value="3"> Si
<input type="radio" name="no21" value="0"> No
<p>

<li>¿ Pregunta 22 ? <br>
<input type="radio" name="no22" value="2"> Si
<input type="radio" name="no22" value="0"> No
<p>

<li>¿ Pregunta 23 ? <br>
<input type="radio" name="no23" value="2"> Si
<input type="radio" name="no23" value="0"> No
<p>

.
.
.
.

<input type="submit" value="Aceptar">
<input type="reset" value="Borrar">

</form>
</body>
</html>

mail.php
Cita:
<?php

$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$no1=$_POST['no1'];
$no2=$_POST['no2'];
$no3=$_POST['no3'];
$no4=$_POST['no4'];
$no5=$_POST['no5'];
$no6=$_POST['no6'];
$no7=$_POST['no7'];
$no8=$_POST['no8'];
$no9=$_POST['no9'];
$no10=$_POST['no10'];
$no11=$_POST['no11'];
$no12=$_POST['no12'];
$no13=$_POST['no13'];
$no14=$_POST['no14'];
$no15=$_POST['no15'];
$no16=$_POST['no16'];
$no17=$_POST['no17'];
$no18=$_POST['no18'];
$no19=$_POST['no19'];
$no20=$_POST['no20'];
$no21=$_POST['no21'];
$no22=$_POST['no22'];
$no23=$_POST['no23'];
$no24=$_POST['no24'];
$no25=$_POST['no25'];
$no26=$_POST['no26'];
$no27=$_POST['no27'];
$no28=$_POST['no28'];
$no29=$_POST['no29'];
$no30=$_POST['no30'];
$no31=$_POST['no31'];
$no32=$_POST['no32'];
$no33=$_POST['no33'];
$no34=$_POST['no34'];
$no35=$_POST['no35'];
$no36=$_POST['no36'];
$no37=$_POST['no37'];
$no38=$_POST['no38'];
$no39=$_POST['no39'];
$no40=$_POST['no40'];
$no41=$_POST['no41'];
$no42=$_POST['no42'];
$no43=$_POST['no43'];
$no44=$_POST['no44'];
$no45=$_POST['no45'];
$no46=$_POST['no46'];
$no47=$_POST['no47'];
$no48=$_POST['no48'];
$no49=$_POST['no49'];
$no50=$_POST['no50'];
$no51=$_POST['no51'];
$no52=$_POST['no52'];
$no53=$_POST['no53'];
$no54=$_POST['no54'];
$no55=$_POST['no55'];
$no56=$_POST['no56'];
$no57=$_POST['no57'];
$no58=$_POST['no58'];
$no59=$_POST['no59'];
$no60=$_POST['no60'];
$no61=$_POST['no61'];
$no62=$_POST['no62'];

$total = $no1+$no2+$no3+$no4+$no5+$no6+$no7+$no8+$no9+$no10 +$no11+$no12+$no13+$no14+$no15+$no16+$no17+$no18+$ no19+$no20+$no21+$no22+$no23+$no24+$no25+$no26+$no 27+$no28+$no29+$no30+$no31+$no32+$no33+$no34+$no35 +$no36+$no37+$no38+$no39+$no40+$no41+$no42+$no43+$ no44+$no45+$no46+$no47+$no48+$no49+$no50+$no51+$no 52+$no53+$no54+$no55+$no56+$no57+$no58+$no59+$no60 +$no61+$no62;

$adireccion="[email protected]";
$asunto ="Puntuación del test";
$contenidomail= "Nombre y Apellidos : ".$nombre." ".$apellidos."\n"
."Total de puntuacion : ".$total."\n";
$de="Web layker";

mail ($adireccion, $asunto, $contenidomail, $de);
?>
<html>

<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body bgcolor="#649E9F">
<?php
print "Test finalizado <p>";
print "Su puntuación es de $total<br>";
print "Su resultado es : ";
if ($total <20)
{
print "Poco";
}
elseif ($total <40)
{
print "Normal";
}
elseif($total < 55)
{
print "Bastante";
}
else
{
print "Mucho";
}
?>
<p>
</p>

</body>

</html>
  #2 (permalink)  
Antiguo 28/11/2007, 12:30
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Re: Como hacer un test

bueno puedes hacer esto:

1ro nombras a todos los inputs de la misma manera, esto te permitira pasarlos como un arreglo a php, es decir

<input type="radio" name="no[]" value="3">

luego en php haces esto:

<?php
if (isset($_POST['no']))
{
$no = $_POST['no'];
$n = count($no);
$i = 0;

while ($i < $n)
{
echo "<li>{$no[$i]}</li> rn";
$i++;
}
echo "</ol>";
}
?>

tambien podrias pintar todos esos radio con una funcion en php.

Suerte
  #3 (permalink)  
Antiguo 28/11/2007, 12:50
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Como hacer un test

Cita:
Iniciado por foreverOdd Ver Mensaje
bueno puedes hacer esto:

1ro nombras a todos los inputs de la misma manera, esto te permitira pasarlos como un arreglo a php, es decir

<input type="radio" name="no[]" value="3">

luego en php haces esto:

<?php
if (isset($_POST['no']))
{
$no = $_POST['no'];
$n = count($no);
$i = 0;

while ($i < $n)
{
echo "<li>{$no[$i]}</li> rn";
$i++;
}
echo "</ol>";
}
?>

tambien podrias pintar todos esos radio con una funcion en php.

Suerte
pero si nombro todos los input igual no m fuciona el formulario, xk si eligo otra opcion en la siguiente pregnta se kita la anterior, solo puedo pinchar una
  #4 (permalink)  
Antiguo 28/11/2007, 13:31
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Re: Como hacer un test

JAJAJAJA puesa claro, pase ese detalle por alto, trata esto:

pinta los inputs con un for
Código PHP:
for ($i=0;$i<60;i++){
  
   echo 
"<input type='radio' name='no$i[]' value='1'>SI";
   echo 
"<input type='radio' name='no$i[]' value='1'>NO";

los nombres de tus inputs seran:
name = no0;
name = no0;
name = no1;
name = no1;
name = no2;
name = no2;
...
name = no59;
name = no59;



ahora para recoger los datos harias asi:

Código PHP:


for ($i=0;$i<60;i++){
$input 'no'.$i;

$no[$i] = $_POST[$input];

asi en el arreglo $no te quedan los valores de las respuestas
exito!!
  #5 (permalink)  
Antiguo 28/11/2007, 16:43
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Como hacer un test

gracias, he conseguio reducir muxo el codigo, ahora el problema k tngo es otro, y ske kiero k m llege a mi email una lista con todas las respuestas x ejemplo:
no1 - 1
no2 - 0
no3 - 1 ............
m stoy calentando muxo la cabeza pero no lo consigo,intengo acer un loop for para k me envie la lista pero no m deja, ay alguna forma de acerlo??muxas gracias
Cita:
<?php

$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];

for($x=0;$x<63;$x++)
{
$input = 'no'.$x;
$no[$x]=$_POST[$input];
}

$total = array_sum($no);

$adireccion="[email protected]";
$asunto ="Puntuación del test";
$contenidomail= "Nombre y Apellidos : ".$nombre." ".$apellidos."\n"
."Total de puntuacion : ".$total."\n";

mail ($adireccion, $asunto, $contenidomail);

?>
<html>

<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body bgcolor="#649E9F">
<?php
print "Test finalizado <p>";
print "Su puntuación es de $total<br>";
print "Su resultado es : ";
if ($total <20)
{
print "Poco";
}
elseif ($total <40)
{
print "Normal";
}
elseif($total < 55)
{
print "Bastante";
}
else
{
print "Mucho";
}
?>
<p>
</p>

</body>

</html>
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:10.