Foros del Web » Programando para Internet » PHP »

Mostrando datos ya ingresados después de un submit en radiobuttons y checkboxes

Estas en el tema de Mostrando datos ya ingresados después de un submit en radiobuttons y checkboxes en el foro de PHP en Foros del Web. Saludos al foro: Estoy realizando un formulario de contacto utilizando una clase específica para enviar emails desde ahí. Éste valida que los campos contengan la ...
  #1 (permalink)  
Antiguo 12/10/2005, 10:39
Avatar de disenopop  
Fecha de Ingreso: septiembre-2005
Mensajes: 10
Antigüedad: 19 años, 1 mes
Puntos: 0
Exclamación Mostrando datos ya ingresados después de un submit en radiobuttons y checkboxes

Saludos al foro:

Estoy realizando un formulario de contacto utilizando una clase específica para enviar emails desde ahí. Éste valida que los campos contengan la información necesaria, y cuando se da "Enviar" (submit), realiza la validación nevesaria.

Cuando el usuario ha ingresado datos en los textfields y da "Enviar", si algun dato falta, muestra la alerta, y los datos ya ingresados en los textfields se siguen mostrando (por medio de un "echo"); P E R O no puedo lograr que los valores ingresados en los radiobuttons se conserven (ya que no se como indicar un "echo" o algo parecido para este tipo de inputs).

Alguien tiene algun tip?...

Aquí el código:
Código:
<html><head><title>Formulario de contacto</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<?
if($enviar=="Enviar"){
//VERIFICAR CAMPOS
	if((isset($_POST['nombre']))&&(($_POST['nombre'])=="")){
		echo "<p style='color:#FF0000;'><b>Ingrese su Nombre</b></p>"; 
	}else if ((isset($_POST['email']))&&(($_POST['email'])=="")){
		echo "<p style='color:#FF0000;'><b>Ingrese su E-Mail</b></p>"; 
	}else if (empty($_POST['servicio'])){
		echo "<p style='color:#FF0000;'><b>Especifique Servicio</b></p>"; 
	}else{
		require "includes/class.phpmailer.php";
		$mail = new phpmailer();
		$mail->PluginDir = "includes/";
	    $mail->ContentType = "text/html";
		$mail->Mailer = "smtp";
		$mail->Host = "mail.mydominio.net";
		$mail->SMTPAuth = false;
		$mail->From = "$email";
		$mail->FromName = "$nombre";
		$mail->Timeout=50;
		$mail->AddAddress("[email protected]");
		$mail->Subject = "Nuevo Mensaje";
		$mail->Body = "
		<div style='padding:30px;'><h3>Nuevo mensaje</h3>
		<p><b>Nombre:</b> $nombre</p>
		<p><b>E-mail:</b> $email</p>
		<p><b>Servicios:</b> $servicio</p>
		</div>
		";
		$exito = $mail->Send();		
		if(!$exito){
			echo "<br>".$mail->ErrorInfo;	
   		} else {
			$bandera = "true";
   		} 
	}
}	
if($bandera=="true"){
	echo "<h3>Su mensaje ha sido enviado</h3>";
}
else{
?>
<fieldset style="width:300px;"><legend>Formulario de contacto</legend><form name="form1" method="post" action="">
<table width=300 border=0 cellspacing=0 cellpadding=5>
  <tr>
    <td align=right><label>Nombre: </label></td>
    <td><input type="text" name="nombre" value="<? echo $nombre ?>"></td>
  </tr>
  <tr>
    <td align=right><label>E-mail: </label></td>
    <td><input type="text" name="email" value="<? echo $email ?>"></td>
  </tr>
  <tr>
    <td align=right>Servicios:</td>
    <td>
	<div style="display:block;"><input name="servicio" type="radio" value="servicio1"><label>Servicio 1</label></div>
	<div style="display:block;"><input name="servicio" type="radio" value="servicio2"><label>Servicio 2</label></div>
	<div style="display:block;"><input name="servicio" type="radio" value="servicio3"><label>Servicio 3</label></div>
	<div style="display:block;"><input name="servicio" type="radio" value="servicio4"><label>Servicio 4</label></div>
	</td>
  </tr>
  <tr>
    <td align=right>&nbsp;</td>
    <td><input type="submit" name="enviar" value="Enviar"></td>
  </tr>
</table>
</form></fieldset>
<? } ?>
</body></html>
  #2 (permalink)  
