Foros del Web » Programando para Internet » PHP »

Formulario - HTTP_POST_VARS

Estas en el tema de Formulario - HTTP_POST_VARS en el foro de PHP en Foros del Web. Hola a todos, mi consulta es la siguiente, tengo que realizar una encuesta, y la hice en un solo formulario, que al hacer click en ...
  #1 (permalink)  
Antiguo 04/05/2006, 09:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
Formulario - HTTP_POST_VARS

Hola a todos, mi consulta es la siguiente, tengo que realizar una encuesta, y la hice en
un solo formulario, que al hacer click en enviar se envie por mail, y me muestre
un echo "gracias por enviarnos.....",

No me muestra ningun error, pero directamente al hacer click en Enviar, no hace nada
la pagina se recarga pero no envia el mail, ni me muestra el mensaje de Gracias

esta mal el !isset($HTTP_POST_VARS) es por ese lado el error???

adjunto el codigo....

Gracias...




<?php BEGIN__VBULLETIN__CODE__SNIPPET

<html>
<head>
<title>Formulario Climatológico</title>
</head>

<body>



<?

if (!isset($HTTP_POST_VARS)){

?>



<form name="form1" method="post" >

<table width='100' border='0' cellpadding='10' cellspacing='0' >

<tr>
<td class="tdtitulo">Encuesta Climatológica</td>
</tr>

<tr>
<td>&nbsp;</td>
</tr>

<tr>
<td class="bar3"><img src="gifs/boton12.gif" width="12" height="12">
<strong><font color="#000099">MAPAS NORMALES</font></strong></td>
</tr>

<tr>
<td>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#DFFFDF">


<tr>
<td colspan='4'>&nbsp;</td>
</tr>

<tr>
<td colspan='4'>El SMN ofrece mapas de temperaturas medias, máximas medias, mínimas medias y absolutas y de precipitación mensual, estacional y anual. </td>
</tr>

<tr>
<td colspan='4'>&nbsp;</td>
</tr>

<tr class="bar2">
<td height="20" colspan="4" >¿Cuál de estas otras variables le interesaría
conocer?</td>
</tr>

<tr>
<td colspan='4'>&nbsp;</td>
</tr>


<tr>
<td width="53%" height="20"> <input name='checkbox1' type='checkbox' value='select' >
Humedad relativa media</td>
<td width="47%" height="20"> <input type='checkbox' name='checkbox2' value='select'>
N&uacute;mero de d&iacute;as con niebla</td>
</tr>
<tr>
<td height="20"> <input type='checkbox' name='checkbox3' value='select'>
N&uacute;mero de d&iacute;as con precipitaci&oacute;n</td>
<td height="20"> <input type='checkbox' name='checkbox4' value='select'>
N&uacute;mero de d&iacute;as con cielo cubierto</td>
</tr>

<tr>
<td colspan='4'>&nbsp;</td>
</tr>

</table>


<table width='555' border='0' align='center' cellpadding='0' cellspacing='0' bordercolor='#CCCCCC'>
<tr>
<td>&nbsp;</td>
</tr>

<tr>
<td height="20" class="bar3"><img src="gifs/boton12.gif" width="12" height="12">
<strong><font color="#000099">TENDENCIA CLIMATICA</font></strong></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>

<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0' bgcolor="#DFFFDF">
<tr class="bar2">

<td height="20" colspan="4" >1- &iquest;Consulta
las perspectivas clim&aacute;ticas trimestrales del SMN?</td>
</tr>

<tr>
<td colspan='4'>&nbsp;</td>
</tr>

<tr>
<td width="38%" height="20"> <input type="radio" name="option1" value="select" checked>
S&iacute;</td>
</tr>
<tr>
<td width="38%" height="20"> <input type="radio" name="option1" value="select1">
No</td>
</tr>

<tr>
<td colspan="4">&nbsp;</td>
</tr>

<tr>
<td colspan="4">&nbsp;</td>
</tr>


<tr>
<td colspan="4">• <strong>Comentarios o sugerencias para el
&aacute;rea de climatolog&iacute;a del SMN:</strong></td>
</tr>


<tr>
<td height="24" colspan="4">&nbsp;</td>
</tr>

<tr>
<td colspan='4'><textarea name='texto2' rows='4' id='texto2' style='COLOR: black; FONT-SIZE: 9pt; WIDTH: 500px'></textarea></td>
</tr>

<tr>
<td height="24" colspan="4">&nbsp;</td>
</tr>





<tr>
<td colspan="4" align="right"> <input type='reset' value='Borrar' name='borrar'>


<input type='submit' value='Enviar' name='Submit' onClick="javascript:form1.submit()" >
</td>
</tr>

<tr>
<td colspan='4'>&nbsp;</td>
</tr>


<tr>
<td colspan="4">&nbsp;</td>
</tr>


</table>

</td>
</tr>
</table>
</form>



<?
}else{

$checkbox1 = $HTTP_POST_VARS["checkbox1"] . "\n";
$checkbox2 = $HTTP_POST_VARS["checkbox2"] . "\n";
$checkbox3 = $HTTP_POST_VARS["checkbox3"] . "\n";
$checkbox4 = $HTTP_POST_VARS["checkbox4"] . "\n";


if ($checkbox1 == 'select')
{
$humedadrelativa ="HUMEDAD RELATIVA,";
}

if ($checkbox2 == 'select')
{
$diasconniebla ="NUMERO DE DIAS CON NIEBLA,";
}







//---------------------------------MANDA MAIL ---------------------------------------------

$mensaje = "


<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td>&nbsp;</td>
</tr>


<tr>
<td><hr></td>
</tr>

<tr>
<td ><div align='center'><font size='3'><strong>MAPAS NORMALES - TENDENCIAS CLIMATICAS</strong></font></td>
</tr>

<tr>
<td><hr></td>
</tr>

<tr>
<td>&nbsp;</td>
</tr>

<tr>
<td> <p align=center><b><font size=3>Respuestas a la encuesta climatológica</font></b></td>
</tr>

<TR>
<TD>&nbsp;
</TD>
</TR>

<TR>
<TD><strong>MAPAS NORMALES</strong> </TD>
</TR>

<tr>
<td height='31'> <p>Las variables que me interesan conocer son: <strong>$humedadrelativa $diasconniebla $diasconpreci $diasconcielocubi</strong></p>
</td>
</tr>

<tr>
<td>&nbsp;
</td>
</tr>


<tr>
<td>8. Yo consulto <strong>$solomapa $boletincompleto $ambos</strong></td>
</tr>

<tr>
<td>&nbsp;
</td>
</tr>";

if ($texto2 != "")
{
$mensaje .="<tr>
<td> Comentarios o Sugerencias: <br><br> <strong>$texto2</strong></td>
</tr>";

}

$mensaje .="<tr>
<td>&nbsp;
</td>
</tr>

</TABLE>";


$receptor = "[email protected]";
//$receptor = "$texto_mail";
$asunto = " Respuestas de Encuesta Climatológica ";

$cabeceras = "MIME-Version: 1.0\r\n";
$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
$cabeceras .= "From: Usuario de Climatología <[email protected]>\r\n";
$cabeceras .= "Reply-To: Usuario de Climatología <[email protected]>\r\n";

mail($receptor, $asunto, $mensaje, $cabeceras);


//das las gracias por el envío
echo "::::Grandioso! Hemos recibido los datos, pronto le responderemos con los detalles, gracias\n ";

}

