Foros del Web » Programando para Internet » PHP »

Enviar un POST por email con un array de campos dinámico

Estas en el tema de Enviar un POST por email con un array de campos dinámico en el foro de PHP en Foros del Web. Hola gent Ante todo muchas gracias por pasar a leer este post un minutillo Resulta que tengo un formulario que crea campos dinámicos, uno modelo[] ...
  #1 (permalink)  
Antiguo 26/05/2014, 13:08
 
Fecha de Ingreso: mayo-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Enviar un POST por email con un array de campos dinámico

Hola gent

Ante todo muchas gracias por pasar a leer este post un minutillo

Resulta que tengo un formulario que crea campos dinámicos, uno modelo[] y otro matricula []. Aqui os paso el codigo.
Código PHP:
<!DOCTYPE html>
<
head>
<
title>Formulario Registro Clientes de Empresa</title>
<
link rel="stylesheet" type="text/css" href="./css/estilo.css" media="all"/>

<
script src="./includes/javascript/jquery.js" type="text/javascript"></script> 
<script language="javascript">
      function marcado(){
      if (document.form.acept.checked) {
      document.form.submit(); 
       }
      else{
      alert("Debes aceptar las condiciones de uso");
      document.form.acept.focus();
          return false; 
      }
}
</script> 
<script type="text/javascript" language="javascript">
var posicionCampo = 1;
function agregarUsuario() {
    nuevaFila = document.getElementById("tablaUsuarios").insertRow(-1);
    nuevaFila.id = posicionCampo;
    nuevaCelda = nuevaFila.insertCell(-1);
    nuevaCelda.innerHTML = "<td><label>Modelo:</label></td><td><input type='text' placeholder='Modelo' id='modelo[" + posicionCampo + "]' name='modelo[" + posicionCampo + "]'></td>";
    nuevaCelda = nuevaFila.insertCell(-1);
    nuevaCelda.innerHTML = "<td><label>Matr&iacute;cula:</label></td><td><input type='text' placeholder='Matr&iacute;cula' size='10' id='matr[" + posicionCampo + "]' name='matr[" + posicionCampo + "]'></td>";
    nuevaCelda = nuevaFila.insertCell(-1);
    nuevaCelda.innerHTML = "<td><input type='button' value='Eliminar' onclick='eliminarUsuario(this)'></td>";
    posicionCampo++;
}
function eliminarUsuario(obj) {
    var oTr = obj;
    while(oTr.nodeName.toLowerCase() != 'tr') {
        oTr=oTr.parentNode;
    }
    var root = oTr.parentNode;
    root.removeChild(oTr);
}
</script>
</head>
<body>
   <header>
    
    <form name="form" action="sendb.php" method="post">
<table width="35%" align="center" border="0" cellspacing="0" cellpadding="0">
       <tr>
         <td><label for="empresa">Raz&oacute;n Social.:</label></td>   
           <td colspan="3"><input class="celda" type="text" placeholder="Nombre completo de la sociedad" name="empresa" id="empresa"  required></td>
      </tr> 
       <tr>
       <td><label for="pob">Poblaci&oacute;n:</label></td>
        <td><input type="text" class="celda" name="pob" id="pob" maxlength="50" ><br/></td>
        </tr>
        <tr>
        <td colspan="4"><table id="tablaUsuarios" width="100%"></table></td>
        </tr>
        <tr>
         <td colspan="3"> <input type="button" id="btnAdd" value="Pulse aqu&iacute; para a&ntilde;adir nuevos veh&iacute;culos"/ onClick="agregarUsuario();leer()"></td>
            <td><input type="hidden" name="ntotal" id="ntotal" value="" /></td>
      </tr>
    <tr>
    <td colspan="4"><input type="checkbox" name="acept" id="acept" value="" maxlength="50"  ><a href="condiciones.html" target="_blank">He le&iacute;do y estoy de acuerdo con las condiciones de uso.</a><br/></td></tr>
    <tr>
       <td colspan="4" align="center"><input type="submit" value="Enviar">
        <input type="submit" onClick=" window.location.href='alta.html'"  value="Volver atr&aacute;s">
       </td>
   </tr>
   </table></form>
</div>
</html> 
Todo esto se envia mediante un POST a un php:
Código PHP:
<?php
$empresa 
$_POST['empresa'];
$pob $_POST['pob'];
foreach (
$_POST['modelo'] as $value) { 
   
   }
foreach (
$_POST['matr'] as $matr) { 
   
   }   
   
echo 
"   
<ul>
 <li><u>Nombre de la empresa:</u> '.$empresa.'
 <li><u>Poblacion:</u> '.$pob.'
 <li><u>Modelo: </u>'.$value.'
 <li><u>Matricula: </u>'.$matr.'"

