Foros del Web » Programando para Internet » PHP »

Hacer que el usuario pueda editar el archivo

Estas en el tema de Hacer que el usuario pueda editar el archivo en el foro de PHP en Foros del Web. Hola a todos, bueno, me ofrecí a un usuario de forosdelweb a ayudarle en un problema, el quiere crear un sistema de examenes online, y, ...
  #1 (permalink)  
Antiguo 09/09/2011, 03:26
 
Fecha de Ingreso: septiembre-2011
Mensajes: 38
Antigüedad: 12 años, 7 meses
Puntos: 5
Hacer que el usuario pueda editar el archivo

Hola a todos, bueno, me ofrecí a un usuario de forosdelweb a ayudarle en un problema, el quiere crear un sistema de examenes online, y, yo pensé que eso me ayudaria a aprender y lo estoy haciendo, y tengo el código de los exámenes, con 10 preguntas y 4 respuestas, la respuesta correcta tiene un valor de 20, y la fallida un valor de 1, aunque luego el 20 lo cambio por 10 y el 1 por 0. Bueno, que el script va bien, y funciona a la perfección, pero a mi me gustaria que el profesor, tenga un archivo por ejemplo, agregarexamenes.php y que desde ahi pueda editar las preguntas las respuestas y cual será la respuesta correcta, y tambien si quiere añadir mas preguntas, bueno el código es este:

El html del php:

Código PHP:
<!-- el formulario -->
<
form name="examen" action="prueba.php" method="post">
<
p>Pregunta 1</p>
<
input type="radio" value="1" name="respuesta_1" /> mal<br />
<
input type="radio" value="10" name="respuesta_1" /> bien<br />
<
input type="radio" value="1" name="respuesta_1" /> mal<br />
<
p>Pregunta 2</p>
<
input type="radio" value="1" name="respuesta_2" /> mal<br />
<
input type="radio" value="10" name="respuesta_2" /> bien<br />
<
input type="radio" value="1" name="respuesta_2" /> mal<br />
<
p>Pregunta 3</p>
<
p>
  <
input type="radio" value="1" name="respuesta_3" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_3" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_3" /> 
  
mal</p>
<
p>Pregunta 4</p>
<
p>
  <
input type="radio" value="1" name="respuesta_4" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_4" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_4" /> 
  
mal</p>
  
  <
p>Pregunta 5</p>
<
p>
  <
input type="radio" value="1" name="respuesta_5" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_5" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_5" /> 
  
mal</p>
  
  <
p>Pregunta 6</p>
<
p>
  <
input type="radio" value="1" name="respuesta_6" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_6" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_6" /> 
  
mal</p>
  
  <
p>Pregunta 7</p>
<
p>
  <
input type="radio" value="1" name="respuesta_7" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_7" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_7" /> 
  
mal</p>
  
  <
p>Pregunta 8</p>
<
p>
  <
input type="radio" value="1" name="respuesta_8" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_8" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_8" /> 
  
mal</p>
  
  <
p>Pregunta 9</p>
<
p>
  <
input type="radio" value="1" name="respuesta_9" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_9" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_9" /> 
  
mal</p>
  
  <
p>Pregunta 10</p>
<
p>
  <
input type="radio" value="1" name="respuesta_10" /> 
  
mal<br />
    <
input type="radio" value="10" name="respuesta_10" /> 
  
bien<br />
    <
input type="radio" value="1" name="respuesta_10" /> 
  
mal</p>

<
p><input type="submit" name="evaluar" value="Evaluar" /></p>

</
form

Última edición por lokor712; 09/09/2011 a las 03:50
  #2 (permalink)  
Antiguo 09/09/2011, 03:51
 
Fecha de Ingreso: septiembre-2011
Mensajes: 38
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: Hacer que el usuario pueda editar el archivo

Se me olvidó poner el PHP, lo pongo aquí, ya que no me deja editar el mensaje, me sale una página en ingles super rara :S

El PHP:

