Foros del Web » Programando para Internet » PHP »

Cojer todas las variables y enviar por mail

Estas en el tema de Cojer todas las variables y enviar por mail en el foro de PHP en Foros del Web. Buenas tardes, Estoy programando un archivo php que me procesa los campos que tengo en un formulario html, queria saber si es posible que de ...
  #1 (permalink)  
Antiguo 26/03/2009, 10:01
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Cojer todas las variables y enviar por mail

Buenas tardes,
Estoy programando un archivo php que me procesa los campos que tengo en un formulario html, queria saber si es posible que de alguna manera, el archivo php envie todos los campos que tengo en el formulario dinámicamente, es decir, que yo le pase las variables al php y él las coja todas y las mande por mail.

Me voy a explicar mejor:
Tengo varios formularios con diferentes campos, todos los formularios son diferentes de los cuales quiero que se me manden los campos que se rellenen en el formulario por mail. Sé hacer el php para que me lo mande por correo, pero el problema viene a que si lo hago así, tengo que hacer un php específico para cada formulario y es un follón, ya que cada formulario tiene mínimo 25 campos, cosa que me llebaría mucho tiempo.

Lo que me interesaría es hacer 1 solo php de procesar, donde dinámicamente me envie todos los campos que tiene cada uno de los formularios.

¿Cómo podria hacer esto?

Muchas Gracias y Saludos
  #2 (permalink)  
Antiguo 26/03/2009, 10:20
Avatar de xempro  
Fecha de Ingreso: marzo-2007
Ubicación: Chile
Mensajes: 222
Antigüedad: 17 años, 1 mes
Puntos: 6
Respuesta: Cojer todas las variables y enviar por mail

Espero esto te sirva...

Código PHP:
<?php
$total 
count($_POST);
$tag array_keys($_POST);
$valor array_values($_POST);
for(
$i=0;$i<$total;$i++){ 
    echo 
$tag[$i].": ".$valor[$i]."<br/>"
}
?>
  #3 (permalink)  
Antiguo 26/03/2009, 10:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Cojer todas las variables y enviar por mail

Perfecto, pero ahora, ¿Como hago para que se me envien por mail?
La función de enviar que use era esta:
Código PHP:
mail($dest"Contacto"$campos"From: [email protected]\r\nContent-type: text/html\r\n"); 
  #4 (permalink)  
Antiguo 26/03/2009, 10:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Cojer todas las variables y enviar por mail

Pues simplemente con el código que te dejo Xempro, en lugar de imprimirlas con un echo, asignalas a una variable y esa variable enviala por mail.

Saludos.
  #5 (permalink)  
Antiguo 26/03/2009, 10:58
isra00
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Cojer todas las variables y enviar por mail

Código PHP:
foreach ($_POST as $campo=>$valor) {
 
$texto .= "$campo: $valor\n"
}

mail($dest"Contacto"$campos"From: [email protected]\r\nContent-type: text/plain\r\n"); 
Como ves, he cambiado el formato de email a texto plano. Si quieres enviarlo en HTML en forma de tabla o algo así, puedes volver a ponerlo en text/html y retocar la línea dentro del bucle para añadir filas, celdas, etc.

Un saludo.
  #6 (permalink)  
Antiguo 26/03/2009, 11:16
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Cojer todas las variables y enviar por mail

Código PHP:
<?php
foreach ($_POST as $campos=>$valor) {
 
$texto .= "$campo: $valor\n"
}
$dest prueba@miservidor.com
mail
($dest"Contacto"$campos"From: [email protected]\r\nContent-type: text/plain\r\n");  
?>

Al poner este código me da error...

Parse error: syntax error, unexpected '}' in /var/www/vhosts/xxx.com/httpdocs/pruebas/procesar3.php on line 4

Siento tener que preguntar tanto, pero hace 2 dias empecé con el php y aún no tengo mucha idea...

gracias por vuestra ayuda.
  #7 (permalink)  
Antiguo 26/03/2009, 11:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Cojer todas las variables y enviar por mail

Te falta el ; al final de asignar en $texto.

Saludos.
  #8 (permalink)  
Antiguo 26/03/2009, 11:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Cojer todas las variables y enviar por mail

Código PHP:
<?php
foreach ($_POST as $campos=>$valor) {
 
$texto .= "$campo: $valor\n";
}
$dest "[email protected]"
mail($dest"Contacto"$campos"From: [email protected]\r\nContent-type: text/plain\r\n");  
?>


Sigue fallandome, ahora en la línia 6.


Parse error: syntax error, unexpected T_STRING in /var/www/vhosts/xx.com/httpdocs/pruebas/procesar3.php on line 6
  #9 (permalink)  
Antiguo 26/03/2009, 11:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Cojer todas las variables y enviar por mail

Te falta otro ; en tu $dest.

Saludos.
  #10 (permalink)  
Antiguo 26/03/2009, 17:45
isra00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cojer todas las variables y enviar por mail

Jejeje hombre esos fallos no deberían ser un obstáculo para ti. Por lo que a mí respecta, siento haber enviado código sin haberlo probado prometo depurarlo la próxima vez
  #11 (permalink)  
Antiguo 26/03/2009, 17:51
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: Cojer todas las variables y enviar por mail

además declara la variable $texto antes del foreach.
Código :
Ver original
  1. $texto='';
  2. foreach...
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #12 (permalink)  
Antiguo 06/04/2009, 04:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Respuesta: Cojer todas las variables y enviar por mail

Buenas,
Tengo este código que me manda por mail y me mete en una bdd los datos que se envian por un formulario.

Código PHP:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php header("Location: Envio_formulario_ok.html"); 
?>

