Tengo un formulario dinamico de una factura, es decir, le puedo ir agregando o borrando filas, porque es una factura que puede tener n (que no se sabe cuantos son) items que describen a n articulos (1 fila para cada articulo).
el problema es que no se como capturar los datos, ya que cada fila esta compuesta por 3 columnas (referencia, cantidad, descripcion) y pues si son 3 filas cada variable (columna) tendria que tener 3 datos, el caso es que lo he intentado de todas las formas que he sabido e investigado, y siempre la variable queda con el valor de la ultima fila.
Siempre he visto que concatenanlas variables en el vector manualmente, es decir con una cantidad fija de filas, pero eso no me sirve, lo que busco es como hacerlo dinamicamente es decir, sin tener un numero fijo de filas.
Espero haberme hecho entender
aca esta el codigo del formulario y la lectura de variables que he intentado hacer
Código HTML:
<form method="post" action="Registrar_T.php" name="outputForm1"> <p> </p> <p> </p> <table id="tabla_1"> <thead> <tr> <th>Nº Referencia</th> <th>Cantidad</th> <th>Descripcion</th> <th> </th> </tr> </thead> <tbody> <!-- Fila escondida, que va a llegar con un base 0 --> <tr id="clonable" style="display:none"> <td><input type="text" name="referencia" /></td> <td><input type="text" name="cantidad" /></td> <td><input type="text" name="descripcion" /></td> <td><a href="#" onClick="borraFila(this.parentNode.parentNode)">Eliminar</a></td> </tr> <!-- Esta fila va a ser la clonada --> <tr id="tabla_1_fila_1"> <td><input type="text" name="referencia" /></td> <td><input type="text" name="cantidad" /></td> <td><input type="text" name="descripcion" /></td> <td><a href="#" onClick="borraFila(this.parentNode.parentNode)">Eliminar</a></td> </tr> </tbody> <tfoot> <tr> <td colspan="n"> <a href="javascript:agregaFila( 'tabla_1' );">Agregar Fila</a> </td> </tr> </tfoot> </table> <input type="submit" name="submit" value="Aceptar"> </form> <script> function agregaFila( id ) { var tabla = document.getElementById( id ); var tbody = document.getElementById( tabla.id ).tBodies[0]; var row = tbody.rows[0].cloneNode( true ); var id = 1; while( document.getElementById( tabla.id+'_fila_'+id ) ) { id++; } row.id = tabla.id+'_fila_'+id; row.style.display = ''; tbody.appendChild( row ); } function borraFila( fila ) { var id = fila.id; if( fila.parentNode.rows.length <= 2 ) return; document.getElementById( id ).parentNode.removeChild( document.getElementById(id) ); } </script>
Código PHP:
<?php
$f=count($_POST['referencia']);
for ($i=0;$i<count($_POST['referencia']);$i++) {
$cantidad = $_POST["referencia"][$i];
//echo $cantidad;
}
//POR EL MOMENTO ESTE CODIGO NO INTERESA YA QUE PARA descripcion Y cantidad EL PROCESO SERI EL MISMO
//$cantidad = $_POST['cantidad'];
//$descripcion = $_POST['descripcion'];
//SI SE PUEDE UN AYUDADITA ACA CON LA INSERCION
//$sql = "INSERT INTO demo(numfactura, descripcion, cantidad)
//VALUES ('$numfactura','$descripcion','$cantidad')";
//$result = mysql_query($sql);
?>