Código PHP:
<?php
// como siempre
// comprobamos si ha sido enviado el formulario
if(isset($_POST['evaluar']) && $_POST['evaluar'] == 'Evaluar') {
// y que no llegue vacío
if(!empty($_POST['respuesta_1']) && !empty($_POST['respuesta_2']) && !empty($_POST['respuesta_3'])){
// asignamos los valores a la variables que usaremos
// y sustituimos los 1 por 0, en caso de respuestas incorrectas
$respuesta_1 str_replace(10$_POST['respuesta_1']);
$respuesta_2 str_replace(10$_POST['respuesta_2']);
$respuesta_3 str_replace(10$_POST['respuesta_3']);
$respuesta_4 str_replace(10$_POST['respuesta_4']);
$respuesta_5 str_replace(10$_POST['respuesta_5']);
$respuesta_6 str_replace(10$_POST['respuesta_6']);
$respuesta_7 str_replace(10$_POST['respuesta_7']);
$respuesta_8 str_replace(10$_POST['respuesta_8']);
$respuesta_9 str_replace(10$_POST['respuesta_9']);
$respuesta_10 str_replace(10$_POST['respuesta_10']);
$respuesta_1 str_replace(2010$_POST['respuesta_1']);
$respuesta_2 str_replace(2010$_POST['respuesta_2']);
$respuesta_3 str_replace(2010$_POST['respuesta_3']);
$respuesta_4 str_replace(2010$_POST['respuesta_4']);
$respuesta_5 str_replace(2010$_POST['respuesta_5']);
$respuesta_6 str_replace(2010$_POST['respuesta_6']);
$respuesta_7 str_replace(2010$_POST['respuesta_7']);
$respuesta_8 str_replace(2010$_POST['respuesta_8']);
$respuesta_9 str_replace(2010$_POST['respuesta_9']);
$respuesta_10 str_replace(2010$_POST['respuesta_10']);


// calculamos el promedio
// y redondeamos el resultado (round()) para evitar números decimales
$promedio round(($respuesta_1 $respuesta_2 $respuesta_3 $respuesta_4 $respuesta_5 $respuesta_6 $respuesta_7 $respuesta_8 $respuesta_9 $respuesta_10) / 10);
// usamos la sentencia switch
// para darle la evaluación al examinado
switch ($promedio){
case 
10:
$nota "Usted tiene $promedio puntos, te lo has currado!";
break;
case 
9:
$nota "Usted tiene $promedio puntos, Excelente!";
break;
case 
8:
$nota "Usted tiene $promedio puntos, Notable Alto!";
break;
case 
7:
$nota "Usted tiene $promedio puntos, Notable bajo!";
break;
case 
6:
$nota "Usted tiene $promedio puntos, Bien!";
break;
case 
5:
$nota "Usted tiene $promedio puntos, por los pelos!";
break;
case 
4:
case 
3:
case 
2:
case 
1:
case 
0:
$nota "Usted tiene $promedio puntos, Suspenso, lo esperamos el próximo curso...!";
break;
}
echo 
$nota;
}else{
// mensaje de error en caso que no se respondan todas las preguntas
echo 'Debe responder todas las preguntas, espera 5 segundos y volveras a la pagina anterior automaticamente.
<script type="text/javascript">
function autoBack(){
window.history.back();
}
setTimeout ("autoBack()", 5000);
</script> '
;
}
}
?>
  #3 (permalink)  
Antiguo 09/09/2011, 03:58
Avatar de fjflores  
Fecha de Ingreso: agosto-2011
Ubicación: Cádiz
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Hacer que el usuario pueda editar el archivo

Creo que está mal enfocado.
Si puedes utiliza una base de datos mejor.
Sino puedes utilizar la base de datos una opción sería crear un archivo *.ini donde através de un formulario el profesor guarde las preguntas/respuestas y donde después se parseará para mostrar al alumno. Cuando el alumno conteste se vuelve a parsear el archivo *.ini para comprobar los aciertos.
La estructura del archivo *.ini podría ser algo tipo:
[pregunta_1]
pregunta = blablablablabla
respuesta_1 = resresresres
respuesta_1 = resresresres
respuesta_1 = resresresres
respuesta_1 = resresresres
respuesta_correcta = 1
[pregunta_2]
..............
  #4 (permalink)  
Antiguo 09/09/2011, 04:19
 
Fecha de Ingreso: septiembre-2011
Mensajes: 38
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: Hacer que el usuario pueda editar el archivo

Y como seria la estructura de la BD, algo así??:

tabla: test
id
pregunta_1
respuesta_1
respuesta_1
respuesta_1
respuesta_1
respuesta_correcta1
pregunta_2
respuesta_2
.....
.....

seria algo asi no??

pero como hago que cuando el profesor lo edite el rchivo (si consigo que pueda editarlo xDD) se cree una página nueva con el id del test??
  #5 (permalink)  
Antiguo 09/09/2011, 07:24
Avatar de fjflores  
Fecha de Ingreso: agosto-2011
Ubicación: Cádiz
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 8
Información Respuesta: Hacer que el usuario pueda editar el archivo

La base de datos medianamente normalizada quedaría más o menos así:
Tabla preguntas:
-id
-id_test
-pregunta
-id_respuesta_correcta

Tabla respuestas:
-id
-id_pregunta
-respuesta

De esta forma cuando quieres hacer una pregunta harías más o menos así
- con mysql seleccionas la pregunta con id = 1
Código:
Select * from preguntas where id ='1'
-con mysql selecccionas las respuestas de la pregunta 1:
Código:
Select * from respuestas where id_pregunta = '1'
Y si quieres mostrar las preguntas del test con id 'XX':
Código:
Select * from preguntas where id_test = 'XX'
Cita:
pero como hago que cuando el profesor lo edite el rchivo (si consigo que pueda editarlo xDD) se cree una página nueva con el id del test??
Si lo haces con base de datos tendrías que crear un script para dar de alta los test, otro para dar de alta las preguntas y sus respuestas y al menos otro para borrar/editar los anteriores.
Como ves todo esto es bastante más complejo que tu planteamiento inicial pero te da mucho más juego como infinitos test / preguntas / respuestas, capacidad de edición y todas las cosas que se te ocurran.
Un saludo.
  #6 (permalink)  
Antiguo 09/09/2011, 14:00
 
Fecha de Ingreso: septiembre-2011
Mensajes: 38
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: Hacer que el usuario pueda editar el archivo

Muchas Gracias!! Mañana me pongo a editarlo y aver si me sale algo bueno!!

Un Saludo!!

Etiquetas: formulario, variables, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:52.