Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Borrar imagen de carpeta

Estas en el tema de Borrar imagen de carpeta en el foro de PHP en Foros del Web. Hola a todos!!! estoy armando un sistema en php y necesito borrar una imagen que guardo en una carpeta al mismo tiempo que borro un ...
  #1 (permalink)  
Antiguo 02/01/2014, 13:17
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Borrar imagen de carpeta

Hola a todos!!! estoy armando un sistema en php y necesito borrar una imagen que guardo en una carpeta al mismo tiempo que borro un post, este es mi codigo

Código PHP:
Ver original
  1. <?php
  2.        
  3.     if(isset($_GET["borrararchivo"])) //borro el post
  4.     {
  5.        
  6.         $id = $_GET["borrararchivo"];
  7.        
  8.         $link = mysql_connect("localhost","root",""); // Me conecto a mysql
  9.  
  10.         if(!$link)
  11.         {
  12.             die("Error al conectar a MySQL");
  13.         }
  14.  
  15.         @ $db = mysql_select_db("ale",$link); //Elijo la base
  16.  
  17.         if(!$db)
  18.         {
  19.             die("Error al seleccionar la base de datos");
  20.         }
  21.        
  22.         $query = "DELETE FROM wedding WHERE id = '$id'"; // Borro de la base el post con el titulo
  23.        
  24.         $rs = mysql_query($query,$link); // Ejecuto la consulta
  25.        
  26.         if(!$rs)
  27.         {
  28.             die("Error al ejecutar la query de datos");
  29.         }
  30.     }
  31.    
  32.     if(file_exists($id))
  33.     {
  34.         unlink(@$id);
  35.         return true;
  36.     }
  37.    
  38.     mysql_close($link); //cierro la conexion
  39.     header("location: admin.php");  // Redirecciono a postear

pero la funcion unlink no me borra los archivos, solo se borra los post de la base de datos, desde ya agradezco su ayuda, saludos para todos
  #2 (permalink)  
Antiguo 02/01/2014, 13:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Borrar imagen de carpeta

Utiliza la función unlink.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 02/01/2014, 13:25
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Borrar imagen de carpeta

Bueno, es mala practica usar @ para ocultar errores.

La pregunta es, el if de file_exists se ejecuta? si es así prueba

Código PHP:
Ver original
  1. @unlink($id);

Que puede ser el error

Si no es así debes de verificar las rutas del archivo que puede ser la otra causa de fallos. Así mismo el código del unlink debe de quedar como te lo mostré.

PD: Además debes de quitar el return true; después del unlink

Edito: @Alexis88 respondiste sin ver el código? jejeje finalizando el código esta unlink

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 02/01/2014, 13:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Borrar imagen de carpeta

Cita:
Iniciado por jonni09lo Ver Mensaje
Edito: @Alexis88 respondiste sin ver el código? jejeje finalizando el código esta unlink
Jaja, sí, por apurado, estaba por ir al baño.

Ya cuando vi el código, me fijé que usa unlink y le iba a sugerir que sacara el @ de la izquierda de la variable, pero ya lo habías hecho. Saludos jonni09lo.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 02/01/2014, 13:32
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Borrar imagen de carpeta

Bueno ahi modifique lo que me sugirieron del @, lo escribi antes del unlink pero sigue sin funcionar
  #6 (permalink)  
Antiguo 02/01/2014, 13:37
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Borrar imagen de carpeta

Verificaste que la ruta del archivo es la correcta?

Si haces:
Código PHP:
Ver original
  1. echo $id;
Te retorna la url del archivo de manera correcta?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 02/01/2014, 13:41
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Borrar imagen de carpeta

no jonni09lo, borra la entrada pero no me devuelve la ruta del archivo, tendria que declarar una variable con la ruta?
  #8 (permalink)  
Antiguo 02/01/2014, 13:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Borrar imagen de carpeta

Si no recibes la ruta del archivo, entonces no lo has enviado correctamente, por eso no llega. Revisa el código correspondiente al archivo desde el cual envías el nombre del archivo a borrar.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 02/01/2014 a las 13:57
  #9 (permalink)  
Antiguo 02/01/2014, 13:57
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Borrar imagen de carpeta

A traves de
Código PHP:
Ver original
  1. if(isset($_GET["borrararchivo"]))
