Foros del Web » Programando para Internet » PHP »

Actualizar a Formulario Multi Upload PHP MYSQL

Estas en el tema de Actualizar a Formulario Multi Upload PHP MYSQL en el foro de PHP en Foros del Web. Hola buenas noches. Durante varias ocasiones he utilizado el siguiente formulario para subir imágenes al servidor y al mismo tiempo grabar algunos datos en la ...
  #1 (permalink)  
Antiguo 06/02/2017, 22:03
 
Fecha de Ingreso: septiembre-2003
Ubicación: Capital Federal
Mensajes: 38
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Actualizar a Formulario Multi Upload PHP MYSQL

Hola buenas noches.
Durante varias ocasiones he utilizado el siguiente formulario para subir imágenes al servidor y al mismo tiempo grabar algunos datos en la BD. El archivo form.php es el siguiente:

Código HTML:
Ver original
  1. <meta charset="utf-8">
  2. </head>
  3.             <form>
  4.               <table width="780" border="0" cellspacing="0" cellpadding="0">
  5.   <tbody>
  6.       <tr>
  7.       <td>Descripción</td>
  8.       <td><textarea name="comentario" cols="100" rows="3"  id="comentario"></textarea></td>
  9.     </tr>
  10.     <tr>
  11.       <td>Foto</td>
  12.       <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
  13.   <tbody>
  14.     <tr>
  15.       <td><input name="foto" type="file"  id="foto"></td>
  16.       <td></td>
  17.     </tr>
  18.   </tbody>
  19. </td>
  20.     </tr>            
  21.         <tr>
  22.       <td>Fecha</td>
  23.       <td>
  24.         <input type="date" name="fecha" id="fecha"></td>
  25.     </tr>
  26.     <tr>
  27.       <td height="60">&nbsp;</td>
  28.       <td><input name="Submit" type="submit" id="Submit" formaction="insertar_datos.php" formenctype="multipart/form-data" formmethod="POST" value="Grabar Información" ></td>
  29.     </tr>
  30.   </tbody>
  31. </form>
  32. </body>
  33. </html>

El action insertar_datos.php es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. error_reporting(E_ALL ^ E_DEPRECATED);
  3. @ini_set('display_errors', '1');
  4. /*----------- INICIO DE CONFIGURACION-----------------*/
  5. //definir el nombre o la ip del servidor de db
  6. $server='localhost';
  7. //definir el nombre de usuario de la db
  8. $user='usuario';
  9. //definir la contraseña
  10. $pass='contrasena';
  11. //definir el nombre de la db
  12. $db='nombre_base';
  13. //en la siguiente línea, definir el nombre de la tabla de la db (escribirlo entre las comillas simples).
  14. $tabla='nombre_tabla';
  15. //en esta otra línea colocar el nombre del archivo a mostrar al finalizar el proceso (escribirlo entre las comillas simples)
  16. $destino='exitoingreso.php';
  17. /*----------- FIN DE LA CONFIGURACION-----------------*/
  18. mysql_connect($server,$user,$pass);
  19. function insertar_form($tabla){
  20. foreach($_POST as $k => $v){
  21. if($k!='imageField_x' && $k!='imageField_y' && $k!='foto' && $k!='foto1' && $k!='foto2' && $k!='foto3' && $k!='Submit'){
  22. $listacampos[]=$k;
  23. $listavalores[]=(get_magic_quotes_gpc()) ? $v : addslashes($v);
  24. }}
  25. $formatocampos=implode(',',$listacampos);
  26. $formatovalores="'".implode("','",$listavalores);
  27. $formatovalores.="'";
  28. mysql_query("insert into $tabla ($formatocampos) values ($formatovalores)");
  29. }
  30. function subirarchivo($archivo,$archivotemp,$tabla,$campoarchivo,$error){
  31. $qry=mysql_query("select max(id) as ultimo from $tabla");
  32. $row=mysql_fetch_assoc($qry);
  33. $id=$row['ultimo'];
  34. if($archivo!=''){
  35. $hp=explode(".",$archivo);
  36. $extension200=strtolower(end($hp));
  37. if($extension200!='jpg' && $extension200!='gif' && $extension200!='png' && $extension200!='doc' && $extension200!='zip' && $extension200!='pdf' && $extension200!='xls' && $extension200!='ppt' && $extension200!='swf'){
  38. eval($error);exit;}
  39. $foto2=md5(time()).$archivo;
  40. if(!copy($archivotemp,$foto2)){die('No pudo cargarse la foto');};
  41. @chmod($foto2,0777);
  42. mysql_query("update $tabla set $campoarchivo='$foto2' where id='$id'");
  43. }
  44. }
  45. insertar_form($tabla);
  46. if(isset($_FILES['foto']['name'])){
  47. subirarchivo($_FILES['foto']['name'],$_FILES['foto']['tmp_name'],$tabla,'foto','');
  48. }
  49. for($i=1;$i<4;$i++){
  50. if(isset($_FILES['foto'.$i]['name'])){
  51. subirarchivo($_FILES['foto'.$i]['name'],$_FILES['foto'.$i]['tmp_name'],$tabla,'foto'.$i,'');}
  52. }
  53.  
  54. header("Location:$destino");
  55. ?>

Ahora bien, eso lo venía utilizando para subir una sola imagen. La realidad es que ahora necesito subir varias imágenes al mismo tiempo, por eso en el formulario voy a comenzar a utilizar:

Código HTML:
Ver original
  1. <td><input name="foto[]" type="file" multiple  id="foto" required=""></td>

Pero sinceramente no logro entender que debo modificar, si es que se puede, en el archivo insertar_datos.php

Desde ya agradecería cualquier ayuda que pudieran brindarme para lograr entender por donde comenzar. Desde ya muchísimas gracias!.

Saludos!

Última edición por Triby; 07/02/2017 a las 08:58 Razón: Código en highlight
  #2 (permalink)  
Antiguo 07/02/2017, 09:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Actualizar a Formulario Multi Upload PHP MYSQL

La diferencia es que todos los atributos serán array y no cadenas, teniendo que acceder a ellos por su posición, ejemplo:

Código PHP:
Ver original
  1. foreach($_FILES['foto']['name'] as $index => $nombre) {
  2.     // Revisar si el archivo subió correctamente
  3.     if($_FILES['foto']['error'][$index] == 0) {
  4.          // Archivo temporal
  5.          $tmp_name = $_FILES['foto']['tmp_name'][$index];
  6.     } else {
  7.          // Manejar aquí los errores
  8.     }
  9. }
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 08/02/2017 a las 11:06

Etiquetas: múltiple, upload
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 12:16.