Foros del Web » Programando para Internet » PHP »

Agregar campos al formulario

Estas en el tema de Agregar campos al formulario en el foro de PHP en Foros del Web. Buenas tardes; Tengo la siguiente duda, me pasaron este formulario en PHP para una página mia. este es el codigo: <? require("mailcfg.inc.php"); if(isset($_POST['texto'])) { $fecha ...
  #1 (permalink)  
Antiguo 20/08/2006, 16:36
 
Fecha de Ingreso: julio-2006
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
Exclamación Agregar campos al formulario

Buenas tardes;

Tengo la siguiente duda, me pasaron este formulario en PHP para una página mia. este es el codigo:

<?
require("mailcfg.inc.php");
if(isset($_POST['texto'])) {
$fecha = strftime("%d-%m-%Y a las %H:%M", time());
$cabeceras = "Reply-To:$mail\nFrom:$nick <$mail>";
$nick = stripslashes($_POST['nick']); // usa los Arrays superglobales!!! (para toda variable externa)
$mail = stripslashes($mail);
$asunto = stripslashes($asunto);
$texto = stripslashes($texto);
if (mail($destinatario,$asunto,"$texto",$cabeceras)){
header ("Location: MensajeExito.htm");
exit;
} else {
header ("Location: MensajeError.htm");
exit;
}
}
else {
?>


Y este es el codigo del cuerpo del formulario:

<?
echo " <form action=\"mailEsp.php\" method=\"post\">\n";
echo " <span class=\"txt\">Nombre:&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"nick\" /><br />\n";
echo " <span class=\"txt\">Correo:&nbsp;&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"mail\" /><br />\n";
echo " <span class=\"txt\">Asunto:&nbsp;&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"asunto\" /><br />\n";
echo " <span class=\"txt\">Comentarios:</span><br />\n";
echo " <textarea cols=\"45\" rows=\"6\" class=\"campo\" name=\"texto\"></textarea><br /><br />\n";
echo " <input type=\"submit\" class=\"boton\" value=\"Enviar Correo\" />\n";
echo "</form>\n";
?>


Yo quiero agregarle estos 2 campos mas la formulario:

echo " <span class=\"txt\">Empresa:</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"empresa\" /><br />\n";
echo " <span class=\"txt\">Ciudad:&nbsp;&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"ciudad\" /><br />\n";

Pero mi pregunta es, donde los tengo que meter en la programacion para que me puedan llegar a mi correo.

De antemano mil gracias.
  #2 (permalink)  
Antiguo 20/08/2006, 17:05
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 18 años, 3 meses
Puntos: 0
Tus nuevos campos, en el código HTML, los metes entre <form> y </form>, y te queda así:

<?
echo " <form action=\"mailEsp.php\" method=\"post\">\n";
echo " <span class=\"txt\">Nombre:&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"nick\" /><br />\n";
echo " <span class=\"txt\">Correo:&nbsp;&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"mail\" /><br />\n";
echo " <span class=\"txt\">Asunto:&nbsp;&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"asunto\" /><br />\n";
echo " <span class=\"txt\">Empresa:</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"empresa\" /><br />\n";
echo " <span class=\"txt\">Ciudad:&nbsp;&nbsp;</span>\n";
echo " <input type=\"text\" size=\"30\" class=\"campo\" name=\"ciudad\" /><br />\n";

echo " <span class=\"txt\">Comentarios:</span><br />\n";
echo " <textarea cols=\"45\" rows=\"6\" class=\"campo\" name=\"texto\"></textarea><br /><br />\n";
echo " <input type=\"submit\" class=\"boton\" value=\"Enviar Correo\" />\n";
echo "</form>\n";
?>

Y en la parte PHP, lo normal es que pongas un par de líneas más en el cuerpo del mensaje. Te quedaría algo así:

<?
require("mailcfg.inc.php");
if(isset($_POST['texto'])) {
$fecha = strftime("%d-%m-%Y a las %H:%M", time());
$cabeceras = "Reply-To:$mail\nFrom:$nick <$mail>";
$nick = stripslashes($_POST['nick']); // usa los Arrays superglobales!!! (para toda variable externa)
$mail = stripslashes($mail);
$asunto = stripslashes($asunto);
$texto = stripslashes("Empresa: $empresa\r\nCiudad: $ciudad\r\n$texto");
if (mail($destinatario,$asunto,"$texto",$cabeceras)){
header ("Location: MensajeExito.htm");
exit;
} else {
header ("Location: MensajeError.htm");
exit;
}
}
else {
?>
  #3 (permalink)  
Antiguo 20/08/2006, 21:22
 
Fecha de Ingreso: julio-2006
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Gracias...

Muchas gracias GikaJavi;

Ya lo hice y funciono a la perfección.

Si quisiera que los campos nombre y correo fueran obligatorios que necesito hacer? por favor.

Gracias nuevamente.
  #4 (permalink)  
Antiguo 21/08/2006, 06:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 18 años, 3 meses
Puntos: 0
Lo más correcto es hacer la validación en el cliente con Java Script y luego repetirla en el servidor con PHP. Si vas mal de JavaScript hazlo sólo con PHP. Se trata de ver si esas variables tienen algún valor (distintas a cadena vacía y avisar en tal caso). Ahora no tengo tiempo pero esta noche te respondo mejor si no lo hace alguien antes.
  #5 (permalink)  
Antiguo 21/08/2006, 12:00
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
para realizar la validacion en php por ejemplo podrias poner algo asi

Código PHP:
<?php

if (empty($_POST["empresa"])) {
echo 
"Tienes que ingresar una empresa";
exit;
}

//o tambien puedes redireccionar a otra pagina o al mismo formulario

if (empty($_POST["empresa"])) {
header("location: error_01.php");
exit;
}

//o puedes tener una pagina especial para presentar los errores

if (empty($_POST["empresa"])) {
$error=urlencode("Tienes que ingresar una empresa");
header("location: errores.php?error=$error");
exit;
}
?>
y en el archivo errores.php muestras algo asi

Código PHP:
<?php
echo "ERROR!!!<br>";
echo 
urldecode($_GET["error"]);
?>
es un ejemplo basico :p

PD: urlencode y urldecode son funciones de php para codificar una variable para enviar via get y poder recibirla tal como la original :P

urlencode (http://www.php.net/manual/es/function.urlencode.php)
urldecode(http://www.php.net/manual/es/function.urldecode.php)
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 21/08/2006, 14:25
 
Fecha de Ingreso: julio-2006
Mensajes: 29
Antigüedad: 18 años, 4 meses
Puntos: 0
Muchas gracias Nemutagk y GikaJavi por sus aportaciones, me fueron de mucha ayuda.

Marco
  #7 (permalink)  
Antiguo 21/08/2006, 14:38
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
no hay problema, ya sabes si te atoras aqui alguien te puede ayudar
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
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 14:11.