Foros del Web » Programando para Internet » PHP »

Problema con variables POST de formulario

Estas en el tema de Problema con variables POST de formulario en el foro de PHP en Foros del Web. Buenas, el problema que tengo es que en un formulario quiero que ciertos campos esten completados y sino no permito que me envien el mail. ...
  #1 (permalink)  
Antiguo 07/03/2005, 07:06
 
Fecha de Ingreso: junio-2003
Mensajes: 16
Antigüedad: 20 años, 10 meses
Puntos: 0
Problema con variables POST de formulario

Buenas, el problema que tengo es que en un formulario quiero que ciertos campos esten completados y sino no permito que me envien el mail.

El problema viene cuando cargo de nuevo el formulario para que rellenen los campos necesarios correctamente y no se como hacer que la informacion que hubiese metido antes se mantenga y que no me aparezca el formulario nuevamente vacio.

Lo he intentado cargando en el "value" a traves de las variables POST pero estas no se envian, o almenos todas me dicen que no estan definidas.

Lo que hago para cada elemento del formulario es lo siguiente:

<td><input name="Nombre" type="text" value="<?if (isset($HTTP_POST_VARS['Nombre'])){echo "$HTTP_POST_VARS[Nombre]";}?>" size="30" maxlength="20"></td>

Alguien tiene alguna sugerencia o me dice como se puede hacer.

Gracias
  #2 (permalink)  
Antiguo 07/03/2005, 07:13
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
En el script que compara las variables y envia el email podes hacer que si la variable $_POST['nombre_varaible] esta vacia haga un:
echo '
Error, volviendo al paso anterior...
<META HTTP-EQUIV="Refresh" content = "3; URL=javascript:history.back()">
';

Eso hara que vuelva a la pagina anterior con las campos totalmente iguales a como los dejo (ecepto campos password).

Otra forma sería que en los campos del formulario no uses la variable POST sino GET y enviar, en el script, un header con las variables...


FORM:
<td><input name="Nombre" type="text" value="<?=$_GET['nombre']?>" size="30" maxlength="20"></td>

y en el script:

header("Location: http://www.tudominio.com.ar/formulario.php?nombre=$_POST['nombre']&mail=$_POST['mail']&otra_cosa=$_POST['otra_cosa']");

Espero sirva...
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 07/03/2005, 07:32
Avatar de Niconirva  
Fecha de Ingreso: marzo-2005
Mensajes: 119
Antigüedad: 19 años, 1 mes
Puntos: 0
A ver...

raulete.., si no usas la opción de Fulano del javascript (es buena y anda bien) debes usar en tu formulario campos dinámicos.., son campos que tienen como valor inicial, el valor de una variable. Y de esta manera, si la variable tiene un valor asociado, este campo del form se rellena con ese valor y si esta vacía no aparece nada.
Aquí te doy un ejemplo para que veas a que me refiero, te doy el codigo fuente de un form dinámico.

Código:
<form name="form1" method="post" action="capt.php">
<div align="center">
<table width="96%" border="0" cellpadding="0" cellspacing="0">
<tr> 
<td colspan="2"><div align="center"><strong><font face="Verdana">Campos 
de Formularios dinamicos:</font></strong></div></td>
</tr>
<tr> 
<td width="45%"><div align="right">Nombre:</div></td>
<td width="55%"><input name="nombre" type="text" id="nombre" value="<?php echo $nombre ?>"></td>
</tr>
<tr> 
<td><div align="right">Edad:</div></td>
<td><input name="edad" type="text" id="edad" value="<?php echo $edad ?>"></td>
</tr>
<tr> 
<td height="26"> <div align="right">Ciudad:</div></td>
<td><input name="ciudad" type="text" id="ciudad" value="<?php echo $ciudad ?>"></td>
</tr>
<tr> 
<td height="23"> <div align="right">Sexo:</div></td>
<td><p> 
<label></label>
<label> 
<input <?php if (!(strcmp($sexo,"hombre"))) {echo "CHECKED";} ?> type="radio" name="sexo" value="hombre">
Masculino</label>
<label> 
<input <?php if (!(strcmp($sexo,"Mujer"))) {echo "CHECKED";} ?> type="radio" name="sexo" value="Mujer">
Femenino</label>
</p></td>
</tr>
<tr> 
<td><div align="right">Pa&iacute;s donde vive:</div></td>
<td><select name="pais" id="pais">
<option value="Argentina" <?php if (!(strcmp("Argentina", $pais))) {echo "SELECTED";} ?>>Argentina</option>
<option value="Uruguay" <?php if (!(strcmp("Uruguay", $pais))) {echo "SELECTED";} ?>>Uruguay</option>
<option value="Italia" <?php if (!(strcmp("Italia", $pais))) {echo "SELECTED";} ?>>Italia</option>
</select></td>
</tr>
<tr> 
<td colspan="2"><div align="center">
<input name="enviar" type="submit" id="enviar" value="Enviar">
</div></td>
</tr>
</table>
</div>
<div align="center">
</form>
Pegalo en una página .php usando el dreamweaver, que interpreta muy bien los campos dinámicos, es solo una página de ejemplo para que entiendas la idea.
Es, obviamente para php, el archivo que captura las variables POST se llama "capt.php", este archivo haria la verificación de los campos (para ver si estan vacios o no), y en caso que sucediera que alguno este vacío, para no perder las variables debes devolverselas a la pagina original donde esta tu form, y tienes dos opciones:

1) De manera directa, cuando capt.php muestre el error cometido hacer un include a la página del form y de esta manera no pierdes nada.
2) Usar variables GET para volver al form original y no perder nada. (debes tener en cuenta que el form, ahora debera capturar esas variables GET).

Cualquier consulta, ya sabes!,
__________________
"Quien no peca contra la ciencia no descubre nada"
Albert Einstein
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 12:27.