Antiguo 12/10/2005, 11:23
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 8 meses
Puntos: 1
Cuando valides si los datos estan bien el codigo sería algo así:

Código PHP:
if (isset($enviar)) {
    switch (
$servicio) {
        case 
"servicio1" :
                             echo 
"<input name=\"servicio\" type=\"radio\" value=\"servicio1\" checked=\"true\">";
                             break;
        
    }

De esta forma solo te mostraria un radio button activo, si quieres que aparezcan lo demas tendrias que mandar a pantalla lo mismo que esta en el echo pero sin la opcion checked=true del html, esto para cada opcion radiobutton que tengas, espero me haya explicado
__________________
¿Que importa el resto?, el resto es simplemente la humanidad, hay que ser superior a humanidad, por fuerza, por altura de alma, por desprecio ...
  #3 (permalink)  
Antiguo 12/10/2005, 11:36
Avatar de disenopop  
Fecha de Ingreso: septiembre-2005
Mensajes: 10
Antigüedad: 19 años, 1 mes
Puntos: 0
Ok, thnks!!

Dejame hacer el test...

  #4 (permalink)  
Antiguo 12/10/2005, 13:30
Avatar de disenopop  
Fecha de Ingreso: septiembre-2005
Mensajes: 10
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta

Ok...

Realicé algunas pruebas sin éxito...

He implementado algo que efectivamente muestra el radiobutton seleccionado después de dar submit, pero siempre se muestra el último (supongo que es alguna cuestión con los if...else if)

Se puede ver el formulario funcionando en
http://demos.intermexico.net/mhv/form.htm

aqui la muestra del código:

Código PHP:
<html><head><title>Formulario de contacto</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<?
if($enviar=="Enviar"){
//VERIFICAR CAMPOS
    
if((isset($_POST['nombre']))&&(($_POST['nombre'])=="")){
        echo 
"<p style='color:#FF0000;'><b>Ingrese su Nombre</b></p>"
    }else if ((isset(
$_POST['email']))&&(($_POST['email'])=="")){
        echo 
"<p style='color:#FF0000;'><b>Ingrese su E-Mail</b></p>"
    }else if (empty(
$_POST['servicio'])){
        echo 
"<p style='color:#FF0000;'><b>Especifique Servicio</b></p>";
    }else{
        require 
"includes/class.phpmailer.php";
        
$mail = new phpmailer();
        
$mail->PluginDir "includes/";
        
$mail->ContentType "text/html";
        
$mail->Mailer "smtp";
        
$mail->Host "mail.mydominio.net";
        
$mail->SMTPAuth false;
        
$mail->From "$email";
        
$mail->FromName "$nombre";
        
$mail->Timeout=50;
        
$mail->AddAddress("[email protected]");
        
$mail->Subject "Nuevo Mensaje";
        
$mail->Body "
        <div style='padding:30px;'><h3>Nuevo mensaje</h3>
        <p><b>Nombre:</b> $nombre</p>
        <p><b>E-mail:</b> $email</p>
        <p><b>Servicios:</b> $servicio</p>
        </div>
        "
;
        
$exito $mail->Send();        
        if(!
$exito){
            echo 
"<br>".$mail->ErrorInfo;    
           } else {
            
$bandera "true";
           } 
    }
}
if(
$bandera=="true"){
    echo 
"<h3>Su mensaje ha sido enviado</h3>";
}
else{
?>
<fieldset style="width:300px;"><legend>Formulario de contacto</legend><form name="form1" method="post" action="">
<table width=300 border=0 cellspacing=0 cellpadding=5>
  <tr>
    <td align=right><label>Nombre: </label></td>
    <td><input type="text" name="nombre" value="<? echo $nombre ?>"></td>
  </tr>
  <tr>
    <td align=right><label>E-mail: </label></td>
    <td><input type="text" name="email" value="<? echo $email ?>"></td>
  </tr>
  <tr>
    <td align=right>Servicios:</td>
    <td>
    <?
// Aqui la parte implementada
    
if (empty($_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio1'>";
    }else if(isset(
$_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio1' checked>";
    }
    
?>
    <label>Servicio 1</label><br>
    <?
// Aqui la parte implementada
    
if (empty($_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio2'>";
    }else if(isset(
$_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio2' checked>";
    }
    
?>
    <label>Servicio 2</label><br>
    <?
// Aqui la parte implementada
    
if (empty($_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio3'>";
    }else if(isset(
$_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio3' checked>";
    }
    
?>
    <label>Servicio 3</label><br>
    <?
// Aqui la parte implementada
    
if (empty($_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio4'>";
    }else if(isset(
$_POST['servicio'])){
        echo 
"<input name='servicio' type='radio' value='servicio4' checked>";
    }
    
?>
    <label>Servicio 4</label>
    </td>
  </tr>
  <tr>
    <td align=right>&nbsp;</td>
    <td><input type="submit" name="enviar" value="Enviar"></td>
  </tr>
</table>
</form></fieldset>
<? ?>
</body></html>
Alguna sugerencia please?...
  #5 (permalink)  
Antiguo 12/10/2005, 16:27
Avatar de disenopop  
Fecha de Ingreso: septiembre-2005
Mensajes: 10
Antigüedad: 19 años, 1 mes
Puntos: 0
Imagino que esto tambien se puede solucionar por JavaScript, alguien tiene alguna sugerencia o algún link? Por favor...

Gracias de antemano :)
  #6 (permalink)  
Antiguo 12/10/2005, 17:52
Avatar de disenopop  
Fecha de Ingreso: septiembre-2005
Mensajes: 10
Antigüedad: 19 años, 1 mes
Puntos: 0
Asunto resuelto

Resumiendo:

Si estan desarrollando formularios donde se validan campos de texto, selects, radio buttons y checkboxes por medio de PHP, yo tuve el problema de que a la hora que se daba "submit" y algún campo requerido estaba vacio, los radios, checkboxes y opciones de select seleccionados con anterioridad se borraban. No así los campos de texto, ya que incluí un "echo" como valor para volver a mostrar el valor introducido.

Para no perder los valores de estos radio, cheks y opciones de select en cada submit, se puede lograr con JavaScript, pero una opción en PHP que me encontra por ahí es muy rentable y funciona de maravilla. La pueden ver en su fuente original:

http://www.webestilo.com/php/articulo.phtml?art=48

Donde usando las funciones que ahí muestran, permite establecer un "echo" en este tipo de inputs problematicos y no perder la información generada por el usuario...

Gracias por las colaboraciones de todos modos...

Happy coding!!!
  #7 (permalink)  
Antiguo 16/05/2012, 16:48
 
Fecha de Ingreso: abril-2012
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Mostrando datos ya ingresados después de un submit en radiobuttons y check

alguién sabe como hacerlo en un jsp? yo tengo mi formulario con 2 radio button, selecciono un radio button, y le doy click a un boton donde le puse el evento onclick="validar()", esta funcion validar() esta en las etiquetas de javascript y lo que quiero hacer en la funcion es validar si se escogio o no un radio button, si no se escogio muestre un alert("falto seleccionar el radio button); si se escogio necesito obtener el radio button seleccionado y enviarlo a mi form con la siguiente instrucción form.submit();
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 22:39.