Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Actualizar una imágen de un array de múltiples imagenes.

Estas en el tema de Actualizar una imágen de un array de múltiples imagenes. en el foro de PHP en Foros del Web. Hola a tod@s! Tengo la siguiente duda: cuando subo múltiples imágenes, siempre lo hago utilizando un array en HTML: Código HTML: <input type= "file" name= ...
  #1 (permalink)  
Antiguo 11/11/2015, 06:54
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 2 meses
Puntos: 7
Actualizar una imágen de un array de múltiples imagenes.

Hola a tod@s!

Tengo la siguiente duda: cuando subo múltiples imágenes, siempre lo hago utilizando un array en HTML:
Código HTML:
<input type="file"  name="imagenes[]">
<input type="file"  name="imagenes[]">
<input type="file"  name="imagenes[]"> 
Y caputuro las imágenes desde PHP para que al final queden asi:
Código PHP:
$imagenes[0]
$imagenes[1]
$imagenes[2
Pero mi duda actual, es que ahora tengo que EDITAR alguna de esas imágenes.

El problema con el que me encuentro, es que si quiero por ejemplo cambiar la imágen
n° 3 , y las demás dejarlas intáctas
, y al ser un array <input type="file" name="imagenes[]"> , no logro editar específicamente la imágen n° 3 , ya que el array html siempre empieza con 0 (imagenes[0]).

También intenté ésto:
<input type="file" name="imagenes[0]">
<input type="file" name="imagenes[1]">
<input type="file" name="imagenes[2]">

Hasta ahora no logro lo que quiero.

Quizás en este caso, lo mejor sería numerar los input con imagen1, imagen2, imagen3, etc, sin usar arrays. Pero igualmente quiero salir de dudas.

Alguna sugerencia o ejemplo para recomendar?


Gracias
  #2 (permalink)  
Antiguo 11/11/2015, 07:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actualizar una imágen de un array de múltiples imagenes.

No puedes "editar archivos" usando un campo <input>, eso no funcionará jamás.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/11/2015, 09:08
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Actualizar una imágen de un array de múltiples imagenes.

Quizás te estás refiriendo a que no se puede editar un <input type="file"> de la misma manera que se edita un input comun (ej: <input type="text" name="nombre" value="<?php $nombre_actual; ?>">

Si es así, eso lo entiendo. Los input de tipo file siempre los edito usando un <input type="hidden"> para mantener el valor actual de los campos que no se editan. Pero si un usuario sube un archivo, éste si se actualiza.

Mi duda actual es sobre como hacer ésto ultimo , pero con un input file de tipo array.

Cita:
Iniciado por pateketrueke Ver Mensaje
No puedes "editar archivos" usando un campo <input>, eso no funcionará jamás.
  #4 (permalink)  
Antiguo 11/11/2015, 10:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actualizar una imágen de un array de múltiples imagenes.

Lo que sucede es que el formulario no te da la solución, es tu lógica la que debe resolver el problema.

Bien podrías llamar al input "imagen_nueva" y al mismo tiempo podrías actualizar cualquier dato de tu array, o en la base de datos, etc.

Da igual como recibes la información, pues sólo tu sabes "que debes actualizar la segunda imagen" y eso no te obliga a nombrar de una manera especial tus campos: es irrelevante.

Si pudieras mostrar exactamente cómo es tu rutina entenderíamos mejor lo que has intentado hasta ahora, de otra forma es seguir adivinando.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 23/11/2015, 07:38
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Actualizar una imágen de un array de múltiples imagenes.

Olvidé responder tu ultima respuesta.

Es verdad, es un problema de lógica e intenté resolverla buscando alguna funcionalidad "mágica" de html que no existe.

Al final terminé haciendo un formulario de alta y otro de edición para salir de apuros.

Cita:
Iniciado por pateketrueke Ver Mensaje
Lo que sucede es que el formulario no te da la solución, es tu lógica la que debe resolver el problema.

Bien podrías llamar al input "imagen_nueva" y al mismo tiempo podrías actualizar cualquier dato de tu array, o en la base de datos, etc.

Da igual como recibes la información, pues sólo tu sabes "que debes actualizar la segunda imagen" y eso no te obliga a nombrar de una manera especial tus campos: es irrelevante.

Si pudieras mostrar exactamente cómo es tu rutina entenderíamos mejor lo que has intentado hasta ahora, de otra forma es seguir adivinando.
  #6 (permalink)  
Antiguo 30/11/2015, 06:43
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Actualizar una imágen de un array de múltiples imagenes.

Quisiera dejar una solución que hice por si alguien tuviese el mismo problema.

Creé los input file del formulario, numerando sus arrays de ésta forma:

En lugar de usar name="archivo[]" , cambié por:

Código HTML:
<input type="file" name="archivo[0]">
<input type="file" name="archivo[1]">
<input type="file" name="archivo[2]">
<input type="file" name="archivo[3]">

<! -- los datos ocultos son los nombres de las fotos actuales (si hay -->

<input type="hidden" name="foto1" value="<?php echo $foto1;?>" />
<input type="hidden" name="foto2" value="<?php echo $foto2;?>" />
<input type="hidden" name="foto3" value="<?php echo $foto3;?>" />
<input type="hidden" name="foto4" value="<?php echo $foto4;?>" /> 
y luego desde PHP

Código PHP:

if (empty($_FILES['archivo']['name'][0])) {
        
/* si la foto1 no está cargada, dejo la que estaba antes (recibo el nombre de la que estaba antes, tomandola desde un campo oculto con $_REQUEST */
        
$foto1 $_REQUEST['foto1'];
        }

    
    if (empty(
$_FILES['archivo']['name'][1])) {
        
// si la foto2 no está cargada
        
$foto2 $_REQUEST['foto2'];
        }
        

    if (empty(
$_FILES['archivo']['name'][2])) {
        
// si la foto3 no está cargada
        
$foto3 $_REQUEST['foto3'];
        }

            
    if (empty(
$_FILES['archivo']['name'][3])) {
        
// si la foto4 no está cargada
        
$foto4 $_REQUEST['foto4'];
        }    
    


/*
Subo la foto a la posicion correspondiente, según el input file numerado que halla llenado el usuario
*/
        
if (move_uploaded_file($_FILES['archivo']['tmp_name'][0],"../users/p/".$_FILES['archivo']['name'][0])){
           
$foto1 $_FILES['archivo']['name'][0];
        }
        
        

        
        if (
move_uploaded_file($_FILES['archivo']['tmp_name'][1],"../users/p/".$_FILES['archivo']['name'][1])){
            
$foto2 $_FILES['archivo']['name'][1];
        }
        
        

        
        if (
move_uploaded_file($_FILES['archivo']['tmp_name'][2],"../users/p/".$_FILES['archivo']['name'][2])){
           
$foto3 $_FILES['archivo']['name'][2];
        }
        
        
        
        if (
move_uploaded_file($_FILES['archivo']['tmp_name'][3],"../users/p/".$_FILES['archivo']['name'][3])){
           
$foto4 $_FILES['archivo']['name'][3];
        } 
Y por ultimo hago el UPDATE de SQL correspondiente a los campos `foto1`, `foto2`, `foto3` y `foto4`.

Última edición por shock_dude; 30/11/2015 a las 06:47 Razón: corección

Etiquetas: html, imágen
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 15:46.