capturo el id del post, y borro el registro de la base de datos, lo que necesito ahora es borrar ademas una imagen dentro de una carpeta.
La ruta de esa imagen esta dentro de un campo en la db, como puedo hacer que a traves del id que capture con get me muestre el campo ruta para poder borrarlo?
Espero haber sido claro. muchas gracias a todos!
  #10 (permalink)  
Antiguo 02/01/2014, 14:00
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Borrar imagen de carpeta

A ver, vamos por partes. Necesito que seas muy claro con las respuestas y has lo que se te pide (no me dijiste nada del echo pero ya no necesito saberlo)

Tu tienes esto

Código PHP:
Ver original
  1. $id = $_GET["borrararchivo"];

Y lo usas de esta manera:

Código PHP:
Ver original
  1. $query = "DELETE FROM wedding WHERE id = '$id'"; // Borro de la base el post con el titulo

En ningún momento estas pasando a unlink una ruta del archivo valido (solo le estas pasando un id que no sirve para eliminar el archivo, vamos que unlink no hace magia )

Cita:
Iniciado por br1b Ver Mensaje
tendria que declarar una variable con la ruta?
Absolutamente si.

Si tienes el nombre del archivo en la base de datos debes de primero obtener el nombre del archivo antes de ejecutar el DELETE y después de haberlo ejecutado debes de construir la ruta del archivo para que unlink pueda hacer su trabajo.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 02/01/2014, 14:03
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Borrar imagen de carpeta

Claroooo me hice un rollo, lo que necesito hacer es lo que bien dices obtener el nombre del archivo, lo que no soy capaz de hacer es armar la ruta del archivo para borrarlo, Muchas gracias!
  #12 (permalink)  
Antiguo 02/01/2014, 14:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Borrar imagen de carpeta

A menos que el archivo a eliminar se encuentre al mismo nivel que el archivo PHP desde el cual lo eliminarás, debes de anteponer la ruta al nombre del archivo. Por ejemplo:

Código PHP:
Ver original
  1. unlink("../images/" . $nombreImagen);

La ruta indica que el archivo a borrar, se encuentra en la carpeta "images", la cual está en un nivel superior al del archivo PHP desde el que se desea borrarlo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #13 (permalink)  
Antiguo 02/01/2014, 14:29
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Borrar imagen de carpeta

Gracias Alexis por la respuesta, si tengo la ruta del archivo en la base de datos, haciendo
Código PHP:
Ver original
  1. $query = "SELECT ruta FROM wedding WHERE id = '$id'";
puedo obtener el valor de ruta en una variable y hacer el unlink de esa variable?
  #14 (permalink)  
Antiguo 02/01/2014, 14:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Borrar imagen de carpeta

Cita:
Iniciado por br1b Ver Mensaje
[...] puedo obtener el valor de ruta en una variable y hacer el unlink de esa variable?
Me sorprendería que no hayas hecho la prueba, eso de pedir permiso para experimentar no se ve muy bien que digamos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 02/01/2014, 14:31
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Borrar imagen de carpeta

Has la prueba, no creo que te muerda el código... aprende a ser mas autodidacta (cualidad imprescindible en un programador) ya que hemos sido bastantes claros con las respuestas.

Tienes la query, ejecutas la query, obtienes la ruta, creas la ruta hacia la imagen, eliminas.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #16 (permalink)  
Antiguo 02/01/2014, 14:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Borrar imagen de carpeta

Si ya tienes la ruta, solamente tómala y concaténala con el nombre del archivo.

Código PHP:
Ver original
  1. $conexion = new mysqli ("servidor", "usuario", "password", "bd");
  2.  
  3. if ($conexion->connect_error)
  4.     exit ("Error: No se pudo realizar la conexión");
  5.  
  6. $consulta = $conexion->query("SELECT ruta FROM wedding WHERE id = '$id'");
  7.  
  8. if ($consulta->num_rows) {
  9.     $datos = $consulta->fetch_array();
  10.     unlink ($datos["ruta"] . $id);
  11.     $consulta->free();
  12. }
  13. else
  14.     echo "No se encontraron datos en la consulta";
  15.  
  16. $conexion->close();

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #17 (permalink)  
Antiguo 02/01/2014, 14:41
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Borrar imagen de carpeta

Y ya puestos... haz la consulta antes de hacer la de eliminar, si no de nada te servirá :P
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #18 (permalink)  
Antiguo 02/01/2014, 14:45
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Borrar imagen de carpeta

