Ver Mensaje Individual
  #13 (permalink)  
Antiguo 21/05/2011, 06:15
Avatar de luison99
luison99
 
Fecha de Ingreso: mayo-2011
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema al recoger con $_POST los campos añadidos dinámicamente

Cita:
Iniciado por alexg88 Ver Mensaje
Me parece que te estás liando tú solito. En el código que has puesto, creas los elementos dentro del formulario. Yo he probado tu código y te digo que si envía los parámetros, el problema es que no los recibes bien como ya he comentado.
Alexg88, gracias por los comentarios, llevas razón en eso, pero no es un problema de recibir los parámetros por array, de hecho ya había probado como tú indicas y tampoco funcionaba. El origen del problema radica en que en el formulario había 2 tablas anidadas, es decir una tabla principal englobando todo el formulario y dentro de esta una subtabla para la parte dinámica , sobre la que actúo añadiendo elementos en la función de manera dinámica. Bien pues esto causa un problema a la hora de registrar los valores en el formulario.

Eliminando la tabla principal he conseguido resolver el problema. De hecho ahora me funciona con ambos métodos: con createElement() + appendChild(), o bien usando td.innerHTML.

Te envío el código nuevo que me funciona:

<p align='center' class='Estilo3'>Por favor, añada los siguientes campos para la nueva pista y pulse aceptar:<br/><br/></p>
<form id='addpista' action='gestion_pistas.php?accion=add' METHOD = 'post' target='_self' onsubmit='return chequear_formulario(this)'>
<div align='center'><table>
<tr><td>Nombre:</td><td><input type='text' size='60' id='nombre_pista' name='nombre_pista' value=''></td></tr>
<tr><td>Descripción:</td><td><input type='text' size='60' id='descr_pista' name='descr_pista' value=''></td></tr>
<tr></tr><tr></tr>

<tr><td><h3>Horario de la pista:</h3></td><td></td></tr>
</table>
<table id='tabla' width='50%' border='2' align='center' cellpadding='4' cellspacing='0'>
<tr><th>Slot</th><th>Hora inicio</th><th>Hora fin</th><th>Duracion(m)</th></tr>

<tr><td align='center'><input type='text' size='2' id='turno' name='turno1' value='1' readonly></td>
<td align='center'><input type='text' size='5' id='horaini1' name='horaini1' value='08:00h' readonly>&nbsp&nbsp<input type='button' value='+' onclick='inc_horaini(1);'>&nbsp&nbsp<input type='button' value='-' onclick='dec_horaini(1);'></td>
<td align='center'><input type='text' size='5' id='horafin1' name='horafin1' value='09:00h' readonly>&nbsp&nbsp<input type='button' value='+' onclick='inc_horafin(1);'>&nbsp&nbsp<input type='button' value='-' onclick='dec_horafin(1);'></td>
<td align='center'><input type='text' size='5' id='duracion1' name='duracion1' value='60' readonly>&nbsp&nbsp<input type='button' value='+' onclick='inc_duracion(1);'>&nbsp&nbsp<input type='button' value='-' onclick='dec_duracion(1);'></td>
</tr>
</table>
<tr><td><input type='button' id='addslot' value='+ slot' onclick=\"add_slot()\"></td><td><input type='button' id='addslot' value='- slot' onclick=\"del_slot()\"></td></tr>

<br><br>
<tr><td><input type='submit' id='addok' value='Aceptar'></td><td><input type='button' value='Cancelar' onclick='Javascript:history.back();'></td></tr>
</form>


Y la función para añadir filas (slots):

var contslots = 1;

function add_slot() {
var turno_ant=document.getElementById('turno').value;
var tabla = document.getElementById("tabla");


var hi=document.getElementById('horaini'+contslots).va lue;
var hf=document.getElementById('horafin'+contslots).va lue;
var dur=document.getElementById('duracion'+contslots). value;
var hi_nextslot=hf;
var hf_nextslot=hi_nextslot+dur;

dur= 1*dur
hora = 1*(hi_nextslot.substr(0,2))
minuto = 1*(hi_nextslot.substr(3,2)) + dur

while (minuto >= 60) {
hora++;
minuto -=60;
}
hora = hora.toString();
minuto = minuto.toString();


hf_nextslot = (hora.length==1 ? "0"+hora:hora) + ":" + (minuto.length==1 ? "0"+minuto:minuto) + "h";

contslots++;

tr = tabla.insertRow(tabla.rows.length);
tr.align="center";
td = tr.insertCell(tr.cells.length);

td.innerHTML = "<input type='text' size='2' id='turno' name='turno" + contslots + "' value='" + contslots + "' readonly>";
td = tr.insertCell(tr.cells.length);

td.innerHTML = "<input type='text' size='5' id='horaini" + contslots + "' name='horaini" + contslots + "' value='" + hi_nextslot + "' readonly>&nbsp&nbsp<input type='button' value='+' onclick='inc_horaini(" + contslots + ");'>&nbsp&nbsp<input type='button' value='-' onclick='dec_horaini(" + contslots + ");'>";
td = tr.insertCell(tr.cells.length);

td.innerHTML = "<input type='text' size='5' id='horafin" + contslots + "' name='horafin" + contslots + "' value='" + hf_nextslot + "' readonly>&nbsp&nbsp<input type='button' value='+' onclick='inc_horafin(" + contslots + ");'>&nbsp&nbsp<input type='button' value='-' onclick='dec_horafin(" + contslots + ");'>";
td = tr.insertCell(tr.cells.length);

td.innerHTML = "<input type='text' size='5' id='duracion" + contslots + "' name='duracion" + contslots + "' value='" + dur + "' readonly>&nbsp&nbsp<input type='button' value='+' onclick='inc_duracion(" + contslots + ");'>&nbsp&nbsp<input type='button' value='-' onclick='dec_duracion(" + contslots + ");'>";
}