Foros del Web » Programando para Internet » PHP »

Enviar variable con phpmailer

Estas en el tema de Enviar variable con phpmailer en el foro de PHP en Foros del Web. Hola, quiero enviar una lista de productos por mail; Código: <?php do { ?> <tr> <td><?php echo $body = ObtenerNombreProducto($row_DatosCot['idProducto']); ?></td> <td><?php echo $body1 = ...
  #1 (permalink)  
Antiguo 24/03/2015, 21:19
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Enviar variable con phpmailer

Hola, quiero enviar una lista de productos por mail;

Código:
<?php do { 
 ?>
  <tr> 
   <td><?php echo $body = ObtenerNombreProducto($row_DatosCot['idProducto']); ?></td>
    <td><?php echo $body1 = $row_DatosCot['intCantidad']; ?></td>
    <td><a href="pro_del.php?recordID=<?php echo $row_DatosCot['intContador']; ?>">Eliminar</a></td>
  </tr>
  <?php } while ($row_DatosCot = mysql_fetch_assoc($DatosCot)); ?>
  </table>
Código:
<?php $mail->Body = 'Producto:' . $body . ' ' . 'Cantidad:' . $body1 ;?>
Y me envía el mail solo con el último producto de la lista y no todos los productos de la lista..
Que debo hacer? Saludos.
  #2 (permalink)  
Antiguo 24/03/2015, 21:43
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Enviar variable con phpmailer

Hola. Por favor, utiliza el Highlight que proporciona el foro.



Código PHP:
Ver original
  1. <?php do {
  2.  ?>
  3.   <tr>
  4.    <td><?php echo $body = ObtenerNombreProducto($row_DatosCot['idProducto']); ?></td>
  5.     <td><?php echo $body1 = $row_DatosCot['intCantidad']; ?></td>
  6.     <td><a href="pro_del.php?recordID=<?php echo $row_DatosCot['intContador']; ?>">Eliminar</a></td>
  7.   </tr>
  8.   <?php } while ($row_DatosCot = mysql_fetch_assoc($DatosCot)); ?>
  9.   </table>

Cortas el php do en cuanto cierras las etiqueta.
Prueba con esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Datos del email
  4. $nombre_origen    = "Tu nombre / Nombre empresa, etc.";
  5. $email_origen     = "[email protected]"; //Lo cambias por tu mail
  6. $email_copia      = "[email protected]"; //Lo cambias por tu mail
  7. $email_ocultos    = "[email protected]"; //Lo cambias por tu mail
  8. $email_destino    = "[email protected]"; //Lo cambias por el email de destino
  9.  
  10. //Asunto
  11. $asunto = "EL ASUNTO DEL MAIL";
  12.  
  13. //El mail en sí
  14. $mail = "
  15. EL MENSAJE
  16. ";
  17.  
  18. //Formato HTML
  19. $formato = "html";
  20.  
  21. //*****************************************************************//
  22. $headers  = "From: $nombre_origen <$email_origen> \r\n";
  23. $headers .= "X-Priority: 3 \r\n";
  24. $headers .= "MIME-Version: 1.0 \r\n";
  25. $headers .= "Content-Transfer-Encoding: 7bit \r\n";
  26. //*****************************************************************//
  27.  
  28. if($formato == "html")
  29.  { $headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
  30.    else
  31.     { $headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";  }
  32.  
  33. if (@mail($email_destino, $asunto, $mail, $headers))  
  34. { };
  35.  
  36. ?>
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 24/03/2015, 22:20
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Enviar variable con phpmailer

Gracias por la respuesta,
No entendí a que te refieres con
Cita:
Cortas el php do en cuanto cierras las etiqueta.
Saludos
  #4 (permalink)  
Antiguo 24/03/2015, 22:21
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Enviar variable con phpmailer

Me refiero a esto:

Código PHP:
Ver original
  1. <?php do {
  2.  ?> //<- Ahí cortas la etiqueta de PHP, así que no hace nada ////////////////////////
  3.   <tr>
  4.    <td><?php echo $body = ObtenerNombreProducto($row_DatosCot['idProducto']); ?></td>
  5.     <td><?php echo $body1 = $row_DatosCot['intCantidad']; ?></td>
  6.     <td><a href="pro_del.php?recordID=<?php echo $row_DatosCot['intContador']; ?>">Eliminar</a></td>
  7.   </tr>
  8.   <?php } while ($row_DatosCot = mysql_fetch_assoc($DatosCot)); ?>
  9.   </table>
__________________
¿Te sirvió la respuesta? Deja un +1
  #5 (permalink)  
Antiguo 24/03/2015, 22:34
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Enviar variable con phpmailer

Eso esta funcionando bien, no puedo abrirla. En la lista me aparecen todos los productos, el problema esta al enviar el email que solo aparece el útlimo de la lista..
Corta antes del While más abajo..
  #6 (permalink)  
Antiguo 24/03/2015, 22:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar variable con phpmailer

Recuerda que la estructura do-while primero ejecuta el código del bloque, y luego evalúa el while.

Entonces, la variable $row_DatosCot jamás existirá antes de la primero vuelta del while, porque se define dicha variable hasta la condición.

¿Se entiende?

Para poder usar una variable primero hay que definirla, y si usas do-while sin saber cómo funciona al respecto entonces estás perdido: por favor consulta el manual.

Otra cosa:
Cita:
Iniciado por zipcs Ver Mensaje
Eso esta funcionando bien, no puedo abrirla. En la lista me aparecen todos los productos, el problema esta al enviar el email que solo aparece el útlimo de la lista..
Corta antes del While más abajo..
¿Podrías mostrar el código completo para evitarnos las adivinanzas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 24/03/2015, 23:32
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Enviar variable con phpmailer

Ya te muestro el código, lo que logre ahora fue que se envíen todos los productos pero en emails separados..
Código:
    <p><strong>Lista de Productos a Cotizar.</strong></p>
    <table width="100%" border="0">
  <tr>
    <td>Producto</td>
    <td>Unidades</td>
    <td>Acciones</td>
</tr>
 <?php do { 
 ?>
  <tr> 
   <td><?php echo $body = ObtenerNombreProducto($row_DatosCot['idProducto']); ?></td>
    <td><?php echo $row_DatosCot['intCantidad']; ?>
    <?php $mail->Body = 'Producto: ' . $body . ' ' . 'Cantidad: ' . $row_DatosCot['intCantidad'];?>
      <form action="<?php echo $editFormAction; ?>" method="post" name="form2" id="form2">
        <table align="center">
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">Cantidad:</td>
            <td><input type="text" name="intCantidad" value="<?php echo htmlentities($row_DatosCot['intCantidad'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">&nbsp;</td>
            <td><input type="submit" value="Actualizar Cantidad" /></td>
          </tr>
        </table>
        <input type="hidden" name="MM_update" value="form2" />
        <input type="hidden" name="idProducto" value="<?php echo $row_DatosCot['idProducto']; ?>" />
      </form>
      <p>&nbsp;</p></td>
    <td><a href="pro_del.php?recordID=<?php echo $row_DatosCot['intContador']; ?>">Eliminar</a></td>
  </tr>      
<?php $mail->send();?>
  <?php } while ($row_DatosCot = mysql_fetch_assoc($DatosCot)); ?>
  </table>
&nbsp;</p>
<p> 
  </p>

<form id="form1" name="form1" method="post" action= >
  <input type="submit" name="button" id="button" value="Solicitar Cotización" />
</form>
<p></p>

<?php
mysql_free_result($DatosCot);
?>
  #8 (permalink)  
Antiguo 25/03/2015, 01:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar variable con phpmailer

1. Está ocurriendo exactamente lo mismo que acabo de decir, usas un do-while y creo que no entiendes el por qué.

La solución consiste en usar únicamente un while, consulta el manual.

2. Si envías el mail dentro del while ¿cuantas veces crees que se está enviando en realidad?

Usa tu sentido común, por lógica deberías enviar el mail después de listar todos los datos necesarios.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 25/03/2015, 10:11
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Enviar variable con phpmailer

Pero usando solo While me aparece en la lista solo un producto ..

Código:
    
<p><strong>Lista de Productos a Cotizar.</strong></p>
    <table width="100%" border="0">
  <tr>
    <td>Producto</td>
    <td>Unidades</td>
    <td>Acciones</td>
</tr>
 <?php while ($row_DatosCot = mysql_fetch_assoc($DatosCot)) { 
 ?>
  <tr> 
   <td><?php echo $body = ObtenerNombreProducto($row_DatosCot['idProducto']); ?></td>
    <td><?php echo $row_DatosCot['intCantidad']; ?>
    <?php $mail->Body = 'Producto: ' . $body . ' ' . 'Cantidad: ' . $row_DatosCot['intCantidad'];?>
      <form action="<?php echo $editFormAction; ?>" method="post" name="form2" id="form2">
        <table align="center">
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">Cantidad:</td>
            <td><input type="text" name="intCantidad" value="<?php echo htmlentities($row_DatosCot['intCantidad'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">&nbsp;</td>
            <td><input type="submit" value="Actualizar Cantidad" /></td>
          </tr>
        </table>
        <input type="hidden" name="MM_update" value="form2" />
        <input type="hidden" name="idProducto" value="<?php echo $row_DatosCot['idProducto']; ?>" />
      </form>
      <p>&nbsp;</p></td>
    <td><a href="pro_del.php?recordID=<?php echo $row_DatosCot['intContador']; ?>">Eliminar</a></td>
  </tr>      
<?php $mail->send();?>
  <?php } //while ($row_DatosCot = mysql_fetch_assoc($DatosCot));?>
  </table>
&nbsp;</p>
<p> 
  </p>

<form id="form1" name="form1" method="post" action= >
  <input type="submit" name="button" id="button" value="Solicitar Cotización" />
</form>
<p></p>
<?php
mysql_free_result($DatosCot);
?>
  #10 (permalink)  
Antiguo 25/03/2015, 11:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar variable con phpmailer

Pues sigues sin resolver el punto 2 que te he mencionado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 25/03/2015, 11:22
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Enviar variable con phpmailer

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues sigues sin resolver el punto 2 que te he mencionado.
No seas malo, dale una malo y dile exactamente qué tiene que hacer...
Quizá así aprenda.
__________________
¿Te sirvió la respuesta? Deja un +1
  #12 (permalink)  
Antiguo 25/03/2015, 11:28
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Enviar variable con phpmailer

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues sigues sin resolver el punto 2 que te he mencionado.
Pero si envío el mail fuera del While, solo me envía a mi correo el último producto de la lista, dentro del while me manda todos los productos pero por mails separados..

Última edición por zipcs; 25/03/2015 a las 11:34
  #13 (permalink)  
Antiguo 25/03/2015, 12:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar variable con phpmailer

Cita:
Iniciado por zipcs Ver Mensaje
Pero si envío el mail fuera del While, solo me envía a mi correo el último producto de la lista, dentro del while me manda todos los productos pero por mails separados..
Precisamente eso es parte del problema.

Lo correcto es que acumules el HTML de cada uno de los elementos dentro del while, y cuando tengas todo entonces hace el envío.

¿Qué parte es la que no entiendes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 25/03/2015, 12:30
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Enviar variable con phpmailer

Cita:
Iniciado por pateketrueke Ver Mensaje
Lo correcto es que acumules el HTML de cada uno de los elementos dentro del while, y cuando tengas todo entonces hace el envío.
Como acumularía el html de cada uno?..
Disculpas por la ignorancia hago lo posible y gracias por esta ayudándome..

Etiquetas: mysql, phpmailer, variable
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 08:29.