Foros del Web » Programando para Internet » PHP »

envio por mail de formulario dinamico

Estas en el tema de envio por mail de formulario dinamico en el foro de PHP en Foros del Web. Hola todos como estan? Bueno soy nuevo en el foro, pero los leo hace mucho ya que muchas veces me ha sido muy util este ...
  #1 (permalink)  
Antiguo 26/05/2008, 14:30
 
Fecha de Ingreso: mayo-2008
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Exclamación envio por mail de formulario dinamico

Hola todos como estan?

Bueno soy nuevo en el foro, pero los leo hace mucho ya que muchas veces me ha sido muy util este foro, pero ahora necesitaría una ayuda más personalizada ya que no encontre solucion en la web

Estoy generando un formulario dinamico en php, la situacion es la siguiente

la pagina contiene para generar un presupuesto y enviarlo por mail, los campos son 1 select 2 input text 3 input text y el codigo es el siguiente


Código PHP:
<form enctype="multipart/form-data" method="POST" action="presupuestosrecibidos.php" name="presupuestos">
      
      <
table border="0" cellspacing="2" cellpadding="0" id="formulariopresupuestos">
  <
tr>
    <
td><label>Nombre</label><input name="nombre" type="text" /></td>
    <
td><label>Tel&eacute;fono</label>
      <
input name="telefono" type="text" /></td>
  </
tr>
  <
tr>
    <
td><label>Apellido</label><input name="apellido" type="text" /></td>
    <
td><label>Provincia</label><input name="provincia" type="text" /></td>
  </
tr>
  <
tr>
    <
td><label>Empresa</label><input name="empresa" type="text" /></td>
    <
td><label>Email</label><input name="email" type="text" /></td>
  </
tr>
</
table>

        <
table border="0" cellspacing="2" cellpadding="0">
          <
tbody id="tabla">
          
          <
tr id="descripcion">
            <
td class="celda">Artículo</td>
            <
td align="left" class="celda">Cantidad</td>
            <
td class="celda">Especificación - <span style="font-style: italic" class="colorverde">Opcional</span></td>
          </
tr>
          <
tr>
            <
td class="celda"><select name="ARTICULO&nbsp;1" >
              <
option value="0" selected>Seleccione... </option>
              <
option value="1"></option>
              <
option value="2">...
            </
select></td>
            <
td class="celda"><input name="cantidad1" type="text" id="cantidad"/></td>
            <
td class="celda"><input name="comentario1" type="text" id="comentario"/></td>
          </
tr>
          <
tr>
            <
td class="celda"><select name="ARTICULO&nbsp;2" >
                <
option value="0" selected>Seleccione...
                <
option value="1">...
              </
select>            </td>
            <
td class="celda"><input name="cantidad2" type="text" id="cantidad"/></td>
            <
td class="celda"><input name="comentario2" type="text"  id="comentario"/></td>
          </
tr>
          <
tr>
            <
td class="celda"><select name="ARTICULO&nbsp;3" >
                <
option value="0" selected>Seleccione...
                <
option value="1">...
              </
select>            </td>
            <
td class="celda"><input name="cantidad3" type="text" id="cantidad"/></td>
            <
td class="celda"><input name="comentario3" type="text"  id="comentario"/></td>
          </
tr>
          <
tr id="fila">
            <
td colspan="3"></td>
            </
tbody>
        </
table
Ese es el php, que a su vez (para que el usuario apretando el boton ' agregar..' pueda ingresar más filas de articulos) tiene en el header el siguiente javascript:

Código PHP:
function Agregar(){
  
obj=document.getElementById('tabla');
  
f=document.getElementById('fila');
  
Num++;
  
elTr=document.createElement('tr');
  
elTd=document.createElement('td');
  
elTd.className="celda";
  
elem=document.createElement('select');
  
elem.name='ARTICULO&nbsp;'+Num;
  var 
op0 = new Option("Seleccione...""0");
  var 
op1 = new Option("1""1");
  var 
op2 = new Option("2""2");
  var 
op3 = new Option("3""3");
  var 
op4 = new Option("4""4");
  var 
op5 = new Option("5""5");
  var 
op6 = new Option("6""6");
  var 
op7 = new Option("7""7");
  var 
op8 = new Option("8""8");
  
elem.appendChild(op0);
  
elem.appendChild(op1);
  
elem.appendChild(op2);
  
elem.appendChild(op3);
  
elem.appendChild(op4);
  
elem.appendChild(op5);
  
elem.appendChild(op6);
  
elem.appendChild(op7);
  
elem.appendChild(op8);
  
elTd.appendChild(elem);
  
  
  
  
elTd2=document.createElement('td');
  
elTd2.className="celda";
  
txt=document.createElement('input');
  
txt.name='cantidad'+Num;
  
txt.type='text';
  
txt.id='cantidad';
  
elTd2.appendChild(txt);
  
  
elTd3=document.createElement('td');
  
elTd3.className="celda";
  
txt2=document.createElement('input');
  
txt2.name='comentario'+Num;
  
txt2.type='text';
  
txt2.id='comentario';
  
elTd3.appendChild(txt2);
  
  
  
elTr.appendChild(elTd);
  
elTr.appendChild(elTd2);
  
elTr.appendChild(elTd3);
  
obj.insertBefore(elTr,f)
}
</script> 
Bueno, este formulario dinamico yo preciso enviarlo por mail por lo que en la pagina que recibe el formulario tengo una funcion que reconoce todos los campos y crea una tabla. el script es el siguiente

