PHP - Como enviar información procesada en php por mail?

 
Vista:

Como enviar información procesada en php por mail?

Publicado por Jasy Feuermann (5 intervenciones) el 02/05/2014 13:56:10
Tengo un formulario de pedido de pizzas.
http://sargentopepperoni.com.ar/prueba-calculo-vivo.php

El cual a través de php me tira estos resultados en un HTML.

"Pedido online

Su pedido ha sido el siguiente:

1 Verdura
1 Panceta
Total en unidades: 2
Costo: $64.00.-"

Necesitarìa que esta misma informaciòn me llegue a mi casilla de mail.
Nose que linea de código debo agregar para que en vez de mostrarmelo en el html me lo envie directamente a mi casilla.

Este es el codigo PHP completo y funcionando:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
//Etiqueta de texto
echo "<h1>Pedido online</h1>";
//Etiqueta de texto
echo "<h3>Su pedido ha sido el siguiente:</h3>";
//Recuperamos los datos pasado por el formulario
$qty_item_1=$_POST["qty_item_1"];
$qty_item_2=$_POST["qty_item_2"];
$qty_item_3=$_POST["qty_item_3"];
$qty_item_4=$_POST["qty_item_4"];
$qty_item_5=$_POST["qty_item_5"];
$qty_item_6=$_POST["qty_item_6"];
$qty_item_7=$_POST["qty_item_7"];
$qty_item_8=$_POST["qty_item_8"];
$qty_item_9=$_POST["qty_item_9"];
$qty_item_10=$_POST["qty_item_10"];
$qty_item_11=$_POST["qty_item_11"];
$qty_item_12=$_POST["qty_item_12"];
/*Imprimimos en pantalla los resultados*/
if($qty_item_1>0)echo $qty_item_1." Muzzarella<br>";
if($qty_item_2>0)echo $qty_item_2." Fugazzetta<br>";
if($qty_item_3>0)echo $qty_item_3." Especial<br>";
if($qty_item_4>0)echo $qty_item_4." Primavera<br>";
if($qty_item_5>0)echo $qty_item_5." Napolitana<br>";
if($qty_item_6>0)echo $qty_item_6." Verdura<br>";
if($qty_item_7>0)echo $qty_item_7." Roquefort<br>";
if($qty_item_8>0)echo $qty_item_8." Calabresa<br>";
if($qty_item_9>0)echo $qty_item_9." Anchoas<br>";
if($qty_item_10>0)echo $qty_item_10." Panceta<br>";
if($qty_item_11>0)echo $qty_item_11." Cuatro Quesos<br>";
if($qty_item_12>0)echo $qty_item_12." Sargento Pepperoni<br>";
//Variable que contiene el total de piezas pedidas
$totalpieza=$qty_item_1+$qty_item_2+$qty_item_3+$qty_item_4+$qty_item_5+$qty_item_6+$qty_item_7+$qty_item_8+$qty_item_9+$qty_item_10+$qty_item_11+$qty_item_12;
//Imprimimos el resultado
echo "<p>Total en unidades: $totalpieza";
/*Creamos unas constantes para el valor o
precio de cada modelo, para lo cual usaremos
la función define*/
define("PRECIOITEM1",25);
define("PRECIOITEM2",26);
define("PRECIOITEM3",28);
define("PRECIOITEM4",30);
define("PRECIOITEM5",30);
define("PRECIOITEM6",31);
define("PRECIOITEM7",32);
define("PRECIOITEM8",31);
define("PRECIOITEM9",31);
define("PRECIOITEM10",33);
define("PRECIOITEM11",37);
define("PRECIOITEM12",40);
/*Le daremos el valor a cada variable
utilizando las constantes*/
$costo=$qty_item_1*PRECIOITEM1+$qty_item_2*PRECIOITEM2+$qty_item_3*PRECIOITEM3+$qty_item_4*PRECIOITEM4+$qty_item_5*PRECIOITEM5+$qty_item_6*PRECIOITEM6+$qty_item_7*PRECIOITEM7+$qty_item_8*PRECIOITEM8+$qty_item_9*PRECIOITEM9+$qty_item_10*PRECIOITEM10+$qty_item_11*PRECIOITEM11+$qty_item_12*PRECIOITEM12;
 
