Foros del Web » Programando para Internet » PHP »

Envio de mail

Estas en el tema de Envio de mail en el foro de PHP en Foros del Web. hola a todos como estan espero me puedan ayudar tengo listado de productos que lo envio por mail sin inconvenientes compuesto por un formulario que ...
  #1 (permalink)  
Antiguo 15/01/2010, 15:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Envio de mail

hola a todos como estan espero me puedan ayudar tengo listado de productos que lo envio por mail sin inconvenientes compuesto por un formulario que contiene checkboxes y un combo (<select>) para las cantidades de los productos, donde el cliente elije los productos que quiere y le da enviar y me llega un mail a mi correo.

El detalle esta en que los productos y las cantidades que selecciono no me llegan

--placa madre, placa de red, disco duro, cantidad

como puede hacer para que me llegue de esta forma

--placa madre cantidad 1, placa de red cantidad 1, disco duro cantidad 2

desde ya muhcas gracias a todos por la ayuda.

este es mi codigo

lista_prod.php
============
<?php
include("conector.php");
$list_prod = "select * from producto";
$resul_list_prod = mysql_query ($list_prod, $conexion) or die (mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ansi"/>
<title>Menu del dia</title>
<style type="text/css">
form.elegante input {
padding: .2em;
}
input:focus {
border: 2px solid #000;
background:#F0F0F0;
}
label {
display: block;
margin: .5em 0 0 0;
}
.btn {
margin: 0em 0;

}
div {
margin: .4em 0;
}
div label {
width: 25%;
float: left;
}
-->
</style>
</head>
<body>
<div class="entry">
<center><font color="#000000">MENU DEL DIA</font></center>
<center><font color="#000000">Por favor rellene el formulario</font></center>
<br />
<form action="enviar.php" method="post">
<table border="0" align="center" cellpadding="3" cellspacing="0" width="400" bordercolor="#C0C0C0">
<tr>
<td>Nombre:</td>
<td><input type="text" name="nombre"></td>
</tr>
<tr>
<td>Apellido:</td>
<td><input type="text" name="apellido"></td>
</tr>
<tr>
<td>Empresa</td>
<td><input type="text" name="empresa"></td>
</tr>
<tr>
<td>Direccion:</td>
<td><input type="text" name="direccion"></td>
</tr>
<tr>
<td>Telefono:</td>
<td><input type="text" name="telefono"></td>
</tr>
<tr>
<td>Mail:</td>
<td><input type="text" name="email"></td>
</tr>
</table>
<center><font color="#000000">Por favor seleccione sus productos</font></center>
<br />
<table border="1" align="center" cellpadding="3" cellspacing="0" width="400" bordercolor="#C0C0C0">
<tr align="center" bgcolor="#FFBF00">
<td><font color="#000000">Producto</font></td><td><font color="#000000">Precio</font></td><td><font color="#000000">cantidad</font></td><td></td>
</tr>
<?php while($row = mysql_fetch_assoc($resul_list_prod)){?>
<tr>
<td><?php echo $row['producto'];?></td>
<td><?php echo $row['precio'];?></td>
<td align="center">
<select name="cantidad[]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
<td>
<?php echo"<input type='checkbox' name='seleccion[]' value='$row[producto]'/>";?>
</td>
</tr>
<?php
}//fin del while
?>
<tr>
<td colspan="4" class="btn"><input type="submit" value="ENVIAR" name="comprar" /></td>
</tr>
</table>
</form>
<?php mysql_free_result($resul_list_prod);?>
</div>
<p class="meta"></p>
</body>
</html>

enviar.php
=========
<?php
$cantidad = $_POST["cantidad"];
for($i=0; $i<count($cantidad); $i++){

}
$nombre = $_POST ['nombre'];
$apellido = $_POST ['apellido'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . " " . $apellido. ", de la empresa " . $empresa . ", direccion " .$direccion. ", telefono " . $telefono . ", y sus productos seleccionados son " . implode(', ', $_POST['seleccion']) . ", cantidad " . $cantidad[$i] . "\r\n";
$mensaje .= "Su e-mail es: " . $email . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]'; // aqui iria mi correo
$asunto = 'venta';
echo "$mensaje";
mail($para, $asunto, $header, $mensaje);
echo "<h3>Muchas Gracias en breve nos comunicamos con usted</h3>";
?>

y el resultado es este
===================
Este mensaje fue enviado por juan perez, de la empresa nn, direccion españa c/ sacramento, telefono 123456, y sus productos seleccionados son placa madre, disco duro, cantidad Su e-mail es: [email protected] Enviado el 15/01/2010
  #2 (permalink)  
Antiguo 15/01/2010, 15:43
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Envio de mail

hola. coloca en tu cabecera:

Código PHP:
Ver original
  1. $header = 'From: ' . $mail . " \n";
  2. $header .= "X-Mailer: PHP/" . phpversion() . " \n";
  3. $header .= "Mime-Version: 1.0 \n";
  4. $header .= "Content-Type: text/html; charset=\"utf-8\"\n";
  5.  
  6. $mensaje = "Este mensaje fue enviado por " . $nombre . " " . $apellido. ", de la empresa " . $empresa . ", direccion " .$direccion. ", telefono " . $telefono . ", y sus productos seleccionados son " . implode(', ', $_POST['seleccion']) . ", cantidad " . $cantidad[$i] . "<br/>";
  7. $mensaje .= "Su e-mail es: " . $email . "<br/>";
  8. $mensaje .= "Enviado el " . date('d/m/Y', time());
  9.  
  10. $para = '[email protected]'; // aqui iria mi correo
  11. $asunto = 'venta';
  12. echo "$mensaje";
  13. mail($para, $asunto, $header, $mensaje);
  14. echo "<h3>Muchas Gracias en breve nos comunicamos con usted</h3>";

saludos.

Última edición por esaenz22; 15/01/2010 a las 15:44 Razón: correccion.
  #3 (permalink)  
Antiguo 15/01/2010, 16:09
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Envio de mail

cambia:
Código PHP:
Ver original
  1. $header .= "Content-Type: text/plain";
por:
Código PHP:
Ver original
  1. $header .= "Content-Type: text/html";

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 15/01/2010, 16:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Envio de mail

hola muchas gracias por responder y disculpen, probe de la forma que me indicaron pero igual me llega en el mail solo cantidad y no los valores

Este es el resultado
=================
Este mensaje fue enviado por christian arrellaga, de la empresa personal, direccion españa c/ sacramento, telefono 662271, y sus productos seleccionados son placa madre, disco duro, cantidad Su e-mail es: [email protected] Enviado el 15/01/2010

donde dice cantidad no llega la cantidad que selecciona el cliente.

desde ya muchas gracias por la ayuda brinda.
  #5 (permalink)  
Antiguo 15/01/2010, 16:43
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Envio de mail

de tu web.........

no es necesario que cantidad sea un arreglo, ya que solo desea elegir una cantidad no varias.....
cambia esto:
<select name="cantidad[]">
por lo siguiente:
<select name="cantidad">

y entonces, tambien quita lo siguiente:
for($i=0; $i<count($cantidad); $i++){
}


Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 15/01/2010, 16:52
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Envio de mail

haber. prueba con esto:

Código PHP:
Ver original
  1. $header .= "From: ".$mail."\n";
  2. $header .= "Return-path: ". $remite."\n";
  3. $header .= "Reply-To: ".$responder."\n";
  4. $header .= "X-Mailer: PHP/". phpversion()."\n";
  5. $header .= "MIME-Version: 1.0\n";
  6. $header .= "Content-Type: text/html; charset=\"utf-8\"\n";
  7.  
  8. $mensaje = "Este mensaje fue enviado por ".$nombre." ".$apellido.", de la empresa ".$empresa.", direccion ".$direccion.", telefono ".$telefono.", y sus productos seleccionados son ".implode(',',$_POST['seleccion']).", cantidad ".$cantidad[$i]."<br/>";
  9. $mensaje .= "Su e-mail es: ".$email."<br/>";
  10. $mensaje .= "Enviado el ".date('d/m/Y', time());

cuando masterojitos coloco el tipo de contenido para html, debiste colocarle saltos de linea, es decir "<br/>". tambien se puede utilizar "\r\n". pero en mi opinion, yo utilizo la etiqueta html "<br/>" para los saltos de linea.

saludos.

Última edición por esaenz22; 15/01/2010 a las 16:55 Razón: correccion.
  #7 (permalink)  
Antiguo 15/01/2010, 16:54
 
Fecha de Ingreso: noviembre-2008
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
probe como me indicaste masterojitos ahora me envia esto y en el formulario he seleccionado dos productos distintos

este es el resultado
================
Este mensaje fue enviado por juan perez, de la empresa nn, direccion mcal lopez, telefono 123456, y sus productos seleccionados son disco duro, placa madre, cantidad 1 Su e-mail es: [email protected] Enviado el 15/01/2010 1

tendria que quedar de esta forma
===========================
Este mensaje fue enviado por juan perez, de la empresa nn, direccion mcal lopez, telefono 123456, y sus productos seleccionados son disco duro cantidad 2, placa madre, cantidad 1 Su e-mail es: [email protected] Enviado el 15/01/2010 1

probe como me indicaste masterojitos ahora me envia esto y en el formulario he seleccionado dos productos distintos

este es el resultado
================
Este mensaje fue enviado por juan perez, de la empresa nn, direccion mcal lopez, telefono 123456, y sus productos seleccionados son disco duro, placa madre, cantidad 1 Su e-mail es: [email protected] Enviado el 15/01/2010 1

tendria que quedar de esta forma
===========================
Este mensaje fue enviado por juan perez, de la empresa nn, direccion mcal lopez, telefono 123456, y sus productos seleccionados son disco duro cantidad 2, placa madre, cantidad 1 Su e-mail es: [email protected] Enviado el 15/01/2010 1

Última edición por GatorV; 15/01/2010 a las 17:12
  #8 (permalink)  
Antiguo 15/01/2010, 16:58
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Envio de mail

bueno. pero en si te salio como querias ?.

saludos.
  #9 (permalink)  
Antiguo 15/01/2010, 17:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Envio de mail

Si el correo me llega bien pero no me llegan las cantidades que selecciono, si eligo en el formaulario dos productos distintos me envia los dos productos, pero solo la cantidad de uno de ellos, no se si lo estoy haciendo bien.
  #10 (permalink)  
Antiguo 15/01/2010, 18:08
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Envio de mail

ya te entendi...... tu lo que deseas es que la cantidad vaya ligada al producto en cada while...... ps lo que pasa que has elaborado mal el formulario....... y el envio de correo, ya que el orden es: email(destinatario, asunto, mensaje, cabezeras).

lista_prod.php
============
Código PHP:
Ver original
  1. <?php
  2. include("conector.php");
  3. $list_prod = "select * from producto";
  4. $resul_list_prod = mysql_query ($list_prod, $conexion) or die (mysql_error());
  5. ?>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=ansi"/>
  10. <title>Menu del dia</title>
  11. <style type="text/css">
  12. form.elegante input {
  13. padding: .2em;
  14. }
  15. input:focus {
  16. border: 2px solid #000;
  17. background:#F0F0F0;
  18. }
  19. label {
  20. display: block;
  21. margin: .5em 0 0 0;
  22. }
  23. .btn {
  24. margin: 0em 0;
  25.  
  26. }
  27. div {
  28. margin: .4em 0;
  29. }
  30. div label {
  31. width: 25%;
  32. float: left;
  33. }
  34. -->
  35. </style>
  36. </head>
  37. <body>
  38. <div class="entry">
  39. <center><font color="#000000">MENU DEL DIA</font></center>
  40. <center><font color="#000000">Por favor rellene el formulario</font></center>
  41. <br />
  42. <form action="enviar.php" method="post">
  43. <table border="0" align="center" cellpadding="3" cellspacing="0" width="400" bordercolor="#C0C0C0">
  44. <tr>
  45. <td>Nombre:</td>
  46. <td><input type="text" name="nombre"></td>
  47. </tr>
  48. <tr>
  49. <td>Apellido:</td>
  50. <td><input type="text" name="apellido"></td>
  51. </tr>
  52. <tr>
  53. <td>Empresa</td>
  54. <td><input type="text" name="empresa"></td>
  55. </tr>
  56. <tr>
  57. <td>Direccion:</td>
  58. <td><input type="text" name="direccion"></td>
  59. </tr>
  60. <tr>
  61. <td>Telefono:</td>
  62. <td><input type="text" name="telefono"></td>
  63. </tr>
  64. <tr>
  65. <td>Mail:</td>
  66. <td><input type="text" name="email"></td>
  67. </tr>
  68. </table>
  69. <center><font color="#000000">Por favor seleccione sus productos</font></center>
  70. <br />
  71. <table border="1" align="center" cellpadding="3" cellspacing="0" width="400" bordercolor="#C0C0C0">
  72. <tr align="center" bgcolor="#FFBF00">
  73. <td><font color="#000000">Producto</font></td><td><font color="#000000">Precio</font></td><td><font color="#000000">cantidad</font></td><td></td>
  74. </tr>
  75. <?php
  76. $contador = 0;
  77. while($row = mysql_fetch_assoc($resul_list_prod)){
  78. ?>
  79. <tr>
  80. <td><?php echo $row['producto'];?></td>
  81. <td><?php echo $row['precio'];?></td>
  82. <td align="center">
  83. <select name="antidad[$contador]">
  84. <option value="1">1</option>
  85. <option value="2">2</option>
  86. <option value="3">3</option>
  87. <option value="4">4</option>
  88. <option value="5">5</option>
  89. </select>
  90. </td>
  91. <td>
  92. <?php echo "<input type='checkbox' name='seleccion[$contador]' value='$row[producto]'/>"; ?>
  93. </td>
  94. </tr>
  95. <?php
  96. $contador++;
  97. }//fin del while
  98. ?>
  99. <tr>
  100. <td colspan="4" class="btn"><input type="submit" value="ENVIAR" name="comprar" /></td>
  101. </tr>
  102. </table>
  103. </form>
  104. <?php mysql_free_result($resul_list_prod);?>
  105. </div>
  106. <p class="meta"></p>
  107. </body>
  108. </html>

y ya tienes los arreglos... tanto del producto como de la cantidad.......

ahora para enviarlos correctamente has asi:

enviar.php
=========
Código PHP:
Ver original
  1. <?php
  2. $nombre = $_POST['nombre'];
  3. $apellido = $_POST['apellido'];
  4. $empresa = $_POST['empresa'];
  5. $direccion = $_POST['direccion'];
  6. $telefono = $_POST['telefono'];
  7. $productos = $_POST["seleccion"];
  8. $cantidad = $_POST["cantidad"];
  9.  
  10. $header = "From: $mail\r\n";
  11. $header .= "X-Mailer: PHP/".phpversion()."\r\n";
  12. $header .= "MIME-Version: 1.0\n";
  13. $header .= "Content-Type: text/html; charset=\"utf-8\"\n";
  14.  
  15. $mensaje = "Este mensaje fue enviado por $nombre $apellido, de la empresa $empresa, direccion $direccion, telefono $telefono";
  16. if(count($productos)>0){
  17.     $mensaje .= ", y sus productos seleccionados son: ";
  18.     foreach($productos as $contador => $valor){
  19.         $mensaje .= "$valor cantidad $cantidad[$contador], ";
  20.     }
  21.     $mensaje .= substr($mensaje, 0, strlen($mensaje) - 2);
  22. }
  23. $mensaje .= "<br />Su e-mail es: $email<br />Enviado el ".date('d/m/Y');
  24.  
  25. echo "$mensaje<br /><br />"; //de testeo
  26. mail("[email protected]", "venta", $mensaje, $header);
  27. echo "<h3>Muchas Gracias en breve nos comunicamos con usted</h3>";
  28. ?>

espero te sirva muy bien.

Muchas gracias por el karma.....

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #11 (permalink)  
Antiguo 15/01/2010, 18:31
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Envio de mail

bueno. no me habia percatado de ello. pero viendo el codigo que publico masterojitos, esta entendible.

un consejo kushanku. cuando publiques tu tema, no coloques todo tu codigo html y php. solo publica lo necesario para que otros usuarios puedan orientarte y asi se te hace mas facil el codigo. porque si colocas todo el codigo, sin utilizar las etiquetas, se veria muy desordenado y nadie se tomaria la molestia en leerlo.

y otra cosa. al momento de publicar tu codigo, utiliza el listado de etiquetas para que tu codigo se vea mas ordenado.

saludos.
  #12 (permalink)  
Antiguo 15/01/2010, 20:30
 
Fecha de Ingreso: noviembre-2008
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Envio de mail

muchas gracias amigos por la ayuda lo hice como dijiste masterojitos ahora imprime la palabra cantidad al lado del producto pero no sigue sin colocar el valor, ya lo he probado de toda las formas pero no me sale.

este es el resultado
===============
Este mensaje fue enviado por juan pere, de la empresa nn, direccion españa c/ sacramento, telefono 123456, y sus productos seleccionados son: disco duro cantidad , placa madre cantidad ,
Su e-mail es: [email protected]
Enviado el 15/01/2010
  #13 (permalink)  
Antiguo 16/01/2010, 06:26
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Envio de mail

que raro la verdad amigo........

asi como posteas el resultado del correo......
por favor postea el resultado de esto.
Código PHP:
Ver original
  1. print_r($_REQUEST);

haber que y como esta llegando la informacion.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #14 (permalink)  
Antiguo 16/01/2010, 22:25
 
Fecha de Ingreso: noviembre-2008
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Envio de mail

hola masterojitos agregue el codigo que me indicaste y envio esto

Array ( [nombre] => juan [apellido] => perez [empresa] => personal [direccion] => españa c/ sacramento [telefono] => 123456 [email] => [email protected] [cantidad] => Array ( [$contador] => ) [seleccion] => Array ( [0] => disco duro [1] => placa madre ) [comprar] => ENVIAR ) Este mensaje fue enviado por juan perez, de la empresa personal, direccion españa c/ sacramento, telefono 123456, y sus productos seleccionados son: disco duro cantidad , placa madre cantidad ,
Su e-mail es: [email protected]
Enviado el 17/01/2010
  #15 (permalink)  
Antiguo 16/01/2010, 23:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Envio de mail

hola masterojitos ya me funciona muchas gracias por la ayudar brinda lo unico que hize fue quitarle la variable $contador del cantidad[]

antes estaba asi
=============
<select name="cantidad[$contador]">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

luego le quite la variable $contador y asi me funciono bien

<select name="cantidad[]">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

resultado
========
Este mensaje fue enviado por
Nombre: juan
Apellido: perez
De la empresa: personal
Direccion: españa c/ sacramento
Telefono: 123456
y sus productos seleccionados son: disco duro cantidad 2, placa madre cantidad 3,
Su e-mail es: [email protected]
Enviado el: 17/01/2010

realmente me ayudaste bastante muchas gracias y tambien gracias por la paciencia
  #16 (permalink)  
Antiguo 18/01/2010, 09:54
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Envio de mail

a disculpa se me paso..... es que te hize todo aca mismo sin probarlo....

en realidad tenia que ser asi:
<select name="cantidad[<?php echo $contador; ?>]">

pero que bueno que te salio.

Dios os Bendiga.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog

Etiquetas: envio, mail
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 07:24.