Foros del Web » Programando para Internet » PHP »

Formulario. Escogiendo destinatario.

Estas en el tema de Formulario. Escogiendo destinatario. en el foro de PHP en Foros del Web. que tal.. he buscado por el foro y no encuentro respuesta.. Tengo un formulario php normal. con 4 campos.. Nombre Email Asunto Mensaje Este, se ...
  #1 (permalink)  
Antiguo 08/03/2006, 19:10
Avatar de potrillo  
Fecha de Ingreso: abril-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Exclamación Formulario. Escogiendo destinatario.

que tal.. he buscado por el foro y no encuentro respuesta..

Tengo un formulario php normal. con 4 campos..

Nombre
Email
Asunto
Mensaje

Este, se manda perfecto.

Pero ahora necesito reemplazar el campo "asunto" por el campo "a quien va dirigido tu mensaje" es decir.. el usuario podrá escojer si su mensaje se dirijira a:

"Juan" - [email protected]
"Pedro" - [email protected]
"luis" - [email protected]

Dependiendo del nombre que el usuario elija.. es a donde se mandara el mail...
Hasta ahora no tengo nada..tengo el PHP basico.. pero ésto ya no se como hacerlo...

Alguien podria ayudarme?? Mil gracias.
  #2 (permalink)  
Antiguo 08/03/2006, 19:18
okram
Invitado
 
Mensajes: n/a
Puntos:
hay muchas maneras... postea tu codigo para poder ayudarte mejor
  #3 (permalink)  
Antiguo 08/03/2006, 19:19
okram
Invitado
 
Mensajes: n/a
Puntos:
lo siento amigo, me tengo que ir, pero postea tu codigo igual, ya que aqui hay mucha gente dispuesta a ayudarte..... y si no a mi regreso te buscare alguna solucion

a primera vista se me ocurre algo como switch (...)... lee algo sobre esta funcion en http://www.php.net/switch
  #4 (permalink)  
Antiguo 08/03/2006, 19:24
Avatar de potrillo  
Fecha de Ingreso: abril-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Exclamación este es el code..

el formulario esta en un SWF.

EL PHP es este:

Código PHP:
<?
if(!empty($HTTP_POST_VARS['sender_mail']) || !empty($HTTP_POST_VARS['sender_message']) || !empty($HTTP_POST_VARS['sender_subject']) || !empty($HTTP_POST_VARS['sender_name']))
{
    
$to "[email protected] ";
    
$subject stripslashes($HTTP_POST_VARS['sender_subject']);
    
$body stripslashes($HTTP_POST_VARS['sender_message']);
    
$body .= "\n\n---------------------------\n";
    
$body .= "Mail sent by: " $HTTP_POST_VARS['sender_name'] . " <" $HTTP_POST_VARS['sender_mail']  . ">\n";
    
$header "From: " $HTTP_POST_VARS['sender_name'] . " <" $HTTP_POST_VARS['sender_mail'] . ">\n";
    
$header .= "Reply-To: " $HTTP_POST_VARS['sender_name'] . " <" $HTTP_POST_VARS['sender_mail'] . ">\n";
    
$header .= "X-Mailer: PHP/" phpversion() . "\n";
    
$header .= "X-Priority: 1";
    if(@
mail($to$subject$body$header))
    {
        echo 
"output=sent";
    } else {
        echo 
"output=error";
    }
} else {
    echo 
"output=error";
}
?>
Gracias por tu ayuda
  #5 (permalink)  
Antiguo 08/03/2006, 19:41
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
bueno muy facil hacer esto
donde dice
$subject = stripslashes($HTTP_POST_VARS['sender_subject']);
lo cambias por
$subject="el asunto q quieras";
y a la hora de elegir a quien queres q se dirija el email hay una variedad casi infita de hacerlo es solo cuestion de gustos
supongamos una en el formulario creas un campo select con los destinatarios posibles por ejemplo algo asi
<select name="destinatario">
<option value="[email protected]">juan</option>
<option value="[email protected]">pedro</option>
<option value="[email protected]">fulano</option>
</select>
y dentro del php cambias esto
$header = "From: " . $HTTP_POST_VARS['sender_name'] . " <" . $HTTP_POST_VARS['sender_mail'] . ">\n";
por esto otro
$header = "From: " . $HTTP_POST_VARS['destinatario'] . " <" . $HTTP_POST_VARS['sender_mail'] . ">\n";