//Valor total del pedido con decimales
echo "<br>Costo: $".number_format($costo,2).".-<br>";
?>

Me esta faltando este paso y no encuentro un tutorial o ejemplo parecido.

Cualquier ayuda que me puedan dar estaré sumamente agradecida.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de TinocoG

Como enviar información procesada en php por mail?

Publicado por TinocoG (125 intervenciones) el 02/05/2014 18:08:56
Lo que harias es:

Una vez que tienes o que obtuviste los valores desde el formulario, puedes usar phpmailer (sencillo de implementar y usar) y bajarlo desde esta direccion https://github.com/PHPMailer/PHPMailer los valores que tienes desde el formulario debes ponerlos en el cuerpo del mensaje

algo asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require '../PHPMailerAutoload.php';
 
$mail = new PHPMailer();
$mail->isSendmail();
$mail->setFrom('tucorreo@tudominio.com', 'tu nombre');
$mail->addAddress('correoalcualseenvia@dominio.com', 'nombre del destinatario');
$mail->Subject = 'asunto del email';
$mail->msgHTML($variable_que_contiene_datos);
 
 
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}
?>

En tu variable de datos puedes hacer dos cosas, si no quieres poner todas y cada una de las variables, puedes poner un ciclo para que las agregue a una sola variable

Saludos,

Si tienes problemas para implementarlo, avisame y te explico o mandame un email directamente salvador.tinoco.gonzalez arroba gmail dot com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como enviar información procesada en php por mail?

Publicado por Jasy Feuermann (5 intervenciones) el 02/05/2014 19:59:39
Hola Tinoco:

Gracias por la respuesta, según lo que me comentas mediante PHPMailer puedo incluir en el mensaje del mail variables que contengan por ejemplo el total del pedido($costo).
Cosa que con la función mail() no se puede.
Esto es correcto?

Ya incluí PHPMailer a mi servidor (copie todos los archivos al raiz con sus subcarpetas)



Una vez resuelto esto debo incluir el codigo php que me pasaste debajo de mi codigo actual:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
...mi codigo...
?>
 
<?php
require '../PHPMailerAutoload.php';
 
$mail = new PHPMailer();
$mail->isSendmail();
$mail->setFrom('tucorreo@tudominio.com', 'tu nombre');
$mail->addAddress('correoalcualseenvia@dominio.com', 'nombre del destinatario');
$mail->Subject = 'asunto del email';
$mail->msgHTML($variable_que_contiene_datos); // AQUI COLOCAR LA VARIABLE $costo y aparecerá en el mail
 
 
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>


Es correcta mi visión?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de TinocoG

Como enviar información procesada en php por mail?

Publicado por TinocoG (125 intervenciones) el 02/05/2014 21:32:00
seria aqui

$mail->msgHTML(AQUI COLOCAR LA VARIABLE $costo y aparecerá en el mai);

avisame
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como enviar información procesada en php por mail?

Publicado por Jasy Feuermann (5 intervenciones) el 02/05/2014 21:50:14
Hola tinico!

Ya estamos avanzando.. pegamos este codigo luego del mio:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
require 'PHPMailerAutoload.php';
 
$mail = new PHPMailer ;
 
$mail->SMTPAuth   = true;
$mail->SMTPSecure = "ssl";
$mail->Host       = "smtp.gmail.com";
$mail->Port       = 465;
$mail->Username   = "zaraza@gmail.com";
$mail->Password   = "zaraza";
 