?>

</body>
</html>



pd: el codigo lo corte un poco por la cantidad de caracteres...
  #2 (permalink)  
Antiguo 04/05/2006, 09:35
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
1) Yo te sugiero que cambies $HTTP_POST_VARS por $_POST...
2) En el archivo php en donde recibes la información no se observa que estes cachando dicha información es decir $_POST["texto2"];
3) ¿Tienes SMTP para el envio de correos?
  #3 (permalink)  
Antiguo 04/05/2006, 09:49
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
Mauled, gracias por responder...

1. he cambiado el $HTTP_POST_VARS por $_POST...

2. cuando hago el else donde se recibe la informacion si $HTTP_POST_VARS no esta definida, tomo los valores asi

}else{

$checkbox1 = $_POST["checkbox1"] . "\n";
$checkbox2 = $_POST["checkbox2"] . "\n";
$checkbox3 = $_POST["checkbox3"] . "\n";
$checkbox4 = $_POST["checkbox4"] . "\n";

3. Si, tengo SMTP


el error que me tira es este

Notice: Undefined index: checkbox1 in /var/www/htdocs/clima/encu.php on line 536

Notice: Undefined index: checkbox2 in /var/www/htdocs/clima/encu.php on line 538

Notice: Undefined index: checkbox3 in /var/www/htdocs/clima/encu.php on line 539


pregunta

1.tiene algo que ver que este todo en un solo formulario??
2. La mayoria del formualrio esta echo con botones checkbox y radio, y el nombre de estos los pongo con comillas simples, inlfuye en algo eso???


gracias...
  #4 (permalink)  
Antiguo 04/05/2006, 10:06
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
De acuerdo

Me llama la atención lo siguiente
Código HTML:
<form name="form1" method="post" > 
No tendria que ser
Código HTML:
<form name="form1.php" method="post"> 
Es decir te faltaria la extensión del archivo.
  #5 (permalink)  
Antiguo 04/05/2006, 10:07
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Quiza el error sea porque esos checkbox no fueron seleccionados, por la tanto no se enviaron (solo se envia el valor de los checkbox seleccionados). Antes de realizar esas asignaciones podrias verificar que la variable exista:

Código PHP:
<?
if (isset($_POST["checkbox1"]) {
   
$checkbox1 $_POST["checkbox1"] . "\n"
   }
....
?>
Saludos.
  #6 (permalink)  
Antiguo 04/05/2006, 10:10
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Cita:
Iniciado por mauled
Me llama la atención lo siguiente
Código HTML:
<form name="form1" method="post" > 
No tendria que ser
Código HTML:
<form name="form1.php" method="post"> 
Es decir te faltaria la extensión del archivo.
La propiedad name de la etiqueta form es para darle nombre al formulario, no para indicar a que script deben enviarse los datos. Para eso se usa la propiedad "action". Como en este caso esta propiedad no esta definida, el formulario envia los datos a la misma página donde esta definido.
Saludos.
  #7 (permalink)  
Antiguo 04/05/2006, 10:21
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
Perdon.. je
  #8 (permalink)  
Antiguo 04/05/2006, 10:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
formulario - HTTP_POST_VARS

Haber vayamos por partes,

Lo mofique asi pero tampoco, el formulario envia los datos a la misma pagina, no pongo action.... por lo tanto queda asi...


<?
if (!isset($_POST["QUE VARIABLE IRIA ACA ?? "])){

?>

<form name="form1" method="post" >


y el submit asi :

<input type='submit' value='Enviar' name='Submit' onClick="javascript:form1.submit()" >


hasta ahi ok??

tambien modifique

if (isset($_POST["checkbox1"])) {

$checkbox1 = $_POST["checkbox1"] . "\n";
}


pero sigo en lo mismo, al hacer click en enviar vuelve a recargar el fomulario pero no envia nada....
  #9 (permalink)  
Antiguo 04/05/2006, 10:34
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
mmm prueba lo siguiente

Código PHP:
<?php
if(mail($receptor$asunto$mensaje$cabeceras))
  echo 
"Envio exitoso";
else
   echo 
"Error en el envio";
?>
  #10 (permalink)  
Antiguo 04/05/2006, 10:46
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
formulario - HTTP_POST_VARS

creo que encontre el error, el mail lo envia, pero sin valores.....

como decia notwen, cambie esto

if (isset($_POST["checkbox1"]))
{

$checkbox1 = $_POST["checkbox1"] . "\n";

}

y funciona no me tira error,

pero yo luego pongo esto

if ($checkbox1 == 'select')
{
$humedadrelativa ="HUMEDAD RELATIVA,";
}

y me surge el siguiente error:

Notice: Undefined variable: humedadrelativa in /var/www/htdocs/clima/encu.php on line 837


el select, es el value que le doy al checkbox1.....
  #11 (permalink)  
Antiguo 04/05/2006, 10:51
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
¿Pero ese checkbox (checkbox1) esta seleccionado cuando envias el formulario? Recorda que su valor no se envia si no se selecciona.
Saludos.
  #12 (permalink)  
Antiguo 04/05/2006, 11:00
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
y por eso pongo este if

if ($checkbox1 == 'select')
{
$humedadrelativa ="HUMEDAD RELATIVA,";
}


si fue seleccionado, guarde en la variable $humedadrelativa el string "HUMEDAD RELATIVA",
y sino no tome el valor...

se entiende???
  #13 (permalink)  
Antiguo 04/05/2006, 11:11
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Es que si el checkbox1 no fue seleccionado, directamente no va a existir una variables tal como $_POST['checkbox1']. Para eso sirve la funcion isset(), para saber si una variable existe. En tu caso, si el checkbox1 esta seleccionada asignas a $humedadrelativa el string "HUMEDAD RELATIVA,", ¿no?. Entonces deberias verificar que $_POST['checkbox1'] exista y luego sí asignar ese valor a $humedadrelativa:

Código PHP:
<?
if (isset($_POST["checkbox1"])) 

$humedadrelativa ="HUMEDAD RELATIVA,";
}
else {
$humedadrelativa "otro valor";
}
?>
Espero que se entienda.
Saludos.
  #14 (permalink)  
Antiguo 04/05/2006, 12:11
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
Formulario - HTTP_POST_VARS

ok. eso lo entiendo

pero que significa estas lineas

if (!isset($_POST)){ //que post exista??

if (!isset($_POST["form1"])){ //que la variable form1 exista???

supongamos que es la 1er vez que ejecuto el php....me tendria que mostrar el fomulario no???
  #15 (permalink)  
Antiguo 04/05/2006, 12:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
$_POST es un "array" .. como variable en general que es .. puedes ver si "existe" o no usando la función isset() (la cual devuelve un "true" o "false" exista o no).

En consecuencia .. si $_POST no existe .. tampoco existirá un "indice" de ese array ($_POST['nose']) .. En algunos casos te interesa validar en un script si "recibió datos por el método "POST" por ejemplo .. pero lo más normal es ir directamente a "validar" si tal o cual "variable" existe o no . .o cumple tu patron dado de validación, o rangos o lo que corresponda.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 04/05/2006, 12:27
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
La funcion isset() verifica que una variable exista. Para saber si no hay datos pasados por POST se utiliza if (!isset($_POST)).
El caso de if (!isset($_POST["form1"])) indica si el array $_POST contiene un elemento cuyo índice es form1. Si con eso intentas saber si hay datos que has sido enviados desde el formulario, no va a dar resultado, porque el nombre del formulario no se envia. La forma de comprobar eso es la anterior.
En tu caso, la primera vez que ejecutas el script, como no hay datos enviados desde el formulario, la condicion !isset($_POST) es verdadera y entonces se muestra el formulario. No deberia ser asi al enviar los datos.
Ahora bien, cuando enviar el formulario, algunos checkbox van a estar seleccionados y otros no, por lo que necesitas verificar si existen en el array $_POST para saber si han sido seleccionados o no.
Saludos.
  #17 (permalink)  
Antiguo 08/05/2006, 06:08
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
Formulario - HTTP_POST_VARS

perfecto, ahora me queda claro....
Muchisimas Gracias !!!!
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 21:57.