Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/05/2015, 11:25
Avatar de kahlito
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.