Cita:
Iniciado por CoriaWeb Ver Mensaje
Y ya puestos... haz la consulta antes de hacer la de eliminar, si no de nada te servirá :P
Bueno creo que eso es algo que ya dije

Cita:
Iniciado por Alexis88 Ver Mensaje
Si ya tienes la ruta, solamente tómala y concaténala con el nombre del archivo.

Código PHP:
Ver original
  1. $conexion = new mysqli ("servidor", "usuario", "password", "bd");
  2.  
  3. if ($conexion->connect_error)
  4.     exit ("Error: No se pudo realizar la conexión");
  5.  
  6. $consulta = $conexion->query("SELECT ruta FROM wedding WHERE id = '$id'");
  7.  
  8. if ($consulta->num_rows) {
  9.     $datos = $consulta->fetch_array();
  10.     unlink ($datos["ruta"] . $id);
  11.     $consulta->free();
  12. }
  13. else
  14.     echo "No se encontraron datos en la consulta";
  15.  
  16. $conexion->close();

Saludos
Te recomiendo que uses las mismas tecnologías que el usuario que postea (así no sea lo mas adecuado) ya que de esta manera evitamos confundir y llevar a respuestas como: el código que me pasaste no funciona! ¿eso que me mostraste que es? etc.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #19 (permalink)  
Antiguo 02/01/2014, 14:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Borrar imagen de carpeta

Cita:
Iniciado por jonni09lo Ver Mensaje
Te recomiendo que uses las mismas tecnologías que el usuario que postea (así no sea lo mas adecuado) ya que de esta manera evitamos confundir y llevar a respuestas como: el código que me pasaste no funciona! ¿eso que me mostraste que es? etc.
La verdad, ya estoy tan acostumbrado a leer esas preguntas que no me molestaría explicarle o dejarle alguna referencia, pero es un buen consejo.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #20 (permalink)  
Antiguo 02/01/2014, 14:59
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Borrar imagen de carpeta

Les agradezco a todos por su tiempo y por sus respuestas, siempre trato de solucionar y hacer funcionar las cosas por mi cuenta antes de consultar en el foro, por el momento sigo probando porque no pude solucionarlo, saludos
  #21 (permalink)  
Antiguo 02/01/2014, 15:08
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Borrar imagen de carpeta

Pues es raro ya que no deberia darte problemas el flujo. En donde esta la carpeta de images?

En el mismo nivel de el archivo que se ejecuta

Código:
-root
	-script.php
	-images/
Código PHP:
Ver original
  1. unlink("images/" . $nombreImagen);

Esta en un nivel superior

Código:
-root
	-another/
		-script.php
	-images/
Código PHP:
Ver original
  1. unlink("../images/" . $nombreImagen);

O un nivel mas profuncdo

Código:
-root
	-script.php
	-another/
		-images/
Código PHP:
Ver original
  1. unlink("another/images/" . $nombreImagen);

De donde script.php es el archivo que ejecutas para eliminar el archivo, root la carpeta principal del proyecto, images el nombre de la carpeta de las imagenes, another el nombre de una carpeta que contiene a otra y $nombreImagen es la variable que contiene el nombre del archivo de la base de datos (no se si solo guardas el nombre del archivo o si guardas el nombre de la carpeta también de ser así lo descrito anteriormente se debe de ajustar a lo que tienes).

OJO que los nombres son solo ejemplos

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #22 (permalink)  
Antiguo 02/01/2014, 15:22
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Borrar imagen de carpeta

Cita:
Iniciado por br1b
HOla!!! te agradezco por la ayuda... en la base de datos almacene la ruta del archivo con su respectivo nombre, por ejemplo archivo/1.png, el problema que tengo es que no se recuperar el valor de la ruta en una variable para borrar el archivo
Bueno, por qué pides ayuda por privado? es una falta de respeto

Además lo que consultas es tan sencillo...

Código PHP:
Ver original
  1. $nombreImagen = mysql_fetch_assoc (mysql_query( "SELECT ruta FROM wedding WHERE id = '$id'" ) );

Luego

Código PHP:
Ver original
  1. unlink("images/" . $nombreImagen['ruta']);

Faltan algunas validaciones, pero debes de hacerlas tu.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #23 (permalink)  
Antiguo 02/01/2014, 15:38
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Borrar imagen de carpeta

Ya esta solucionado, gracias a todos por sus respuestas y buena onda!!!

Etiquetas: carpeta, mysql, select
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 10:58.