<?php
// coje las variables del formulario
$body ' Formulario recibido con los siguientes datos:<br /><br />';
foreach ( 
$_REQUEST as $clave=>$valor ) {
   
$body .= $clave.': <b>'.$valor.'</b><br>';
}

$dest '[email protected]';
$asunto $_POST["titulo_frm"];
$cabeceras "From: [email protected]\r\nContent-type: text/html\r\n";
mail($dest$asunto $body$cabeceras);

// Si entramos es que todo se ha realizado correctamente

$link mysql_connect("localhost","x","x");
mysql_select_db("cforms",$link);

// Con esta sentencia SQL insertaremos los datos en la base de datos
mysql_query("INSERT {$_POST['nombre_tabla']} (nombre,apellidos,empresa,mail,telefono,nif,poblacion,codigopostal)
VALUES('{$_POST['Nombre']}','{$_POST['Apellidos']}','{$_POST['Empresa']}','{$_POST['Mail']}','{$_POST['Telefono']}','{$_POST['NIF']}','{$_POST['Poblacion']}','{$_POST['CP']}')"
,$link);

// Ahora comprobaremos que todo ha ido correctamente
$my_error mysql_error($link);
?>
<title>Formulario Enviado Correctamente</title>
</head>
<body>
</body>
</html>
Todo va perfecto, pero el único detalle que me queda por resolver es que en el mail que se envia, aparecen los campos deseados mas los siguientes:
Código:
boton: Enviar
__utma: 91499208.1208136091773152500.1239006367.1239006367.1239010953.2
__utmc: 91499208
__utmz: 91499208.1239006367.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
__utmb: 91499208.60.10.1239010953

 
¿Cómo podria hacer para omitir estos campos?

Gracias.
  #13 (permalink)  
Antiguo 06/04/2009, 08:14
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: Cojer todas las variables y enviar por mail

utiliza $_POST en lugar de $_REQUEST, ya que ésta última coge $_POST,$_GET,$_COOCKIE.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #14 (permalink)  
Antiguo 06/04/2009, 08:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Cojer todas las variables y enviar por mail

O en dado caso con tu foreach() comprueba con un if() el nombre del campo y si es de los que no quieras enviar haces un continue para brincar ese loop.

Saludos.
  #15 (permalink)  
Antiguo 07/04/2009, 03:33
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Cojer todas las variables y enviar por mail

Cita:
Iniciado por GatorV Ver Mensaje
O en dado caso con tu foreach() comprueba con un if() el nombre del campo y si es de los que no quieras enviar haces un continue para brincar ese loop.

Saludos.
Bien, lo puse por post y ahora ya no me envía los valores del GET y del COOKIE, pero logicamente, me sigue enviando el valor del boton: enviar
Acabo de meter un if dentro del foreach, pero no sé que es lo que tengo que especificar en el caso de que el $clave sea = al 'boton' para que el bucle siga recorriendo los valores del formulario, ya que si lo dejo así el programa se para y no envia nada.

Código PHP:
foreach ( $_POST as $clave=>$valor 
{
    if(
$clave == 'boton')    
    {
        
    }
    elseif()
    {
        
$body .= $clave.': <b>'.$valor.'</b><br>';    
    }

  #16 (permalink)  
Antiguo 07/04/2009, 03:58
 
Fecha de Ingreso: marzo-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Cojer todas las variables y enviar por mail

Yo tengo el mismo problema.

Entonces, que yo me aclare, que soy el más novato de los novatos:

¿cómo queda el código finalmente?, esto lo pongo en archivo a parte del html ¿verdad? y ¿cómo llamo a ese archivo? ¿desde el botón enviar?.

En mi caso tengo varios formularios que se validan con campos Spry, cuando está todo correcto y se envía me crea un registro en la DB y lo que necesito es que me envie un correo a mi con los datos que se han introducido en el formulario/creado en la DB, y otro correo diferente, con otro texto y formato, al cliente para la confirmación del pedido.

Y no tengo ni idea de cómo hacer lo de los envíos de correo...
  #17 (permalink)  
Antiguo 07/04/2009, 08:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Cojer todas las variables y enviar por mail

No uses elseif() no tiene caso simplemente usa else normal.

Saludos.
  #18 (permalink)  
Antiguo 07/04/2009, 08:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Cojer todas las variables y enviar por mail

En mi caso, tengo todo el código en el mismo archivo, queda así:

<?php require_once('Connections/nnn.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO Clientes (CLnombre_razonsocial, CLapellido1, CLapellido2, CLdni, CLdireccion1, CLcp, CLlocalidad, CLprovincia, CLtelefono, CLmovil, .....) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nombresolicitante'], "text"),
GetSQLValueString($_POST['apellido1solic'], "text"),
GetSQLValueString($_POST['apellido2solici'], "text"),
GetSQLValueString($_POST['dnisolicitante'], "text"),
GetSQLValueString($_POST['direccionsolici'], "text"),
.

mysql_select_db($database_nnn, $nnn);
$Result1 = mysql_query($insertSQL, $nnn) or die(mysql_error());
}
?>

El código anterior actua al pulsar el botón de "Confirmar y enviar"
Los campos se validan con funciones del siguiente tipo:


<td><span id="sprytextfield16">
<input name="nombresolicitante" type="text" id="nombresolicitante" value="<?php echo $row_Recordset1['CLnombre_razonsocial']; ?>" size="50" maxlength="50" />
<span class="textfieldRequiredMsg">Se necesita un valor.</span></span></td>


Así que no tengo claro dónde colocar el código necesario para enviar los correos, a continuación, en el comienzo de la página o en archivo aparte.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:40.