Foros del Web » Programando para Internet » PHP »

Recuperar inputs dinamicos

Estas en el tema de Recuperar inputs dinamicos en el foro de PHP en Foros del Web. hola a todos tengo una pagina que crea inputs fiels dinamicos para la subida de imagenes por parte del usuario este es mi codigo: @import ...
  #1 (permalink)  
Antiguo 21/10/2010, 12:13
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Recuperar inputs dinamicos

hola a todos tengo una pagina que crea inputs fiels dinamicos para la subida de imagenes por parte del usuario este es mi codigo:

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. num=0;
  4. function crear(obj) {
  5.  num++;
  6.  fi = document.getElementById('fiel'); // 1
  7.  contenedor = document.createElement('div'); // 2
  8.  contenedor.id = 'div'+num; // 3
  9.  fi.appendChild(contenedor); // 4
  10.  
  11.  ele = document.createElement('input'); // 5
  12.  ele.type = 'file'; // 6
  13.  ele.name = 'fil[]'; // 6
  14.  contenedor.appendChild(ele); // 7
  15.  
  16.  ele = document.createElement('input'); // 5
  17.  ele.type = 'button'; // 6
  18.  ele.value = 'Borrar'; // 8
  19.  ele.name = 'div'+num; // 8
  20.  ele.onclick = function () {borrar(this.name)} // 9
  21.  contenedor.appendChild(ele); // 7
  22. }
  23. function borrar(obj) {
  24.  fi = document.getElementById('fiel'); // 1
  25.  fi.removeChild(document.getElementById(obj)); // 10
  26. }
  27. -->
  28. </head>
  29. <form method="post" action="algo.php">
  30. <input type="hidden" name="id" value="<?php echo $_GET['id_revista']; ?>" />
  31. <fieldset id="fiel">
  32. <input type="button" value="Crear" onclick="crear(this)" />
  33. <input type="submit" name="mm" value="Aceptar" />
  34. </form>
  35. </body>

y trato de procesarlo en un archivo.php para subir todas las imagenes posibles ademas de insertar en la base de datos su nombre este es el codigo de dicha pagina:

Código PHP:
Ver original
  1. <?php
  2. include('candado.php');
  3. include('config.php');
  4. $id = $_POST['id']; //Recuperamos el id
  5. $total = count($_FILES['fil']['name']); //Total de inputs
  6. $sql = "select carpeta from revista where id_revista = $id";
  7. $done = mysql_query($sql,$conn) or die(mysql_error());
  8. $fila = mysql_fetch_array($done);
  9. $carpeta = $fila['carpeta'];
  10. $dir = "revista/".$carpeta."/";
  11. for($i=0;$i<$total;$i++){  
  12. move_uploaded_file ($_FILES['fil']['tmp_name'][$i], $dir.$_FILES['fil']['name'][$i]); //subimos las imagenes
  13. $query = "insert into agregados(imag,carpeta,id_rev) values('".$_FILES['fil']['name'][$i]."','$carpeta',$id)";
  14. mysql_query($query,$conn) or die(mysql_error());
  15. }
  16.  
  17.  
  18. ?>

Pero no me inserta en la base de datos ni sube las imagenes, gracias de antemano por la ayuda
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #2 (permalink)  
Antiguo 21/10/2010, 12:22
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Respuesta: Recuperar inputs dinamicos

Hola,
Por empezar te falta el enctype="multipart/form-data" dentro del form.
Probaste en cambiar el POST por GET? Así mirás bien que datos se te envian.

Si vas a trabajar con divs, te aconsejaria que lo hagas un poco más claro.

Código Javascript:
Ver original
  1. var fi = document.getElementById('fiel'); // 1
  2.            
  3.             var contenedor = document.createElement('div'); // 2
  4.             contenedor.id = 'div'+num; // 3
  5.  
  6.             var ele = document.createElement('div'); // 5
  7.             ele.innerHTML = "<input type='file' id='fil'>";
  8.             contenedor.appendChild(ele); // 7            
  9.            
  10.             fi.appendChild(contenedor); // 4

Yo lo haría de ésa forma, queda todo un poco más claro, pero es cuestiones de gustos.
Hace lo que te dije anteriormente para ver que pasa.

Saludos.
__________________
Freelance - Aplicaciones Web
  #3 (permalink)  
Antiguo 21/10/2010, 12:39
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Recuperar inputs dinamicos

ya he puesto el enctype en el formulario pero lo extraño es que no me recupera el $_FILES['fil']['name'] del arreglo, además de ponerle un echo a total y me muestra cero y sigue sin insertar o subir las imagenes aqui les dejo como he cambiado el codigo:

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. num=0;
  4. function crear(obj) {
  5.  num++;
  6.  fi = document.getElementById('fiel'); // 1
  7.  contenedor = document.createElement('div'); // 2
  8.  contenedor.id = 'div'+num; // 3
  9.  fi.appendChild(contenedor); // 4
  10.  
  11.  ele = document.createElement('input'); // 5
  12.  ele.type = 'file'; // 6
  13.  ele.name = 'fil'+num; // 6
  14.  contenedor.appendChild(ele); // 7
  15.  
  16.  ele = document.createElement('input'); // 5
  17.  ele.type = 'button'; // 6
  18.  ele.value = 'Borrar'; // 8
  19.  ele.name = 'div'+num; // 8
  20.  ele.onclick = function () {borrar(this.name)} // 9
  21.  contenedor.appendChild(ele); // 7
  22. }
  23. function borrar(obj) {
  24.  fi = document.getElementById('fiel'); // 1
  25.  fi.removeChild(document.getElementById(obj)); // 10
  26. }
  27. -->
  28. </head>
  29. <form method="post" action="mas.php" enctype="multipart/form-data">
  30. <input type="hidden" name="id" value="<?php echo $_GET['id_revista']; ?>" />
  31. <fieldset id="fiel">
  32. <input type="button" value="Crear" onclick="crear(this)" />
  33. <input type="submit" name="mm" value="Aceptar" />
  34. </form>

