Foros del Web » Programando para Internet » PHP »

Borrar archivos asociados a una base de datos

Estas en el tema de Borrar archivos asociados a una base de datos en el foro de PHP en Foros del Web. Buenas tardes Tengo problemas para borrar los archivos que tengo relacionados con la base de datos, cuando le doy la opción borrar borra los datos ...

  #1 (permalink)  
Antiguo 16/09/2010, 15:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Borrar archivos asociados a una base de datos

Buenas tardes
Tengo problemas para borrar los archivos que tengo relacionados con la base de datos, cuando le doy la opción borrar borra los datos en la base de datos pero no he logrado que me borre el archivo del servidor, si me pueden ayudar se los agradezco. Los códigos que estoy usando son los siguientes:
Nombre de archivo
formulario.php

<html>
<body>
<?php
include("conex.php");
$link=conectarse();
$result=mysql_query("select * from galeria",$link);
?>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD>&nbsp;<B>ID Cliente</B></TD>
<TD>&nbsp;<B>imagen</B>&nbsp;</TD>
<TD>&nbsp;<B>informacion</B>&nbsp;</TD>
<TD>&nbsp;<B>Borrar</B>&nbsp;</TD></TR>

<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td><a href=\"borra.php?id=%d\">Borrar</a></td></tr>", $row["id"],$row["imagen"],$row["informacion"],$row["id"]);
}
mysql_free_result($result);
mysql_close($link);
?>


</table>
<p><a href="logout.php">Logout</a></p>
</body>
</html>
__________________________________________________ __

Y este archivo se conecta con:
Nombre de archivo
Borra.php
<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];
mysql_query("delete from galeria where id = $id",$link);
header("Location:formulario.php");
unlink($imagen);
?>
  #2 (permalink)  
Antiguo 16/09/2010, 15:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde PHP orientado a objetos a PHP
  #3 (permalink)  
Antiguo 16/09/2010, 15:49
Avatar de rickyper  
Fecha de Ingreso: abril-2009
Mensajes: 182
Antigüedad: 15 años
Puntos: 10
Respuesta: Borrar archivos asociados a una base de datos

Colocalo en este orden:
unlink($imagen);
header("Location:formulario.php");
  #4 (permalink)  
Antiguo 17/09/2010, 08:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Buenos dias
Coloque las etiquetas
unlink($imagen);
header("Location:formulario.php");
pero no me funciono sigue borrando la informacion en la base de datos pero no borra el archivo asiciado en en el servidor. Es como si no relacionara el GET con el archivo o no se si depronto como estoy colocando primero que borre la info de la bbdd no tien como relacionar el nombre del archivo, he intentado colocar el unlink antes de la accion de borrar en la bbdd pero me sale error, por favor si me puede ayudar que ya no se que hacer....gracias
  #5 (permalink)  
Antiguo 17/09/2010, 08:39
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Borrar archivos asociados a una base de datos

en el campo imagen, guardas toda la ruta es decir
carpeta/subcarpeta/nombre_archivo o solo el nombre_archivo, ahi puede estar el problema
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #6 (permalink)  
Antiguo 17/09/2010, 08:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Bueno yo lo coloque de esta forma:

<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];





mysql_query("delete from galeria where id = $id",$link);
header("Location:formulario.php");


unlink($imagen);
header("Location:formulario.php");


?>

y paso lo que comente anteriormente, lo que pasa es que no sale error. Muchas gracias espero me pueda ayudar
  #7 (permalink)  
Antiguo 17/09/2010, 08:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

creo que solo estoy guardando el nombre de archivo, por lo que lo estoy asociando con el $_GET['imagen']; que es el nombre de la columna donde se encuentra el nombre del archivo almacenado en la bbdd
  #8 (permalink)  
Antiguo 17/09/2010, 08:46
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Borrar archivos asociados a una base de datos

Ponlo de esta forma:

Código PHP:
Ver original
  1. mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
  2. //unlink($imagen);
  3.  
  4. //header("Location:formulario.php");

y despues quitales las // de comentario
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #9 (permalink)  
Antiguo 17/09/2010, 08:48
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Borrar archivos asociados a una base de datos

si solo estas guardando el nombre de la imagen entonces debes de ponerlo de esta forma

unlink("carpeta/".$imagen);
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #10 (permalink)  
Antiguo 17/09/2010, 08:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Hice el siguiente cambio unlink("./autoad".$imagen);
y sigue igual el codigo completo quedo asi:
<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];





mysql_query("delete from galeria where id = $id",$link);
header("Location:formulario.php");


unlink("./autoad".$imagen);
header("Location:formulario.php");


?>

Gracias.
  #11 (permalink)  
Antiguo 17/09/2010, 08:50
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Borrar archivos asociados a una base de datos

mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
unlink("./autoad".$imagen);

header("Location:formulario.php");

ponlo de esta forma, porque no tiene caso redireccionarlo dos veces, mejor haces los dos borrados y redireccionas no crees?

saludos
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #12 (permalink)  
Antiguo 17/09/2010, 08:50
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Borrar archivos asociados a una base de datos

según lo que veo, no estas enviando el valor de $row['imagen'] a borra.php, solo envías el id:

<a href=\"borra.php?id=%d\">Borrar</a>

tendrías que cambiar eso:

Código PHP:
Ver original
  1. printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td><a href=\"borra.php?id=%d&imagen=%s\">Borrar</a></td></tr>", $row["id"],$row["imagen"],$row["informacion"],$row["id"],$row["imagen"]);

y si lo que tienes en la BD es solo el nombre del archivo, entonces tienes que definir la ruta más, en el unlink():

Código PHP:
Ver original
  1. unlink('../imagenes/'.$imagen);//o algo asi dependiendo de la ruta

a menos de que estén las imágenes en la misma carpeta del archivo borra.php.

Saludos
  #13 (permalink)  
Antiguo 17/09/2010, 08:53
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Ya coloque el codigo asi:

<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];





mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
header("Location:formulario.php");


//unlink("./autoad".$imagen);
//header("Location:formulario.php");


?>

y no me salio nada, borro la info de la bbdd, y no me mostro error.
Gracias
  #14 (permalink)  
Antiguo 17/09/2010, 08:55
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Borrar archivos asociados a una base de datos

Dejalo de esta forma, prueba y comentas:

Código PHP:
Ver original
  1. mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
  2.  
  3. unlink("./autoad".$imagen);
  4. header("Location:formulario.php");
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #15 (permalink)  
Antiguo 17/09/2010, 09:04
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Quike88
Hice los cambios como me dijo y me salio el siguiente error

Warning: printf() [function.printf]: Too few arguments in /home5/desigoo7/public_html/autoad/formulario.php on line 75


el codigo me quedo asi:

<html>
<head>
<title>Formulario de actualizacion</title>
</head>
<body>

<H1>Cargar archivos</H1>

<form action="upload.php" method="post" enctype="multipart/form-data">
<TABLE>
<TR>


<TD>Enviar un nuevo archivo:</TD>

<TD> <input name="userfile" type="file"> </TD>
</TR>



</TABLE>




<H1>Ingresar datos</H1>

<TABLE>
<TR>


<TD>Imagen:</TD>
<TD><INPUT TYPE="text" NAME="imagen" SIZE="20" MAXLENGTH="30"></TD>
<TD>Informacion: </TD>
<TD><INPUT TYPE="text" NAME="informacion" SIZE="20" MAXLENGTH="30"></TD>


</TR>



</TABLE>

<INPUT TYPE="submit" NAME="accion" VALUE="Grabar" >
</FORM>
<hr>

<?php
include("conex.php");
$link=conectarse();
$result=mysql_query("select * from galeria",$link);
?>



<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD>&nbsp;<B>ID Cliente</B></TD>
<TD>&nbsp;<B>imagen</B>&nbsp;</TD>
<TD>&nbsp;<B>informacion</B>&nbsp;</TD>
<TD>&nbsp;<B>Borrar</B>&nbsp;</TD></TR>

<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>><a href=\"borra.php?id=%d&imagen=%s\">Borrar</a></td></tr>", $row["id"],$row["imagen"],$row["informacion"],$row["id"]);
}
mysql_free_result($result);
mysql_close($link);
?>


</table>
<p><a href="logout.php">Logout</a></p>
</body>
</html>


y el codigo de borra.php asi:

<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];





mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
header("Location:formulario.php");


unlink($imagen);
header("Location:formulario.php");


?>

La linea 75 tiene lo siguiente:
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>><a href=\"borra.php?id=%d&imagen=%s\">Borrar</a>

Gracias
  #16 (permalink)  
Antiguo 17/09/2010, 09:04
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Borrar archivos asociados a una base de datos

mm.. leiste mi post?? 1ro has el cambio de enviar la imagen, que ni siquiera la estas enviando, y si la carpeta se llama autoad, falta un /

Código PHP:
Ver original
  1. mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
  2.  
  3. unlink("./autoad/".$imagen);
  4. header("Location:formulario.php");

edito: ok, el error te lo dice todo, no cambiaste el print correctamente, te falta aumentar un parametro:

Código PHP:
Ver original
  1. printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>>
  2. <a href=\"borra.php?id=%d&imagen=%s\">Borrar</a></td></tr>", $row["id"],$row["imagen"],$row["informacion"],$row["id"],$row["imagen"]);
  #17 (permalink)  
Antiguo 17/09/2010, 09:08
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Zapt142

coloque el codigo como me dijiste y me salieron los siguientes errores
Warning: unlink(./autoad) [function.unlink]: No such file or directory in /home5/desigoo7/public_html/autoad/borra.php on line 11

Warning: Cannot modify header information - headers already sent by (output started at /home5/desigoo7/public_html/autoad/borra.php:11) in /home5/desigoo7/public_html/autoad/borra.php on line 12

Warning: unlink(./autoad) [function.unlink]: No such file or directory in /home5/desigoo7/public_html/autoad/borra.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /home5/desigoo7/public_html/autoad/borra.php:11) in /home5/desigoo7/public_html/autoad/borra.php on line 17
  #18 (permalink)  
Antiguo 17/09/2010, 09:10
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Borrar archivos asociados a una base de datos

Cita:
Iniciado por quike88 Ver Mensaje
1ro has el cambio de enviar la imagen, que ni siquiera la estas enviando, y si la carpeta se llama autoad, falta un /

Código PHP:
Ver original
  1. mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
  2.  
  3. unlink("./autoad/".$imagen);
  4. header("Location:formulario.php");
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #19 (permalink)  
Antiguo 17/09/2010, 09:13
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Quike88
coloque el codigo y me sale este error
Warning: unlink(./autoad/) [function.unlink]: No such file or directory in /home5/desigoo7/public_html/autoad/borra.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at /home5/desigoo7/public_html/autoad/borra.php:12) in /home5/desigoo7/public_html/autoad/borra.php on line 13
  #20 (permalink)  
Antiguo 17/09/2010, 09:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

el codigo quedo asi:
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>><a href=\"borra.php?id=%d&imagen=%s\">Borrar</a></td></tr>", $row["id"],$row["imagen"],$row["informacion"],$row["id"],$row["imagen"]);
}
mysql_free_result($result);
mysql_close($link);
?>

___________________________________________

<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];

mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
unlink("./autoad/".$imagen);
header("Location:formulario.php");

?>
  #21 (permalink)  
Antiguo 17/09/2010, 09:18
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Borrar archivos asociados a una base de datos

bueno 1ro veamos si estas recibiendo la imagen, has un var_dump de $_GET['imagen'] o un echo para ver si la recibes bien.

el error que te da, te dice que no existe el fichero o el directorio, entonces la ruta que estas poniendo esta mal.
  #22 (permalink)  
Antiguo 17/09/2010, 09:23
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

todos los archivos los tengo en la misma carpeta. No se que significan esos errores, creo que no encuentra el archivo y no esta modificando la info de formulario.php----- con esta modificacion no borro la info de la bbdd. -----tienen alguna idea de que estoy haciendo mal?
  #23 (permalink)  
Antiguo 17/09/2010, 09:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

voy a hacer el echo y el var_dump y ya les comento que me salio
  #24 (permalink)  
Antiguo 17/09/2010, 09:28
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Borrar archivos asociados a una base de datos

bueno si todos los archivos los tienes en la misma carpeta (archivos php, imagenes, etc) solo seria necesario poner:

Código PHP:
Ver original
  1. include("conex.php");
  2. $link=conectarse();
  3. $id= $_GET['id'];
  4. $imagen = $_GET['imagen'];
  5.  
  6. mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
  7. unlink($imagen);
  8. header("Location:formulario.php");
  #25 (permalink)  
Antiguo 17/09/2010, 09:37
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Bueno hice el echo pero creo que lo hice mal este es el codigo:


<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];

mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
if($imagen=='imagen');{
echo ' se borro la imagen del servidor';
echo unlink("./autoad/".$imagen);
header("Location:formulario.php");
}
else{
echo "no se borro la imagen del servidor";

?>

Les coento que no soy muy experto en PHP de hecho creo que mis conocimientos son muy basicos.

con el codigo de arriba me salio el siguiente error


Parse error: syntax error, unexpected T_ELSE in /home5/desigoo7/public_html/autoad/borra.php on line 13

entiendo que hay un error en el else pero no se cual es...
Gracias
  #26 (permalink)  
Antiguo 17/09/2010, 09:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

voy a colocarlo de esa forma y ya les comento
  #27 (permalink)  
Antiguo 17/09/2010, 09:43
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Borrar archivos asociados a una base de datos

bueno te recomiendo que te pases por el manual de PHP, y a lo que me referia con que pongas el echo, era a que hagas esto:

Código PHP:
Ver original
  1. include("conex.php");
  2. $link=conectarse();
  3. $id= $_GET['id'];
  4. $imagen = $_GET['imagen'];
  5.  echo $imagen;
  6. /*mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
  7. unlink($imagen);
  8. header("Location:formulario.php");*/

para que veas si te imprimía correctamente el valor de la imagen
  #28 (permalink)  
Antiguo 17/09/2010, 09:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

cambie el codigo asi:

<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];
$imagen = $_GET['imagen'];

mysql_query("delete from galeria where id = $id",$link) or die(mysql_error());
unlink($imagen);
header("Location:formulario.php");
?>

y me sale el siguiente error

Warning: unlink() [function.unlink]: No such file or directory in /home5/desigoo7/public_html/autoad/borra.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at /home5/desigoo7/public_html/autoad/borra.php:8) in /home5/desigoo7/public_html/autoad/borra.php on line 9
  #29 (permalink)  
Antiguo 17/09/2010, 09:45
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

perdon creo que omiti algo ya lo cambio y les comento
  #30 (permalink)  
Antiguo 17/09/2010, 09:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 37
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Borrar archivos asociados a una base de datos

Puse el codigo asi:

<?php
include("conex.php");
$link=conectarse();
$id= $_GET['id'];$imagen = $_GET['imagen'];
echo $imagen;/*mysql_query("delete from galeria where id = $id",$link) or die(mysql_error()); unlink($imagen);header("Location:formulario.php"); */
?>

y al hacer la accion de borrar se quedo la ventana en blanco y el url quedo asi:
http://mipagina.com/autoad/borra.php?id=155

Etiquetas: borrar
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 08:03.