Foros del Web » Programando para Internet » PHP »

Validar radiobutton y mantener el seleccionado

Estas en el tema de Validar radiobutton y mantener el seleccionado en el foro de PHP en Foros del Web. Hola. Tengo un formulario que valido de la manera que os expongo a continuación. Para simplificar me centraré en lo que me preocupa, el radiobutton. ...
  #1 (permalink)  
Antiguo 29/10/2011, 12:20
 
Fecha de Ingreso: noviembre-2010
Ubicación: españa
Mensajes: 29
Antigüedad: 14 años
Puntos: 0
Validar radiobutton y mantener el seleccionado

Hola. Tengo un formulario que valido de la manera que os expongo a continuación. Para simplificar me centraré en lo que me preocupa, el radiobutton. Resulta que cuando está vacío, el sistema devuelve el error de que está vacío para solucionarlo. Pero cuando lo mando con una opción seleccionada, en la validación ya no me sale el error evidentemente pero tampoco me sale el radiobutton activado (con el puntito vamos). os dejo aquí el tema:

Código PHP:
//si se ha pulsado el botón enviar
if(isset($_POST['submit'])) 
{
$opciones trim$_POST['opciones'] );

// validamos que se hayan enviado los campos  
   
if (!empty($opciones)) 
   {
     echo 
"Todo está correcto";
    }

//cierre de la aplicación para el caso correcto mediante el último }     
    //vamos ahora con el supuesto de que alguno/s de los campos no hayan sido introducidos correctamente. Los mensajes de error que se mostrarían
   //serían los siguientes
   
else 
   {
   echo 
"<div style=\"background-color: #FFFFFF; border: #746457 1px solid; padding: 6px;\"><span class=\"text1\">Se han detectado los siguientes errores. Por favor, corríjalos y reenvíe la información</span><br><br>"

if(empty(
$opciones)) {
         echo 
"<span class=\"text1\">El campo Registro en Turismo no puede estar vacío</span><br>"
         
$opciones $opciones."\" style=\"background-color: #FFFFF0\"";  
         }
 echo 
"</div><br><br>";
              
//hasta aquí los mensajes de error. Mostramos nuevamente el formulario para que se corrija dichos defectos
    
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" name=\"f1\">";

<
input type="radio"  name="opciones" id="opcion1" value="opcion1" >
<
label>Opción 1 </label>
<
input type="radio"  name="opciones" id="opcion2" value="opcion2" >
<
label>Opción 2 </label>
echo 
"<br><input type=\"submit\" name=\"submit\"  value=\"Enviar\">";
}
//Procedemos a cerrar el supuesto de que haya algún error en la cumplimentación de algún campo
      
}      
    
//cierre de la aplicación para el caso incorrecto de los campos mediante el último }
    //este último } corresponde a al inicial abierto para cuando se pulsaba el botón Enviar
         
         
}        
  
   
///////////SI NO SE HA PULSADO EL BOTÓN ENVIAR///////////////////////////////////////////////////////    
    //si no se ha pulsado el botón enviar, en este caso se muestra el formulario con todos los campos
    
if(!isset($_POST['submit'])) 
    {
    echo 
"<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" name=\"f1\">";
<
input type="radio"  name="opciones" id="opcion1" value="opcion1" >
<
label>Opción 1 </label>
<
input type="radio"  name="opciones" id="opcion2" value="opcion2" >
<
label>Opción 2 </label>
";
    echo "
<br><input type="submit\" name=\"submit\" value=\"Siguiente\">";
         }
        } 
Pues eso, al ir todo correcto, no me recoge el radiobutton que he seleccionado previamente. no me da el error de que está vacío, porque obviamente no lo está, me no me marca cuál es el que está señalado. Alguna idea¿?
  #2 (permalink)  
Antiguo 29/10/2011, 12:26
Avatar de lohenzoo  
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad Juarez, Chihuahua
Mensajes: 26
Antigüedad: 13 años, 2 meses
Puntos: 5
Respuesta: Validar radiobutton y mantener el seleccionado

tienes que ponerle el atributo checked al radio buton que quieres que cargue seleccionado, ejemplo:
Código HTML:
<input type="radio"  name="opciones" id="opcion1" value="opcion1" checked > 
  #3 (permalink)  
Antiguo 29/10/2011, 19:51
Avatar de leonardomontilla  
Fecha de Ingreso: octubre-2011
Ubicación: Caracas
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: Validar radiobutton y mantener el seleccionado

Las casillas de verificación (checkbox) y los botones de radio (radio) son enviados por el formulario únicamente si son activados (atributo checked) Esto significa que PHP no recibirá la variable correspondiente al campo si éste no es seleccionado

Ejemplo (con casilla)
...
<input type="checkbox" name="casilla" value="1" /> Una casilla
...

Nota que el campo anterior no tiene el atributo "checked" por lo que no está seleccionado de manera predeterminada. Si el usuario no lo selecciona, no PHP no recibirá la varible $_POST['casilla'] (o $_GET['casilla'], según el caso) y por consiguiente la siguiente sentencia dará error:

if($_POST['casilla'] == '1') {
// esto da error pues $_POST['casilla'] no está definida
}

La manera de comprobar este tipo de campos es con isset():

if( isset($_POST['casilla']) ) {
// el campo 'casilla' fue seleccionado
} else {
// el campo 'casilla' no fue seleccionado
}

También puedes usar el operador ternario (mi favorito para este tipo de casos)

$casilla = isset($_POST['casilla']) ? $_POST['casilla'] : '0';

Lo mismo con los radiobuttons...

Espero te halla servido
  #4 (permalink)  
Antiguo 30/10/2011, 00:31
 
Fecha de Ingreso: noviembre-2010
Ubicación: españa
Mensajes: 29
Antigüedad: 14 años
Puntos: 0
Respuesta: Validar radiobutton y mantener el seleccionado

creo que no me he explicado bien. Si ponemos al radiobutton el atributo checked, tenemos que por defecto saldrá marcado ya y yo lo que tengo son dos opciones, en las que el visitante deberá seleccionar una de ellas. Al enviar el formulario, se validarán que todos los campos estén cumplimentados pero si le ponemos de antemano el atributo checked no seleccionará el que previamente ha elegido el usuario si no aquel que tenga este atributo marcado.

no sé si me he explicado

Etiquetas: radiobutton
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:08.