PHP
Código PHP:
Ver original
  1. <?php
  2. include('candado.php');
  3. include('config.php');
  4. $id = $_POST['id']; //Recuperamos el id
  5. $total = count($_FILES['fil']['name']); //Total de inputs
  6. echo $total;
  7. echo $_FILES['fil']['name'];
  8. $sql = "select carpeta from revista where id_revista = $id";
  9. $done = mysql_query($sql,$conn) or die(mysql_error());
  10. $fila = mysql_fetch_array($done);
  11. $carpeta = $fila['carpeta'];
  12. $dir = "revista/".$carpeta."/";
  13. for($i=0;$i<$total;$i++){  
  14. //move_uploaded_file ($_FILES['fil']['tmp_name'][$i], $dir.$_FILES['fil']['name'][$i]); //subimos las imagenes
  15. $query = "insert into agregados(imag,carpeta,id_rev) values('".$_FILES['fil']['name'][$i]."','$carpeta',$id)";
  16. echo $query;
  17. //mysql_query($query,$conn) or die(mysql_error());
  18. }
  19.  
  20.  
  21. ?>
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #4 (permalink)  
Antiguo 21/10/2010, 13:14
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Recuperar inputs dinamicos

he modificado una linea
Código HTML:
ele.name = 'fil[]'; // 6
pero ahora cuando se envia el form al archivo php donde se procesa aparece esto en pantalla:

Código HTML:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at internovo.com.mx Port 80
cabe mencionar que si inserta en la base de datos y si sube las imagenes porque vi la base de datos además de la carpeta donde deberías subir las imagenes y tiene registros y tambien estan las imagenes, he mirado el error_log de mi servidor y no parece ningun error marcado con la hora en que estamos o lo más cercana para poder investigar pero como menciono nada que podrá ser?
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #5 (permalink)  
Antiguo 21/10/2010, 13:22
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Respuesta: Recuperar inputs dinamicos

Hola,

Mira, yo probé con ésto. Es para identificar cuantos inputs solicitaste, y éste te devuelve el total, luego sera cuestion de que hagas un for para ir recibiendo el valor de cada "file".

Código HTML:
Ver original
  1. <script type="text/javascript">
  2.     <!--
  3.    num=0;
  4.    function crear(obj) {        
  5.        fi = document.getElementById('fiel'); // 1
  6.        contenedor = document.createElement('div'); // 2
  7.        contenedor.id = 'div'+num; // 3
  8.        fi.appendChild(contenedor); // 4
  9.  
  10.        ele = document.createElement('div'); // 5
  11.        ele.innerHTML = "<input type='file' name='fil"+num+"'>";
  12.        contenedor.appendChild(ele); // 7
  13.  
  14.        ele = document.createElement('div'); // 5        
  15.        ele.innerHTML = "<input type='hidden' name='total' value='"+num+"'>";
  16.        contenedor.appendChild(ele); // 7
  17.  
  18.        ele = document.createElement('input'); // 5
  19.        ele.type = 'button'; // 6
  20.        ele.value = 'Borrar'; // 8
  21.        ele.name = 'div'+num; // 8
  22.        ele.onclick = function () {borrar(this.name)} // 9
  23.        contenedor.appendChild(ele); // 7
  24.        num++;
  25.    }
  26.    function borrar(obj) {
  27.        fi = document.getElementById('fiel'); // 1
  28.        fi.removeChild(document.getElementById(obj)); // 10
  29.    }
  30.    -->
  31. </head>
  32.     <form method="post" action="other.php" enctype="multipart/form-data">
  33.         <input type="hidden" name="id" value="<?php echo $_GET['id_revista']; ?>" />        
  34.         <fieldset id="fiel">
  35.             <input type="button" value="Crear" onclick="crear(this)" />
  36.         </fieldset>
  37.         <input type="submit" name="mm" value="Aceptar" />
  38.     </form>

Código PHP:
Ver original
  1. <?php
  2. include('candado.php');
  3. include('config.php');
  4. $id = $_POST['id']; //Recuperamos el id
  5. $total = $_POST["total"];//$total = count($_FILES['fil']['name']); //Total de inputs
  6. echo $total;
  7. echo $_FILES["fil".$total]['name'];
  8.  
  9. $sql = "select carpeta from revista where id_revista = $id";
  10. $done = mysql_query($sql,$conn) or die(mysql_error());
  11. $fila = mysql_fetch_array($done);
  12. $carpeta = $fila['carpeta'];
  13. $dir = "revista/".$carpeta."/";
  14. for($i=0;$i<$total;$i++) {
  15. //move_uploaded_file ($_FILES['fil']['tmp_name'][$i], $dir.$_FILES['fil']['name'][$i]); //subimos las imagenes
  16.     $query = "insert into agregados(imag,carpeta,id_rev) values('".$_FILES['fil']['name'][$i]."','$carpeta',$id)";
  17.     echo $query;
  18. //mysql_query($query,$conn) or die(mysql_error());
  19. }
  20. ?>

El código así está muy feo, tendrías que mejorarlo y adaptarlo a tu forma. Pero bueno, creo que lo que necesitabas recibir ahora lo está haciendo.

Suerte.
__________________
Freelance - Aplicaciones Web

Etiquetas: dinamicos, inputs, recuperar
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 14:12.