Foros del Web » Programando para Internet » PHP »

Borra archivo con unlink

Estas en el tema de Borra archivo con unlink en el foro de PHP en Foros del Web. Hola amigos Tengo un formulario para borrar un registro de la BD esta registro tiene tiene enlazado un mp3 y queiro que al borrar el ...
  #1 (permalink)  
Antiguo 22/09/2011, 10:37
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Borra archivo con unlink

Hola amigos

Tengo un formulario para borrar un registro de la BD esta registro tiene tiene enlazado un mp3 y queiro que al borrar el registro de la BD tambien me borre el archivo y he hecho esto

Código PHP:
if ((isset($_POST['campoID'])) && ($_POST['campoID'] != "")) {
  
$deleteSQL sprintf("DELETE FROM mhh_temas WHERE id_tema=%s",
                       
GetSQLValueString($_POST['campoID'], "int"));
  
  
mysql_select_db($database_mhh$mhh);
  
$Result1 mysql_query($deleteSQL$mhh) or die(mysql_error());
  
unlink ($row_Rc_temas['link']);// Aki quiero que borre el archivo la ruta la trae de la BD
  

  
$deleteGoTo "zona_usuario.php?id=" $row_sesion['id_usu'] . "";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?";
    
$deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$deleteGoTo));

pero no funciona...alguna idea?
  #2 (permalink)  
Antiguo 22/09/2011, 10:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Borra archivo con unlink

Sería bueno saber si te genera algún error, o bien, si la ruta que tienes en la BD es absoluta y real.
Código PHP:
if (is_file($row_Rc_temas['link'])) unlink ($row_Rc_temas['link']);
else die(
'El archivo no existe:' $row_Rc_temas['link']); 
¿Puedes mostrarnos un ejemplo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/09/2011, 10:41
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Borra archivo con unlink

Una pregunta... De donde estas sacando este dato ?

$row_Rc_temas['link']

Se supone que esa es la ruta del archivo, pero no se de donde la estas sacando... de la base de datos...? Pues no veo ningún SELECT para traer ese registro, de un arreglo...? Pues no veo ningún arreglo por ningún lado.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 22/09/2011, 10:42
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Borra archivo con unlink

No no me genera ningun error y la ruta esta bien por que esa misma ruta "$row_Rc_temas['link']" la utilizo para enlazarlo con un flash que reproduce el sonido. La ruta es relativa seria algo asi "mp3/nombre_delacancion.mp3"
  #5 (permalink)  
Antiguo 22/09/2011, 10:44
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Borra archivo con unlink

Cita:
Iniciado por jotaincubus Ver Mensaje
Una pregunta... De donde estas sacando este dato ?

$row_Rc_temas['link']

Se supone que esa es la ruta del archivo, pero no se de donde la estas sacando... de la base de datos...? Pues no veo ningún SELECT para traer ese registro, de un arreglo...? Pues no veo ningún arreglo por ningún lado.

Pero esa ruta está almacenada en la misma tabla de la que kiero borrar el registro ¿tendria que hacer un select?
  #6 (permalink)  
Antiguo 22/09/2011, 10:46
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Borra archivo con unlink

Claro amigo, vos la eliminas y después queres utilizarla ? y ademas de eso no haces un SELECT para traerla ? entonces como va a saber PHP que es lo que tiene que eliminar sino esta por ningún lado?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #7 (permalink)  
Antiguo 22/09/2011, 10:47
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Borra archivo con unlink

ok muchas gracias
  #8 (permalink)  
Antiguo 22/09/2011, 10:50
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Borra archivo con unlink

mi sugerencia Ghosty es que hagas un sql almacenando en un fetch_array el campo donde se guarda el archivo mp3 y luego colocarias tu otra consulta que borra tu registro. lo pones asi Ghosty.

Código PHP:
Ver original
  1. if ((isset($_POST['campoID'])) && ($_POST['campoID'] != ""))
  2. {
  3. $elimp3 = "SELECT * FROM mhh_temas WHERE id = '".$_POST['campoID']."'";
  4. $rowmp3 = mysql_query($elimp3,$mhh) or die(mysql_error());
  5. $rs_mp3 = mysql_fetch_array($rowmp3);
  6.  
  7. if($rs_mp3['link']!="") // si el campo $rs_mp3['link'] es diferente al vacio.
  8. {
  9. @unlink("$rs_mp3['link']");
  10. }
  11.  
  12. // la consulta DELETE.
  13. $deleteSQL = sprintf("DELETE FROM mhh_temas WHERE id_tema=%s",
  14.                        GetSQLValueString($_POST['campoID'], "int"));
  15.  
  16. mysql_select_db($database_mhh, $mhh);
  17. $Result1 = mysql_query($deleteSQL, $mhh) or die(mysql_error());
  18.  
  19. header(sprintf("Location: %s", $deleteGoTo));
  20.  
  21. }

si persiste el problema, posteas tu consulta.

Última edición por esaenz22; 22/09/2011 a las 10:50 Razón: correcion del codigo.
  #9 (permalink)  
Antiguo 22/09/2011, 10:52
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Borra archivo con unlink

Cita:
Iniciado por esaenz22 Ver Mensaje
mi sugerencia Ghosty es que hagas un sql almacenando en un fetch_array el campo donde se guarda el archivo mp3 y luego colocarias tu otra consulta que borra tu registro. lo pones asi Ghosty.

Código PHP:
Ver original
  1. if ((isset($_POST['campoID'])) && ($_POST['campoID'] != ""))
  2. {
  3. $elimp3 = "SELECT * FROM mhh_temas WHERE id = '".$_POST['campoID']."'";
  4. $rowmp3 = mysql_query($elimp3,$mhh) or die(mysql_error());
  5. $rs_mp3 = mysql_fetch_array($rowmp3);
  6.  
  7. if($rs_mp3['link']!="") // si el campo $rs_mp3['link'] es diferente al vacio.
  8. {
  9. @unlink("$rs_mp3['link']");
  10. }
  11.  
  12. // la consulta DELETE.
  13. $deleteSQL = sprintf("DELETE FROM mhh_temas WHERE id_tema=%s",
  14.                        GetSQLValueString($_POST['campoID'], "int"));
  15.  
  16. mysql_select_db($database_mhh, $mhh);
  17. $Result1 = mysql_query($deleteSQL, $mhh) or die(mysql_error());
  18.  
  19. header(sprintf("Location: %s", $deleteGoTo));
  20.  
  21. }

si persiste el problema, posteas tu consulta.
En realidad si se quiere algo mas "profesional" debería verificar si el archivo fue eliminado correctamente antes de hacer el DELETE en la base de datos.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #10 (permalink)  
Antiguo 22/09/2011, 10:57
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Borra archivo con unlink

bueno. eso lo deberia verificar el. no entiendo porque la critica.
  #11 (permalink)  
Antiguo 22/09/2011, 10:58
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Borra archivo con unlink

Cita:
Iniciado por esaenz22 Ver Mensaje
bueno. eso lo deberia verificar el. no entiendo porque la critica.
No es una critica es un aporte.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #12 (permalink)  
Antiguo 22/09/2011, 10:58
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Borra archivo con unlink

Cita:
Iniciado por jotaincubus Ver Mensaje
Claro amigo, vos la eliminas y después queres utilizarla ? y ademas de eso no haces un SELECT para traerla ? entonces como va a saber PHP que es lo que tiene que eliminar sino esta por ningún lado?
Bueno no se si el codigo esta muy bien pero asi me funciona


Código PHP:

if ((isset($_POST['campoID'])) && ($_POST['campoID'] != "")) {
    
  
$deleteSQL sprintf("DELETE FROM mhh_temas WHERE id_tema=%s",
                       
GetSQLValueString($_POST['campoID'], "int"));
                
mysql_select_db($database_mhh$mhh);
                
$query_file "SELECT * FROM mhh_temas";
                
$Rc_file mysql_query($query_file$mhh) or die(mysql_error());
                
$row_file mysql_fetch_assoc($Rc_mk);
                
$totalRows_file mysql_num_rows($Rc_mk);
                
$query_Rc_mk "SELECT * FROM mhh_temas";
                
$Rc_file mysql_query($query_file$mhh) or die(mysql_error());
                
$row_file mysql_fetch_assoc($Rc_file);
                
$totalRows_Rc_file mysql_num_rows($Rc_file);
                
unlink($row_file['link']);
 
mysql_select_db($database_mhh$mhh);
  
$Result1 mysql_query($deleteSQL$mhh) or die(mysql_error());
  
  

  
$deleteGoTo "zona_usuario.php?id=" $row_sesion['id_usu'] . "";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?";
    
$deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$deleteGoTo));

Como lo ves?
  #13 (permalink)  
Antiguo 22/09/2011, 11:01
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Borra archivo con unlink

Si te funciona tu eres el que decide si quieres dejarlo así o no, por lo que veo estas utilizando DW, este genera mucho código innecesario, pero como te digo si así te funciona y estas a gusto con ello pues déjalo así, es tu aplicación y estas en todo tu derecho de escoger la forma de desarrollarla.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #14 (permalink)  
Antiguo 22/09/2011, 11:01
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Borra archivo con unlink

porque tu codigo esta desordenado y porque repites la misma consulta ?. en mi opinion, lo veo desordenado. tu generas el codigo mediante dreamweaver y eso hace que tu programacion no se entienda bien.

revisa bien el codigo que mostre. y como dijo jotaincubus, si te funciona, tu eres el que decide.

Última edición por esaenz22; 22/09/2011 a las 11:05 Razón: correcion.
  #15 (permalink)  
Antiguo 22/09/2011, 11:09
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Borra archivo con unlink

Cita:
Iniciado por esaenz22 Ver Mensaje
porque tu codigo esta desordenado y porque repites la misma consulta ?. en mi opinion, lo veo desordenado. tu generas el codigo mediante dreamweaver y eso hace que tu programacion no se entienda bien.

revisa bien el codigo que mostre. y como dijo jotaincubus, si te funciona, tu eres el que decide.
Ese codigo me lo genera DW mirare como hacer la consulta sin DW. Se que genera mucho codigo que no sirve pero...

Estoy mirando tu codigo a ver como va pero me dice No database selected
  #16 (permalink)  
Antiguo 22/09/2011, 11:12
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Borra archivo con unlink

muestrame como lo has implementado.
  #17 (permalink)  
Antiguo 22/09/2011, 11:14
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Borra archivo con unlink

Cita:
Iniciado por esaenz22 Ver Mensaje
muestrame como lo has implementado.
Código PHP:
  if ((isset($_POST['campoID'])) && ($_POST['campoID'] != ""))
    {
    
$elimp3 "SELECT * FROM mhh_temas WHERE id = '".$_POST['campoID']."'";
    
$rowmp3 mysql_query($elimp3,$mhh) or die(mysql_error());
    
$rs_mp3 mysql_fetch_array($rowmp3);
     
    if(
$rs_mp3['link']!=""// si el campo $rs_mp3['link'] es diferente al vacio.
    
{
    @
unlink($rs_mp3['link']);
    }
     
    
// la consulta DELETE.
    
$deleteSQL sprintf("DELETE FROM mhh_temas WHERE id_tema=%s",
                           
GetSQLValueString($_POST['campoID'], "int"));
     
    
mysql_select_db($database_mhh$mhh);
    
$Result1 mysql_query($deleteSQL$mhh) or die(mysql_error());
     
 
     
    }
  
$deleteGoTo "zona_usuario.php?id=" $row_sesion['id_usu'] . "";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?";
    
$deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$deleteGoTo)); 
  #18 (permalink)  
Antiguo 22/09/2011, 11:31
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Borra archivo con unlink

ok. te muestra que la base de datos no ha sido seleccionada. el dreamweaver como genera codigo php, las conexiones y las consulta se repiten siempre que llamas a un sql. y eso es un error. porque que pasaria si tienes mas de una consulta en otros archivos php.

lo recomendable es que tu deber crear el codigo para la conexion y no estar repitiendo la funcion para llamar a la bd.

volviendo al tema, seria asi el codigo (en mi sano juicio).

Código PHP:
Ver original
  1. if ((isset($_POST['campoID'])) && ($_POST['campoID'] != ""))
  2.     {
  3.     mysql_select_db($database_mhh, $mhh);
  4.     $elimp3 = "SELECT * FROM mhh_temas WHERE id = '".$_POST['campoID']."'";
  5.     $rowmp3 = mysql_query($elimp3,$mhh) or die(mysql_error());
  6.     $rs_mp3 = mysql_fetch_array($rowmp3);
  7.      
  8.     if($rs_mp3['link']!="") // si el campo $rs_mp3['link'] es diferente al vacio.
  9.     {
  10.     @unlink($rs_mp3['link']);
  11.     }
  12.      
  13.     // la consulta DELETE.
  14.     $deleteSQL = sprintf("DELETE FROM mhh_temas WHERE id_tema=%s",
  15.                            GetSQLValueString($_POST['campoID'], "int"));
  16.      
  17.     mysql_select_db($database_mhh, $mhh);
  18.     $Result1 = mysql_query($deleteSQL, $mhh) or die(mysql_error());
  19.  
  20.   $deleteGoTo = "zona_usuario.php?id=" . $row_sesion['id_usu'] . "";
  21.   if (isset($_SERVER['QUERY_STRING'])) {
  22.     $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
  23.     $deleteGoTo .= $_SERVER['QUERY_STRING'];
  24.   }
  25.  
  26.   header(sprintf("Location: %s", $deleteGoTo));
  27.  
  28. }

Última edición por esaenz22; 22/09/2011 a las 11:33 Razón: correccion del codigo.
  #19 (permalink)  
Antiguo 22/09/2011, 11:36
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Borra archivo con unlink

Funciona perfectamente. Muchas gracias

Etiquetas: mysql, registro, sql, unlink, usuarios
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 14:35.