Foros del Web » Programando para Internet » PHP »

envio formulario con controles dinamicos

Estas en el tema de envio formulario con controles dinamicos en el foro de PHP en Foros del Web. Hola a todos los usuarios, espero que me puedan ayudar Tengo un formulario donde creo filas de una tabla cuando pulsa un boton.Este es el ...
  #1 (permalink)  
Antiguo 13/05/2010, 13:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 64
Antigüedad: 14 años, 10 meses
Puntos: 1
Mensaje envio formulario con controles dinamicos

Hola a todos los usuarios, espero que me puedan ayudar
Tengo un formulario donde creo filas de una tabla cuando pulsa un boton.Este es el codigo;
var indiceFila=1;
function agregar()
{
if(indiceFila == 1)
document.getElementById('tabla').style.display="bl ock";

myNewRow = document.getElementById('tabla').insertRow(-1);
myNewRow.id=indiceFila;
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML="<td><textarea id='resp'+indiceFila name='resp'+indiceFila cols='50' rows='1'></textarea></td>";
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML="<td><select id='correcta'+indiceFila name='correcta'+indiceFila size='1'><option value='N'>No</option>"+
"<option value='S'>Si</option></select></td>";
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML="<td><select id='mov'+indiceFila name='mov'+indiceFila size='1' ><option value='S'>Si</option>"+
"<option value='N'>No</option></select></td>";
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML="<td><select id='pos'+indiceFila name='pos'+indiceFila size='1'><option value='1'>1</option>"+
"<option value='2'>2</option><option value='3'>3</option><option value='4'>4</option>"+
"</select></td>";
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML="<td><textarea id='explica_resp'+indiceFila name='explica_resp'+indiceFila cols='40' rows='1'></textarea></td>";
indiceFila++;
}


Esto lo hace bien, el problema es cuando envio el formulario porque intento recoger los datos de las filas con $_POST['resp'.$i]
ya que los id de cada elemento corresponde al numero de fila: resp1,resp2........Pero me dice que la variable no esta definida.
Si pongo $_POST['resp'] me da el ultimo valor introducido, pero necesito los anteriores tambien, es decir la ultima fila.

Hay alguna forma de recuperar todos los datos?? en javascript si los saco pero los necesito en php para guardarlos en la base de datos.
  #2 (permalink)  
Antiguo 13/05/2010, 13:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: envio formulario con controles dinamicos

La mejor forma de trabajar es indicando como array el nombre del campo y luego con PHP es mucho más fácil trabajarlo.
Código HTML:
Ver original
  1. <input type="text" name="nombre[]" />
  2. <input type="text" name="nombre[]" />
  3. <input type="text" name="nombre[]" />
  4. <input type="text" name="nombre[]" />
  5. <input type="text" name="nombre[]" />
  6. <input type="text" name="nombre[]" />
  7. <input type="text" name="nombre[]" />
Código PHP:
Ver original
  1. echo $_POST['nombre'][0];
  2. echo $_POST['nombre'][1];
  3. echo $_POST['nombre'][2];
  4. echo $_POST['nombre'][3];
  5. echo $_POST['nombre'][4];
  6. echo $_POST['nombre'][5];
  7. echo $_POST['nombre'][6];
En vez de hacerlo manualmente, puedes usar un bucle como foreach o for para recorrer los campos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 13/05/2010, 13:14
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: envio formulario con controles dinamicos

El valor de los atributos HTML van entre comillas tu estás haciendo esto

Código HTML:
name='resp'+indiceFila
lo que provoca que el name del elemento sea resp solamente

prueba esto

Código HTML:
name='resp+indiceFila'
Saludos!
  #4 (permalink)  
Antiguo 13/05/2010, 14:09
 
Fecha de Ingreso: mayo-2010
Mensajes: 39
Antigüedad: 13 años, 11 meses
Puntos: 0
Código PHP:
Ver original
  1. echo $_POST['nombre'][0];

lo mas simple y adecuado creo que es asi:

Código PHP:
Ver original
  1. echo $variable['nombre']['variable'];

o

Código PHP:
Ver original
  1. echo $variable[0];

o tambien

Código PHP:
Ver original
  1. echo $variable['nombre'];

sino

Código PHP:
Ver original
  1. echo $variable['nombre'][0];

soy principiante, corrijanme si me equivoco


sino tambien puedes crear un array bidimensional ...creo ¬¬

Cita:
tambien te recomiendo que leas... las faqs de php (o manuales en internet) como me hacia leer mi amigo
abimaelrc

Última edición por GatorV; 13/05/2010 a las 14:15
  #5 (permalink)  
Antiguo 14/05/2010, 04:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 64
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: envio formulario con controles dinamicos

Muchas gracias a todos.
La forma que me ha dicho abimaelrc me ha dado muy bien resultado.
  #6 (permalink)  
Antiguo 14/05/2010, 10:28
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: envio formulario con controles dinamicos

Buenas espero que no te hayas ido...
Porque me llevo un rato hacerlo...
Y espero que te sirva... Bueno a mi me sirvio:


Crea un archivo nombreBlabla.php


<script type="text/javascript" language="javascript">

var indiceFila=0;
//var newForm=0;

function agregar(){

myNewCell=document.getElementById('esperoForm');

//simplifique el codigo
//Y las variable se concatenan asi id='correcta"+indiceFila+"'

myNewCell.innerHTML+="<form action='' method='post'><table cellpadding='5' border='1'><tr><td><textarea id='resp"+indiceFila+"' name='resp"+indiceFila+"' cols='50' rows='1'></textarea></td></tr><tr><td><select id='correcta"+indiceFila+"' name='correcta"+indiceFila+"' size='1'><option value='N'>No</option>"+"<option value='S'>Si</option></select></td></tr><tr><td><select id='mov"+indiceFila+"' name='mov"+indiceFila+"' size='1' ><option value='S'>Si</option>"+"<option value='N'>No</option></select></td></tr><tr><td><select id='pos"+indiceFila+"' name='pos"+indiceFila+"' size='1'><option value='1'>1</option>"+"<option value='2'>2</option><option value='3'>3</option><option value='4'>4</option>"+"</select></td></tr><td><textarea id='explica_resp"+indiceFila+"' name='explica_resp"+indiceFila+"' cols='40' rows='1'></textarea></td></tr></table><p /><input type='submit' name='boton"+indiceFila+"' value='Enviar"+indiceFila+"'></form>";

//
indiceFila++;

alert("VALOR DE indiceFila: "+indiceFila);


}

</script>

<body>

<div id="esperoForm"></div>


<p /><a onclick="agregar()" onmouseover="this.style.cursor='pointer'">Crear Formulario.</a><p />

<?

//de momento solo recoje los valores del primer formulario
//...tan solo reemplazar el 0 por 1 ... etc (o lo puedes hacer dinamicamente)


if($_POST['boton0']){

echo $_POST['resp0']."<br />";
echo $_POST['correcta0']."<br />";
echo $_POST['mov0']."<br />";
echo $_POST['pos0']."<br />";
echo $_POST['explica_resp0']."<br />";

}

?>

</body>

Etiquetas: controles, dinamicos, envio, formulario
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 1 personas




La zona horaria es GMT -6. Ahora son las 09:48.