espero te sirva saludos
  #6 (permalink)  
Antiguo 09/03/2006, 16:39
okram
Invitado
 
Mensajes: n/a
Puntos:
exacto

tal como te muestra emiliodeg, no es muy complicado entender el codigo, mas bien aqui te propongo otra manera, en caso prefieras ocultar las direcciones de correo de los destinatarios, usando el switch que te mencione:

Primero el formulario:

Código HTML:
<form name="enviar" action="enviar.php" method="POST">
Nombre (De): <input type="text" size="30" name="sender_name"><br />
Email (De): <input type="text" size="30" name="sender_mail"><br />
Enviar a (Email): <select name="destinatario">
<option value="mama">A mi mama</option>
<option value="papa">A mi papa</option>
<option value="perrito">A mi firulais</option>
<option value="yo">A mi yo</option>
</select><br />
Mensaje: <textarea......></textarea><br /><br />
<input type="submit" value="Enviar" name="FrmSbmt">
</form> 
Luego en enviar.php

Código PHP:
//
//

<? 
if(isset($_POST['FrmSbmt'] && !empty($_POST['sender_mail']) && !empty($_POST['sender_message']) && !empty($_POST['sender_subject']) && !empty($_POST['sender_name'])) 


//Esto en caso de que todo esta lleno

//asignas a cada nombre una direccion de correo
    
switch($_POST['destinatario']) {
case 
"mama":
{
$destinatario "[email protected]";
break;
}
case 
"papa":
{
$destinatario "[email protected]";
break;
}
case 
"perrito":
{
$destinatario "[email protected]";
break;
}
case 
"yo":
{
$destinatario "[email protected]";
break;
}
// y finalmente un default porseacaso, que sera devuelto en caso de no cumplir ninguno de los casos anteriores
default:
{
 die(
'Error numero algo');
break;
}
}

// la dinamica del swicth es sencilla:
// inicias con switch('$variable') {
// luego para cada valor de la variable le asignas un resultado:
// case "valor1":
// ....RESULTADO 1...
// break;
// case "valor2":
// ....RESULTADO 2...
// break;
// y siempre debes terminar cada case con un break:
// break;
// ademas es bueno siempre tener un default, por si el valor de la varuiable no coincido con ninguno de los valores preeestablecidos:
// default:
// ....RESULTADO PARA EL DEFAULT...
// break;
// }

$subject $_POST['subject'];
$message $_POST['message'];
$sender_name $_POST['sender_name'];
$sender_mail $_POST['sender_mail'];

    
$to $destinatario
    
$subject stripslashes($subject); 
    
$body stripslashes($message); 
    
$body .= "\n\n---------------------------\n"
    
$body .= "Mail sent by: " $sender_name " <" $sender_mail  ">\n"
    
$header "From: " $sender_name " <" $sender_mail ">\n"
    
$header .= "Reply-To: " $sender_name " <" $sender_mail ">\n"
    
$header .= "X-Mailer: PHP/" phpversion() . "\n"
    
$header .= "X-Priority: 1"
    if(@
mail($to$subject$body$header)) 
    { 
        echo 
"output=sent"
    } else { 
        echo 
"output=error"
    } 
} else { 
    echo 
"output=error"

?>  

//
//
bueno fijate en algunas correciones uqe hice, como el uso de HTTP_POST_VARS... leete este articulo: http://www.webestilo.com/php/articulo.phtml?art=38

Ademas observa que cambie tus || a la hora de hacer tus comprobaciones de los campos, y le puse &&.... usar || es como un O, mientras que && es un Y. En el primer caso, bastara que solo un campo este lleno para que el codigo proceda, mientras que en el segundo, todo debera contener datos para proceder con el codigo.

Salu2
  #7 (permalink)  
Antiguo 09/03/2006, 20:10
Avatar de potrillo  
Fecha de Ingreso: abril-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Cabe mencionar que el PHP no se me da verdad.. estudie y leí lo que pones..
Entiendo perfecto la estructura y sintaxis..

Probe con otro tipo de acomodo..al codigo.. el que tu me pones (gracias) me saca esto..


Parse error: parse error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in /home/kinuhco/public_html/enviadooo.php on line 5

  #8 (permalink)  
Antiguo 09/03/2006, 20:36
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Le faltó un parentesis
La línea 5 reemplazala por

if (isset($_POST['FrmSbmt']) && !empty($_POST['sender_mail']) && !empty($_POST['sender_message']) && !empty($_POST['sender_subject']) && !empty($_POST['sender_name']))

PD: no le pongo la etiqueta PHP por error del foro
  #9 (permalink)  
Antiguo 09/03/2006, 22:46
Avatar de potrillo  
Fecha de Ingreso: abril-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
mmmm.. sere wey? ya tiene salida.. pero sale

// Output Error //
  #10 (permalink)  
Antiguo 10/03/2006, 08:27
okram
Invitado
 
Mensajes: n/a
Puntos:
gracias Seppo por la correccion, se me paso ese detalle

Potrillo, me parece o el codigo te sigue mandando error..?? ... bueno eso es lo que entendi en tu ultimo post... si es asi, podrias ser un poco mas concreto?
  #11 (permalink)  
Antiguo 10/03/2006, 12:44
Avatar de potrillo  
Fecha de Ingreso: abril-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Si, gracias Seppo por la ayuda... y okram si mi estimado me sigue mandando error... ya tengo salida.. pero lo que sale es..

// Output Error //

no manda el mail.. no nada.. quieres que te pegue el code ..?
Muchas gracias por seguir por aca
  #12 (permalink)  
Antiguo 10/03/2006, 18:47
okram
Invitado
 
Mensajes: n/a
Puntos:
seria bueno que coloques el codigo... tanto del formulario como de la pagina que procesa los datos.... ademas el uso de $HTTP_POST_VARS es obsoleto, mejor usa $_POST...

bueno postea todo tu codigo
  #13 (permalink)  
Antiguo 13/03/2006, 12:28
Avatar de potrillo  
Fecha de Ingreso: abril-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Exclamación quedo!

bueno.. de verdad gracias por su ayuda.. creo que al final pude resolver el problema..

Aqui posteo el code.. para quien este en las mismas que yo.. jeje gracias

contacto.html

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="300" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="10">&nbsp;</td>
    <td><form name="form1" method="post" action="enviar2.php">
        Nombre<br>
        <input name="sender_name" type="text" id="sender_name" size="25" maxlength="50">
        <br>
        Email<br>
        <input name="sender_email" type="text" id="sender_email" size="25">
        <br>
        Asunto <br>
        <input name="sender_subject" type="text" id="sender_subject" size="25">
        <br>
        A quien va dirigido?<br>
        <select name="destinatario" id="select">
          <option value="alfredo" selected>Destinatario1- D1</option>
          <option value="alfonso">Destinatario2 - D2</option>
          <option value="mayra">Destinatario3 - D3</option>
        </select>
        <br>
        Mensaje<br>
        <textarea name="sender_message" cols="30" rows="5" id="sender_message"></textarea>
        <br>
        <br>
        <input type="submit" name="Submit" value="Borrar">
        <input type="submit" name="Submit2" value="Enviar">
      </form></td>
  </tr>
  <tr> 
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html> 

enviado.php
Código PHP:
//
//

<? 
if(empty($_POST['sender_mail']) && !empty($_POST['sender_message']) && !empty($_POST['sender_subject']) && !empty($_POST['sender_name'])) 


//Esto en caso de que todo esta lleno

//asignas a cada nombre una direccion de correo
    
switch($_POST['destinatario']) {
case 
"D1":
{
$destinatario "[email protected]";
break;
}
case 
"D2":
{
$destinatario "[email protected]";
break;
}
case 
"D3":
{
$destinatario "[email protected]";
break;
}
// y finalmente un default porseacaso, que sera devuelto en caso de no cumplir ninguno de los casos anteriores
default:
{
 die(
'Existe un error. Porfavor verifica tus datos. Gracias');
break;
}
}
$sender_name $_POST['sender_name'];
$sender_mail $_POST['sender_mail'];
$sender_subject $_POST['sender_subject'];
$sender_message $_POST['sender_message'];

    
$to $destinatario
    
$subject stripslashes($sender_subject); 
    
$body stripslashes($sender_message); 
    
$body .= "\n\n---------------------------\n"
    
$body .= "Mail sent by: " $sender_name " <" $sender_mail  ">\n"
    
$header "From: " $sender_name " <" $sender_mail ">\n"
    
$header .= "Reply-To: " $sender_name " <" $sender_mail ">\n"
    
$header .= "X-Mailer: PHP/" phpversion() . "\n"
    
$header .= "X-Priority: 1"
    if(@
mail($to$subject$body$header)) 
    { 
        echo 
"Muchas Gracias por interesarse. En Breve recibiras respuesta de nuestra parte."
    } else { 
        echo 
"Existe un error. Porfavor verifica tus datos. Gracias"
    } 
} else { 
    echo 
"Existe un error. Porfavor verifica tus datos. Gracias"

?>  

//
//
Listo.. Se manda.!

Una vez mas GRACIAS!!!
  #14 (permalink)  
Antiguo 13/03/2006, 17:09
okram
Invitado
 
Mensajes: n/a
Puntos:
permiteme hacer algunas observaciones:

Código PHP:
//<?
if(empty($_POST['sender_mail']) && !empty($_POST['sender_message']) && !empty($_POST['sender_subject']) && !empty($_POST['sender_name']))
me parece que deberia ser:
Código PHP:
//<?
if(!empty($_POST['sender_mail']) && !empty($_POST['sender_message']) && !empty($_POST['sender_subject']) && !empty($_POST['sender_name']))
Otra cosa... tu formulario envia los datos a enviar2.php
Código HTML:
<form name="form1" method="post" action="enviar2.php"> 
y el codigo que nos pones corresponde a un enviado.php... Posteaste los codigos correctos??

Ademas, lo has probado?? funciona??

Fijate en el switch que pusiste:
Código PHP:
//<?
switch($_POST['destinatario']) { 
case 
"D1"

$destinatario "[email protected]"
break; 

case 
"D2"

$destinatario "[email protected]"
break; 

case 
"D3"

$destinatario "[email protected]"
break; 

// y finalmente un default porseacaso, que sera devuelto en caso de no cumplir ninguno de los casos anteriores 
default: 

 die(
'Existe un error. Porfavor verifica tus datos. Gracias'); 
break; 

}
Sin embargo el select 'destinatario' solo tiene como valores alfredo, alfonso y mayra:
Código HTML:
 <select name="destinatario" id="select">
          <option value="alfredo" selected>Destinatario1- D1</option>
          <option value="alfonso">Destinatario2 - D2</option>
          <option value="mayra">Destinatario3 - D3</option>
        </select> 
y no se cumpliria ninguno de los casos, deberias obtener el default como respuesta:
default:
{
die(
'Existe un error. Porfavor verifica tus datos. Gracias');
break;
}
A quien se envia el correo???
  #15 (permalink)  
Antiguo 16/03/2006, 14:59
Avatar de potrillo  
Fecha de Ingreso: abril-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
es cierto... tienes toda la razon okram .. creo que si.. hay errores de codigo.. y como lo planteaas esta correcto... cabe mencionar que hice algunos cambios antes de postearlos... quiza deba pegar el code correcto.. lo prometo hacer
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 03:57.