Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2008, 14:30
shebita2003
 
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