?>
Y solo me sale 1 de los campos de matricula y modelo.
Esto lo quiero implementar luego con PHPMAILER para mandarlo x correo, pero tendrían que salir todos los modelos y matriculas de los coches mas o menos así:
$matricula1 = $_POST['matr1'] y $modelo1= $_POST['modelo1'] de forma automática, ya que no se cuantos coches tiene cada persona.....pero no consigo hacerlo, como mucho he conseguido sacar el último valor con el que poder manejarme

De todas formas si conoceis algun metodo mejor o tal...os lo agradeceria enormemente

Muchisimas gracias por la atención y siento ser tan novato jeje
  #2 (permalink)  
Antiguo 27/05/2014, 00:33
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Enviar un POST por email con un array de campos dinámico

Código PHP:
Ver original
  1. <?php    
  2. echo '    
  3. <ul>
  4. <li><u>Nombre de la empresa:</u> '.$_POST['empresa'].'</li>
  5. <li><u>Poblacion:</u> '.$_POST['pob'].'</li>
  6. <li><u>Modelo: </u>'.implode(", ", $_POST['modelo']).'</li>
  7. <li><u>Matricula: </u>'.implode(", ", $_POST['matr']).'</li>
  8. </ul>';
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 27/05/2014, 01:12
 
Fecha de Ingreso: mayo-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Respuesta: Enviar un POST por email con un array de campos dinámico

Estoy mirando que con la función array_combine he conseguido pasar de:
Código PHP:
modelo[0] = volvomodelo[1] = opel, ... y matricula[0] = 1234 ABC,  matricula[1] = 1234 BCD 
a

Código PHP:
 COCHE[0] = volvo => 1234 ABCCOCHE[1] = opel => 1234 BCD
Ahora lo unico que me hace falta es la opción para que cada key y valor salga de modo que quede algo tipo:
Código PHP:
 CocheVolvo -> 1234 ABCOPEL -> 1234BCD; .... 
Gracias de nuevo!

Última edición por emuhell; 27/05/2014 a las 10:32
  #4 (permalink)  
Antiguo 27/05/2014, 23:00
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Enviar un POST por email con un array de campos dinámico

Dices que es código php, pero esa sintaxis no es de código php, desconozco que lenguaje, es por lo que no puedo hacer una equivalencia para ayudarte. Lo siento.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #5 (permalink)  
Antiguo 28/05/2014, 01:54
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar un POST por email con un array de campos dinámico

para recoger los coches ya ordenados puedes hacer algo asi:
Código PHP:
Ver original
  1. <?php
  2. if ($_POST)
  3.     var_dump(array_combine($_POST['matricula'], $_POST['modelo']));
  4. ?>
  5.  
  6. <form method="post">
  7.     <input type="text" placeholder="Modelo" name="modelo[]" />
  8.     <input type="text" placeholder="Matrícula" name="matricula[]" />
  9.     <input type="text" placeholder="Modelo" name="modelo[]" />
  10.     <input type="text" placeholder="Matrícula" name="matricula[]" />
  11.     <button type="submit">Enviar</button>
  12. </form>

como verás el índice es la matrícula, nunca va a haber 2 matrículas iguales, sin embargo es fácil que haya modelos iguales y si eliges el modelo como key, machacarás todos los anteriores, un índice debe ser siempre único.
  #6 (permalink)  
Antiguo 28/05/2014, 06:07
 
Fecha de Ingreso: mayo-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Respuesta: Enviar un POST por email con un array de campos dinámico

Muchas gracias a todos por el interés.

Al final lo que he hecho ha sido cambiar un poco el texto HTML
Código:
 nuevaCelda.innerHTML = "<td><label>Modelo:</label></td><td><input type='text' placeholder='Modelo' name='coche[" + posicionCampo + "][modelo]'></td>";
    nuevaCelda = nuevaFila.insertCell(-1);
    nuevaCelda.innerHTML = "<td><label>Matr&iacute;cula:</label></td><td><input type='text' placeholder='Matr&iacute;cula' size='10' name='coche[" + posicionCampo + "][matricula]'></td>";
de manera que ahora se genera un array coche con dos keys :)

y haciendo un foreach:
Código:
foreach ($_POST['coche'] as $posicionCampo => $row){
        echo $row['modelo'] . ' con matricula '  .  $row['matricula']."; ";
}
Ya me sale todo tal que Renault con matricula 1234ABC; etc...

Lo unico que me hace falta para poder meter todo esto en phpmailer, es meter esca cadena en una variable, ya que para enviarlo con la variable body creo q tiene q ser así.

Saludos y gracias!

Etiquetas: campos, email, formulario, html, post, registro, tabla, usuarios
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:56.