Comento la situación: yo tengo un cuadro que se recupera por base de datos, al pie del cuadro hay un form para insertar una nueva entrada en ese cuadro, agrego también la opción de subir imágenes.
Lo que intento es que se puedan subir tantas imágenes como se quiera, con sólo apretar un botón agrego un nuevo input para file en el form ¿El problema? una vez enviado el formulario (se envía al mismo archivo .php) no me toma los input dinámicos.
Si agrego manualmente la cantidad de inputs que yo quiera me los toma todos, si utilizo los input generados por javascript, no me toma ninguno.
¿Alguna ayuda?
Código PHP :
<? include ("mysqlconn.php"); if(isset($_POST['add'])){ $padre = $_POST['parent']; $name = $_POST['name']; $procu = $_POST['procu']; $prove = $_POST['prove']; $foja = $_POST['foja']; $observ = $_POST['observ']; foreach($_FILES as $k => $file){ $images[$k]['tmp'] = $file['tmp_name']; $images[$k]['tipo'] = $file['type']; } if (empty($padre) || empty ($name) || empty($procu) || empty($observ)){ if(empty($procu)) $msg.= "<br />Debe ingresar fecha de procuración."; if(empty($observ)) $msg.= "<br />Debe ingresar observación."; }else{ $qry = "INSERT INTO cuadro VALUES (NULL,'".$prove."','".$procu."','".$observ."','".$foja."','".$padre."','".$name."','"; if(!empty($_FILES)){ foreach($images as $imagen){ $sep=explode('image/',$imagen['tipo']); $tipo=$sep[1]; if($tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "jpg" || $tipo == "jpeg"){ $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; $cad = ""; for($i=0;$i<6;$i++)$cad .= substr($str,rand(0,62),1); $cad .=time(); $destino='subidas'; $lugar=$destino.'/'.$cad.'.'.$tipo; move_uploaded_file($imagen['tmp'],$lugar); $qry .= '<a href="'.$lugar.'" target="_blank"><img src="images/img.png" /></a>'; } } } $qry .= "')"; $rs = mysql_query($qry); echo $qry; } } $cau = $_GET['cau']; $qry_cuad = "SELECT * FROM cuadro WHERE parent=".$cau." ORDER BY id DESC"; $rs_cuad = mysql_query($qry_cuad); $rw_cuad = mysql_num_rows($rs_cuad); $td = 1; while ($cuad = mysql_fetch_object($rs_cuad)) { $cuadro[$cuad->id]['parent'] = $cuad->parent; $cuadro[$cuad->id]['fecha_prov'] = $cuad->fecha_prov; $cuadro[$cuad->id]['fecha_procu'] = $cuad->fecha_procu; $cuadro[$cuad->id]['observ'] = $cuad->observ; $cuadro[$cuad->id]['foja'] = $cuad->foja; $cuadro[$cuad->id]['name'] = $cuad->name; $cuadro[$cuad->id]['image'] = $cuad->image; } echo '<table id="cuadro"><tr class="thead"><td>Escrito<br />por:</td><td>Fecha de<br />procuracion:</td><td>Fecha de<br />proveido:</td><td>Foja:</td><td>Imagen:</td><td>Observaciones:</td></td>'; if ($rw_cuad != 0){ foreach ($cuadro as $cu){ $clase = ($td%2 === 0 ? 'uno' : 'dos'); echo '<tr class="',$clase,'"><td class="centrar">',$cu['name'],'</td><td class="centrar">',$cu['fecha_procu'],'</td><td class="centrar">',$cu['fecha_prov'],'</td><td class="centrar">',$cu['foja'],'</td><td>',$cu['image'],'</td><td>',$cu['observ'],'</td></tr>'; $td++; } } ?> <form id='formcuad' action='' method='POST' enctype='multipart/form-data'> <input type='hidden' name='add' /> <input type='hidden' name='parent' value='<?=$cau?>' /> <input type='hidden' name='parent' value='<?=$cau?>' /> <input type='hidden' name='name' value='<?=$_SESSION['name']?>' /> <tr> <td><input type='Submit' value='Guardar'></td> <td><input type='text' size='8' class="required" id="procu" name='procu' onkeyup=mascara(this,'/',patron,true) maxlength='10' /></td> <td><input type='text' size='8' name = 'prove' onkeyup=mascara(this,'/',patron,true) maxlength='10' /></td> <td><input type='text' size='4' name='foja' maxlength='4' /></td> <td><button type='button' id='addfile'>+</button></td> <td><textarea cols='30' rows='1' name='observ'></textarea></td> </tr> </table> <div id='files'> </div> </form> <?if(isset($msg))echo $msg,"<br />";?> <hr /> <a href="" class='display'>Mostrar liquidacion</a><br /> <hr /> <? $form_qry = "SELECT * FROM liquidacion WHERE parent=".$cau; $form = mysql_query($form_qry); $form_nr = mysql_num_rows($form); if($form_nr===0 || isset($_GET['edit'])){ include('formliq.php'); }else{ $liqui = mysql_fetch_assoc($form); $nombre = $liqui['nombre']; $tipo = $liqui['tipo']; $decreto = $liqui['decreto']; $rub = $liqui['rub']; $senten1 = $liqui['senten1']; $senten2 = $liqui['senten2']; $entrega = $liqui['entrega']; $confec = $liqui['confec']; $presenta = $liqui['presenta']; $impugnaciones = $liqui['impugnaciones']; include ('cuadroliq.php'); } mysql_close($conn); ?> <script type="text/javascript"> $().ready(function() { i=0; $(".display").toggle( function(){ $("#liquidacion").slideDown('slow'); }, function(){ $("#liquidacion").slideUp('slow'); } ); $("#addfile").click( function(){ i++; $("#files").append("<input type='file' name='img"+i+"' /><br/>"); }); }); </script>
En ese código no dejé ningún input-file, sólo se agregan mediante el botón +. Hay muchas cosas que no hacen a la cuestión, pero puse tooodo el archivo php para que sea más fácil encontrar errores (si encuentran errores o consejitos para mejorar el código, agradecido de los aportes).
En definitiva, el script en jQuery me agrega bien el html, pero php no los toma ¿ideas?
Saludos