Foros del Web » Programando para Internet » PHP »

Editar imágenes con un formulario múltiple y borrar las anteriores.

Estas en el tema de Editar imágenes con un formulario múltiple y borrar las anteriores. en el foro de PHP en Foros del Web. Hola. Estoy realizando un formulario de edición el cual además de títulos, contenidos, fecha etc etc lleva imágenes las cuales las envío o edito a ...
  #1 (permalink)  
Antiguo 25/05/2015, 11:25
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Editar imágenes con un formulario múltiple y borrar las anteriores.

Hola.

Estoy realizando un formulario de edición el cual además de títulos, contenidos, fecha etc etc lleva imágenes las cuales las envío o edito a través de un campo múltiple. A la hora de editarlas he creado la opción que si el usuario rellena el campo archivo con nuevas imágenes al pulsar editar que primero se borren las anteriores imágenes subidas a ese id y que a la vez envie las nuevas seleccionadas, si no ha seleccionado nada pues solamente edite los campos de texto, títulos contenidos etc etc.

El formulario que uso es el siguiente:

Código HTML:
Ver original
  1. <form method="post" action="" enctype="multipart/form-data">
  2. <label>Enlace:</label><input type="text" name="enlace" value="<?php echo $fila->enlace ?>"></br>
  3. <label>Título:</label><input type="text" name="titulo_contenido" value="<?php echo $fila->titulo_contenido ?>"></br>
  4. <label>Contenido:</label><input type="text" name="contenido" value="<?php echo $fila->contenido ?>"></br>
  5. <label for="imagen">Editar imagen/imagenes: </label>
  6. <input type="file" id="archivo" name="upload[]" title="Enviar imagen" multiple="multiple" />    <br /> 
  7. <input type="hidden" name="id_contenido" value="<?php echo $id_contenido; ?>" >
  8. <input type="submit" value="Editar" name="editar">

Y el código de edición por ejemplo en la parte de imágenes sería algo así:

Código PHP:
Ver original
  1. if(isset($_POST['editar'])){
  2.     if(count($_FILES['upload']['tmp_name']) > 0){
  3.         //Si hay más de 1 archivo seleccionado entonces borro las anteriores imágenes.
  4.         $borrar_imagen= "Delete from imagenes where id_contenido =".$id_contenido;
  5.         $ejecutar_borrar_imagen=mysql_query($borrar_imagen);
  6.         if(!$ejecutar_borrar_imagen)
  7.         {
  8.             echo "La imagen no se ha podido borrar. " . mysql_error();
  9.         }
  10.         else
  11.         {
  12.             echo "Imagen borrada correctamente.";
  13.         }
  14.         //Aquí va el código para subir todas las imágenes seleccionadas.
  15.     }//Fin Si hay más de 1 archivo seleccionado entonces borro las anteriores imágenes.
  16.     else{
  17.         echo "No hay archivos seleccionados, por lo tanto no borro las anteriores imágenes.";
  18.     }
  19. }//Fin si se pulsa enviar/editar   
  20. else{
  21.     //echo "No estoy enviando";
  22. }

En lo que se refiere al envío de imágenes me sale perfectamente y sube cuando selecciono varias pero el problema es que aun seleccionando algún archivo o incluso sin tener nada en el campo de imágenes siempre me borra las anteriores, ya que entiende que siempre hay más de un archivo seleccionado:

if(count($_FILES['upload']['tmp_name']) > 0) siempre me lo cuenta como mayor que 0.

¿Cómo podría solucionarlo?.

Saludos.
  #2 (permalink)  
Antiguo 30/05/2015, 01:56
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Editar imágenes con un formulario múltiple y borrar las anteriores.

Hola de nuevo.

He hecho algunos cambios y aunque no se si será la mejor manera de hacerlo parece que ya funciona.

Código PHP:
Ver original
  1. if(isset($_POST['editar'])){   
  2.     //Loop through each file
  3.     for($i=0; $i<count($_FILES['upload']['name']); $i++) {
  4.         //Compruebo archivos seleccionados
  5.         if(is_uploaded_file($_FILES["upload"]["tmp_name"][$i])){
  6.             echo "Ha subido el nº" .$i;
  7.             //Si hay al menos 1 archivo seleccionado borro las anteriores imágenes.
  8.             if($i==0){
  9.                 echo "Borro" .$i;                          
  10.             }//Fin Si hay al menos 1 archivo seleccionado borro las anteriores imágenes.                       
  11.         }
  12.         else{
  13.             echo "Ninguno subido ni elegido, edito sin imágenes";
  14.         }//Fin Compruebo archivos seleccionados
  15.     }//Fin Loop through each file  
  16. }//Fin si se pulsa enviar/editar   
  17. else{
  18.     //echo "No estoy editando";
  19. }

Saludos.

Etiquetas: fecha, formulario, múltiple, mysql, sql
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 17:47.