Código PHP:
<?php
if($_POST['enviar']=="Enviar"){

function 
generartabla() {
    
            echo 
"<table style='float:none;width:200px;margin-top:50px;margin-left:20px;'>";
            while(list(
$key$Value) = each($_POST)){
                if (
$key != 'enviar'){
                    if (
$key == 'email'){
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                    echo 
"</tr>";
                    

                    }else{
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"</tr>";
                    }                
                } else {
                echo 
"<tr>";
                echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                echo 
"</tr>";
                echo 
"</table>";
                }
            }
        
       
}
Hasta aca todo funciona perfectamente, pero tengo un problema a la hora de enviar esa funcion por mail, ya que no puedo de ninguna manera

trate de crear una variable que actuase como funcion, ej:

$tabla='generartabla';

y luego en el codigo que envia el mail tengo ...<td>". $tabla() . "</td>...

o tambien trate de meter la funcion directamente en el codigo que se envia como cuerpo de mail

...<td>". generartabla() . "</td>...

Pero cuando hago esas cosas, la pagina que recibe el formulario es la que muestra la tabla, y al mail llega el codigo vacío es decir
...<td></td>...

El problema que tengo es eso, el de enviar el resultado de mi funcion por mail, hice la prueba de crear una variable con cualquire texto $probando="funciona" e inclui esa variable en el script del cuerpo de mensaje (para chequear que no estuviera mal el script que envia el mail) y funciona perfecto es decir, recibo un mail con el contenido de esa variable
...<td>funciona</td>...

Pido disculpas por la extensión del mail, ya se que es muy largo, pero si no incluia todos mis scripts no iban a tener la info suficiente de lo que estoy haciendo.

Para lo que no leyeron todo el post, hago un recuento

pagina 1: genero un formulario con campos establecidos y con la opcion de que el usuario mediante un boton agregue más campos

pagina2: recibo el formulario, creo una funcion que lee todas las variables y crea una tabla con los resultados y -el problema- no puedo enviar el resultado de la funcion por mail


Vale la pena aclarar que no soy programador, sino diseñador que trata de implementar todas las herramientas a su alcance para poder mejorar la funcionalidad de los trabajos, por lo que si cometí un 'crimen' en alguno de estos código, pido disculpas jajaja

desde ya muchas gracias y felicito al que leyo todo mi post!! jajajajaja

saludos
sebastian
  #2 (permalink)  
Antiguo 26/05/2008, 14:55
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: envio por mail de formulario dinamico

Hola shebita2003,

Podrias poner el código ya agregandole lo que necesitas para el envio del mail? ya que en si si haces algo así:
Código PHP:
<?php
if($_POST['enviar']=="Enviar"){

function 
generartabla() {
    
            echo 
"<table style='float:none;width:200px;margin-top:50px;margin-left:20px;'>";
            while(list(
$key$Value) = each($_POST)){
                if (
$key != 'enviar'){
                    if (
$key == 'email'){
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                    echo 
"</tr>";
                    

                    }else{
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"</tr>";
                    }                
                } else {
                echo 
"<tr>";
                echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                echo 
"</tr>";
                echo 
"</table>";
                }
            }
         
       
$mail generartabla();  
       
mail$to$subject$mail$headers );

?>
Te debería de funcionar correctamente.

Saludos.
  #3 (permalink)  
Antiguo 26/05/2008, 15:05
 
Fecha de Ingreso: mayo-2008
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: envio por mail de formulario dinamico

gracias gator por contestar, estoy usando el envio de mail por smtp, para generar un mail con formato html, el código es el siguiente:

Código PHP:
<?php
if($_POST['enviar']=="Enviar"){

function 
generartabla() {
    
            echo 
"<table style='float:none;width:200px;margin-top:50px;margin-left:20px;'>";
            while(list(
$key$Value) = each($_POST)){
                if (
$key != 'enviar'){
                    if (
$key == 'email'){
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                    echo 
"</tr>";
                    

                    }else{
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"</tr>";
                    }                
                } else {
                echo 
"<tr>";
                echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                echo 
"</tr>";
                echo 
"</table>";
                }
            }
        
       
}

$correo="<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>Untitled Document</title>
</head>

<body>
<table>
  
  <tr>
    <td>"
generartabla() ."</td>
  </tr>
</table>
</body>
</html>"
;

require 
"includes/class.phpmailer.php";

  
$mail = new phpmailer();

  
$mail->PluginDir "includes/";

  
$mail->Mailer "mail";

  
$mail->Host "smtp.xxx.com.ar";

  
$mail->SMTPAuth true;

  
$mail->Username "[email protected]"
  
$mail->Password "xxxx";

  
$mail->From "[email protected]";
  
$mail->FromName "Sitio Web";

  
$mail->Timeout=30;

  
$mail->AddAddress("[email protected]");

  
$mail->Subject "Presupuesto Online";
  
$mail->Body $correo;

  
$mail->AltBody "Mail en formato HTML";

  
$exito $mail->Send();

  
$intentos=1
  while ((!
$exito) && ($intentos 5)) {
    
sleep(5);
         
//echo $mail->ErrorInfo;
         
$exito $mail->Send();
         
$intentos=$intentos+1;    
    
   }
}
Y ACA EMPIEZA EL CÓDIGO DE LA PAGINA QUE RECIBE EL FORMULARIO, CON UNA RESPUESTA COMO "SU PRESUPUESTO FUE ENVIADO, EN BREVE NOS COMUNICAREMOS CON USTED, MUCHAS GRACIA"
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html ...
  #4 (permalink)  
Antiguo 26/05/2008, 15:18
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: envio por mail de formulario dinamico

Hola shebita2003,

Prueba este código:
Código PHP:
<?php
if($_POST['enviar']=="Enviar") {
    function 
generartabla() {
            
ob_start();
        echo 
"<table style='float:none;width:200px;margin-top:50px;margin-left:20px;'>";
        while(list(
$key$Value) = each($_POST)){
            if (
$key != 'enviar'){
                if (
$key == 'email'){
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                    echo 
"</tr>";
                } else {
                    echo 
"<tr>";
                    echo 
"<td style='font-weight:bold;'>"$key ." : </td><td>"$Value "</td>";
                    echo 
"</tr>";
                    echo 
"</tr>";
                }                
            } else {
                echo 
"<tr>";
                echo 
"<td style='font-weight:bold;'>&nbsp;</td><td>&nbsp;</td>";
                echo 
"</tr>";
                echo 
"</table>";
            }
        }
        
        return 
ob_get_clean();
    }

$correo="<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>Untitled Document</title>
</head>

<body>
<table>
  
  <tr>
    <td>"
generartabla() ."</td>
  </tr>
</table>
</body>
</html>"
;

require 
"includes/class.phpmailer.php";

  
$mail = new phpmailer();

  
$mail->PluginDir "includes/";

  
$mail->Mailer "mail";

  
$mail->Host "smtp.xxx.com.ar";

  
$mail->SMTPAuth true;

  
$mail->Username "[email protected]"
  
$mail->Password "xxxx";

  
$mail->From "[email protected]";
  
$mail->FromName "Sitio Web";

  
$mail->Timeout=30;

  
$mail->AddAddress("[email protected]");

  
$mail->Subject "Presupuesto Online";
  
$mail->Body $correo;

  
$mail->AltBody "Mail en formato HTML";

  
$exito $mail->Send();

  
$intentos=1
  while ((!
$exito) && ($intentos 5)) {
    
sleep(5);
         
//echo $mail->ErrorInfo;
         
$exito $mail->Send();
         
$intentos=$intentos+1;    
    
   }
}
  #5 (permalink)  
Antiguo 26/05/2008, 15:27
 
Fecha de Ingreso: mayo-2008
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: envio por mail de formulario dinamico

graciassssssssssssssssssssssssssssssssssssssssssss ssssssssssssssssssssssssssssssssssssssssss

no sabes cuanto te agradezco!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

iuuujjjuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
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 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:51.