$mail->From       = "zaraza@gmail.com";
$mail->FromName   = "Sargento Pepperoni";
$mail->Subject    = "Pedido Online";
 
 
$mail->AddAddress("zaraza@gmail.com","name to");
$mail->IsHTML(true);
 
 
$body  = $html="     //Aqui luego del body pusimos una cadena $html y alli metimos todo
<h1>Pedido online</h1>
<h3>Su pedido ha sido el siguiente:</h3>
 
<h3>Total en unidades: <h3> $totalpieza
<h3>Costo: <h3> $costo
";
 
$mail->Body = $body;
 
 
// Notificamos al usuario del estado del mensaje  
if(!$mail->Send()){
//   echo "No se pudo enviar el Mensaje."; 
   echo "<br/>".$mail->ErrorInfo; //Esto te muestra el error que ha producido al intentar enviar el correo   
}else{
   echo "Mensaje enviado";
}


Hasta aqui funciona bien! Llega al mail la cuenta del total a pagar y el total de unidades. ($costo y $totalpieza).

Lo que nos falta ahora es indicar el detalle del pedido. Es decir, la cantidad de cada pizza por separado, ejemplo:
"1 Muzzarella
3 Provolone"

Esto esta definido en el codigo con una funcion:
if($qty_item_1>0)echo $qty_item_1." Muzzarella<br>";

El if lo utilizamos para evitar que se impriman las variedades de pizza que no estan incluidas en el pedido. Si el valor es distinto a cero, aparecen, sinó no.

Pero al ser una función y no una variable no me deja colocarlo en el $html=". (me tira error de sintaxis)

- ¿Como te parece que podemos hacer para incluir solo las variedades de pizza que se solicitan?
- ¿Como transformar esa función en una variable?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de TinocoG

Como enviar información procesada en php por mail?

Publicado por TinocoG (125 intervenciones) el 02/05/2014 23:11:06
lo dificil ya lo hiciste, solo falta guardar en una sola variable todos los datos


cuando haces una funcion tienes posibilidad de regresar variables por medio de un return

1
2
3
4
5
6
function suma($a = 1, $b = 2){
 $c = $a + $b;
return $c;
}
 
echo $c; // resultado: 3

si tienes una funcion ciclica podrias agregar datos a la variable ya establecida.

si pones $a = "hola";
echo $a; // resultado hola
$a.= " mundo";
echo $a; // resultado "hola mundo"
$a.= " otra vez";
echo $a; // resultado "hola mundo otra vez"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como enviar información procesada en php por mail?

Publicado por Jasy Feuermann (5 intervenciones) el 03/05/2014 00:40:22
Pensé varias posibilidades con esta lógica y otras.

¿Como logro que el resultado de esta sentencia se guarde en una variable?
if($qty_item_1>0)echo $qty_item_1." Muzzarella<br>";

No conozco tan a fondo Php como para poneme creativa, me esta costando encontrar mas perspectivas nuevas. Tengo el cerebro en return ya...

Se te ocurre algún método para lograr esto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de TinocoG

Como enviar información procesada en php por mail?

Publicado por TinocoG (125 intervenciones) el 03/05/2014 00:50:00
paga guardar el resultado en lugar de imprimirlo, lo unico que haces es cambiar echo por el nombre de la variable es decir

tu codigo
if($qty_item_1>0)echo $qty_item_1." Muzzarella<br>";

mi codigo
if($qty_item_1>0) $muzzarela = $qty_item_1." Muzzarella<br>";

pero no creo que sea eso lo que necesitas, que te parece si te mando un correo y nos comunicamos por algun mensajero, ya sea whatsapp, hangout, skype, o alguno y vemos tu codigo, es realmente facil lo que quieres hacer, pero me gustaria ver tu codigo completo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como enviar información procesada en php por mail?

Publicado por Jasy Feuermann (5 intervenciones) el 03/05/2014 01:43:10
Skype: yayuufb
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar