Foros del Web » Programando para Internet » PHP »

Estructura de radiobuttom

Estas en el tema de Estructura de radiobuttom en el foro de PHP en Foros del Web. Buenas Tardes a todos. Estos realizando un proyecto acerca de unos examenes y tiene la siguiente tabla id id_test nro_pregunta dsc_pregunta opcion1 opcion2 opcion3 respuesta ...
  #1 (permalink)  
Antiguo 13/07/2007, 11:29
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Estructura de radiobuttom

Buenas Tardes a todos.

Estos realizando un proyecto acerca de unos examenes y tiene la siguiente tabla

id
id_test
nro_pregunta
dsc_pregunta
opcion1
opcion2
opcion3
respuesta

Asi lo tengo almacenada en la tabla ,es decir cada test o examen tiene 20 preguntas, pero el problema como asigno los radiobuttom para que el alumno alumno marque la correcta, es decirt la opcionA o la opcion B o la opcionC, ya que para cada pregunta tengo su respuesta.

Como puedo estructurar los radio button de tal manera que cuando presione sobre un boton pueda evaluar todas las respuestas, y enviar los resultados.

Gracias y saludos a todos

Aqui os pego el codigo

Código HTML:
<form action="" name="frm_preguntas" id="frm_preguntas">
<?
foreach ($listado_pregunta as $key=>$pregu) { 
	  	($key%2==0)?$color="#F5F5F5":$color="#FFFAE8";
?>			
			<table width="600" align="center" cellpadding="0" cellspacing="0" class="tabla_pregunta" bgcolor="<?=$color;?>">
<tr>
					<td scope="col" class="nro_pregunta_test">Pregunta -> <?=$pregu->getNro_pregunta();?></td>
				  </tr>
				  <tr>
				    <td scope="col" class="desc_pregunta"><?=$pregu->getDsc_pregunta();?></td>
				  </tr>
				  <tr>
					<td scope="col"><input name="radiobutton" type="radio" value="radiobutton"> a. <?=$pregu->getOpcionA();?></td>
				  </tr>
				  <tr>
					<td scope="col"><input name="radiobutton" type="radio" value="radiobutton"> b. <?=$pregu->getOpcionB();?></td>
				  </tr>
  				  <tr>
					<td scope="col"><input name="radiobutton" type="radio" value="radiobutton"> c. <?=$pregu->getOpcionC();?></td>
				  </tr>
				</table>			
<?
	} //fin de for
?>
</form> 
  #2 (permalink)  
Antiguo 13/07/2007, 12:43
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Estructura de radiobuttom

Los radiobuttons, al ser enviados, van de esta forma:

$_POST['nombre_del_radiobutton'] = value;

por lo tanto, en cada pregunta los radiobuttons deberan tener el mismo nombre, asi value tomara el valor del radiobutton seleccionado. Para esto, haz algo asi:

Código PHP:
<?php
foreach ($listado_pregunta as $key=>$pregu) { 
         (
$key&#37;2==0)?$color="#F5F5F5":$color="#FFFAE8";
?>            
            <table width="600" align="center" cellpadding="0" cellspacing="0" class="tabla_pregunta" bgcolor="<?=$color;?>">
<tr>
                    <td scope="col" class="nro_pregunta_test">Pregunta -> <?=$pregu->getNro_pregunta();?></td>
                 </tr>
                 <tr>
                 <td scope="col" class="desc_pregunta"><?=$pregu->getDsc_pregunta();?></td>
                 </tr>
                 <tr>
                    <td scope="col"><input name="pregunta<?=$pregu->getNro_pregunta();?>" type="radio" value="a"> a. <?=$pregu->getOpcionA();?></td>
                 </tr>
                 <tr>
                    <td scope="col"><input name="pregunta<?=$pregu->getNro_pregunta();?>" type="radio" value="b"> b. <?=$pregu->getOpcionB();?></td>
                 </tr>
                 <tr>
                    <td scope="col"><input name="pregunta<?=$pregu->getNro_pregunta();?>" type="radio" value="c"> c. <?=$pregu->getOpcionC();?></td>
                 </tr>
                </table>            
<?
    
//fin de for
?>
Asi, te llegara por medio del post algo asi:
$_POST['nro_de_pregunta'] = opcion_seleccionada

Luego, para calificar, haces algo como:

Código PHP:
$numero_de_pregs 20;
$i 1;
while(
$i <= $numero_de_pregs) {
$clave_marcada $_POST['pregunta'.$i];
//Con un if comparas que la clave marcada para la pregunta $i sea 
//la respuesta correcta
$i++;

Espero te sirva,
Un saludo,
  #3 (permalink)  
Antiguo 14/07/2007, 10:26
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: Estructura de radiobuttom

Ok.

La verificacion de las preguntas ya esta realizado gracias a la ayuda del amigo
okram.
Pero otra cosa, como puedo verificar si por ejemplo sin son 20 preguntas y responde 18 y me faltaron responder 2 preguntas (la 7 y la 13) como puedo verificar que al momento de presionar un boton se valla a una rutina de javascript y que me valide las preguntas y si me falta la pegunta 7 que el cursor del mouse se valla a esa pregunta o la pregunta 13.

Es decir que necesariamente tiene que responder las 20 preguntas para verificar su examen.

En otras palabras como puedo recoger las variables a una funcion de javascript ???????


Código HTML:
<form action="???RUTINAPARA VERIFICAR ?????????" name="frm_preguntas" id="frm_preguntas" method="post">
<?
foreach ($listado_pregunta as $key=>$pregu) { 
?>			
	<table width="600" align="center" cellpadding="0" cellspacing="0" class="tabla_pregunta" bgcolor="<?=$color;?>">
		  <tr>
		  <? if($pregu->getImagen()!=''){?>
			<td width="210" height="180" rowspan="5" scope="col"><div align="center"><img src="../Administracion/Archivos/Imagenes_Test/<?=$pregu->getImagen();?>"></div></td>
		  <? }else{?>
			<td width="210" height="180" rowspan="5" scope="col"><div align="center"><img src="../Administracion/Imagenes/pregunta_sin_imagen.jpg"></div></td>
		  <? } ?>
			<td scope="col" class="nro_pregunta_test">Pregunta -> <?=$pregu->getNro_pregunta();?></td>
		  </tr>
		  <tr>
			<td scope="col" class="desc_pregunta"><?=$pregu->getDsc_pregunta();?></td>
		  </tr>
		  <tr>
			<td scope="col"><input name="pregunta<?=$pregu->getNro_pregunta();?>" type="radio" value="A"> a. <?=$pregu->getOpcionA();?></td>
		  </tr>
		  <tr>
			<td scope="col"><input name="pregunta<?=$pregu->getNro_pregunta();?>" type="radio" value="B"> b. <?=$pregu->getOpcionB();?></td>
		  </tr>
		  <? if ($pregu->getOpcionC()!=''){?>
		  <tr>
			<td scope="col"><input name="pregunta<?=$pregu->getNro_pregunta();?>" type="radio" value="C"> c. <?=$pregu->getOpcionC();?></td>
		  </tr>
		  <? } ?>
		</table>			
<?
	} //fin de for
?>
<br />
<center>
	<input type="submit" name="Submit" value="Revisar Test" />
	<input type="hidden" name="oculto_id" value="<?=$valor_id?>" />
</center>
</form> 
Gracias y saludos

Me parece que esto corresponde al TEMA de Javascript, si es asi, que creo que lo es, pues hacer la transferencia a ese TEMA, digo esto para no postear dos veces la misma pregunta(tanto en javascript como en php)
  #4 (permalink)  
Antiguo 14/07/2007, 16:48
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Estructura de radiobuttom

Como tu bien mencionas, este tema es puro javascript. Nisiquera corresponden al mismo tema, por lo que debiste abrir necesariamente un nuevo post en ese foro. Sin embargo, aqui tienes mi solucion

Deberas crear un par de funciones en javascript que haran el trabajo sucio:

Código:
<script>
    function validar() {
        for ( var i = 1; i <= document.Examen.num_preg.value; i++ ) {
            if (!validarBotonRadio(i)) {
                alert("No has terminado la Evaluación. Le falta la pregunta "+i ) ;
                document.Examen["pregunta"+i][0].focus();
                return false;
            }
        }
        alert("Evaluacion Completa. Se procederá a la calificación" ); 
        return true;
    }
 
    function validarBotonRadio(i) {
        x = document.Examen["pregunta"+i];
        for ( k = 0; k < x.length; k++ ) {
            if ( x[k].checked ) {
                return true;
            }
        }
        return false;
    }
</script>
Ten en cuenta que tu formulario debera tener como nombre Examen y deberas añadirle el evento onSubmit=:
Código HTML:
<form name="Examen" onSubmit="return validar()" action="....."> 
Ademas, habra que añadir un campo oculto con nombre num_preg que le indique al script cuantas preguntas son las que tiene que verificar. Si tu examen tiene 20 preguntas, entonces será:
Código HTML:
<input type="hidden" name="num_preg" value="100"> 
Si tienes algun problema sobre este tema, abres un nuevo post en el foro de Javascript (y me pasas el dato por MP para ver si te puedo dar una mano )

Un saludo,
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 23:39.