Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] borrar archivo del servidor, mediante php y mysql

Estas en el tema de borrar archivo del servidor, mediante php y mysql en el foro de PHP en Foros del Web. Hola yo de nuevo por estos lares. Ya casi termino mi script propio de rotadores de publicidades automatizado les doy una idea d la funcion ...
  #1 (permalink)  
Antiguo 12/11/2013, 21:11
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
borrar archivo del servidor, mediante php y mysql

Hola yo de nuevo por estos lares. Ya casi termino mi script propio de rotadores de publicidades automatizado les doy una idea d la funcion (la q me falta)

Mediante las funciones fopen, fwrite creo un archivo dinamicamente en el servidor (luego de la creacion, almacena en la base de datos la URL absoluta de dicho archivo, en dnd se esta guardando en el server).

Bueno el asunto es q luego de borrar el registro de la BD, tambien quisiera que se borre el archivo q habia generado en el server; pero q pasa nose como hacerlo, estoy usando la funcion unlink, pero no se como hacerlo a la vez q se es borrado de la BD
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #2 (permalink)  
Antiguo 12/11/2013, 21:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: borrar archivo del servidor, mediante php y mysql

Pues es bien fácil, sólo debes especificar la ruta del archivo a unlink() para borrar el archivo, no hay más ciencia.

Ahora, cuando ejecutas la consulta para borrar debe devolver algún resultado, y con eso basta para manejar la lógica:
Código PHP:
if ($borrado) {
  
unlink($archivo);

¿Dónde está la dificultad?

Yo no la veo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/11/2013, 22:11
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: borrar archivo del servidor, mediante php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues es bien fácil, sólo debes especificar la ruta del archivo a unlink() para borrar el archivo, no hay más ciencia.

Ahora, cuando ejecutas la consulta para borrar debe devolver algún resultado, y con eso basta para manejar la lógica:
Código PHP:
if ($borrado) {
  
unlink($archivo);

¿Dónde está la dificultad?

Yo no la veo.
y cuando son varios registros a eliminar?? (los archivos en el panel de control q le diseñe los selecciono con los chekbox y al borrado lo ejecuto de esta manera:

Código PHP:
<?php
require('config/connect.php');
if(isset(
$_POST['del_multi'])){
    
$cheq$_POST['casilla'];
    foreach (
$cheq as $muchos){
        
$SQL_del"DELETE FROM $Name_tabla WHERE id_camp='$muchos'";
        
mysql_query($SQL_del);
    }
//Fin del Foreach
    
echo"<h4 class='mensaje alert_success'>Todos los registros seleccionados han sido borrados Exitosamente!!!</h4>";
}
//Fin del If Isset
?>
q podria devolver en la parte dnd esta el echo, ya q el array son de uno a varios ID seleccionados listos para ser borrados de la BD. Tu me dices q devuelva algo asi como las IDes que han sido borradas?? y al obtenerlas se las paso al unlinks; pero deberia generar otro foreach???
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #4 (permalink)  
Antiguo 13/11/2013, 19:49
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: borrar archivo del servidor, mediante php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Ahora, cuando ejecutas la consulta para borrar debe devolver algún resultado, y con eso basta para manejar la lógica:
Código PHP:
if ($borrado) {
  
unlink($archivo);

Estuve realizando lo que me has dicho, pero encontré este error
Código:
Warning: unlink(): http does not allow unlinking in C:\xampp\htdocs\ads_rotator\network\del.php on line 11
y este es el código
Código PHP:
<?php
require('config/connect.php');
if(isset(
$_POST['id_del'])){
    
$id$_POST['id_del'];

        if (
$id){
            
$del_reg"SELECT * FROM ads_plus2 WHERE id_camp='$id'";
            
$resmysql_query($del_reg);
            while (
$filamysql_fetch_array($res)){
                
$borrar_reg$fila['url_camp'];
                if (
unlink($borrar_reg));
            }
        }         
            
    
$SQ_del"DELETE FROM $Name_tabla WHERE id_camp='$id'";
    
mysql_query($SQ_del);
    
//mysql_close($connect);     
    
echo"<h4 class='mensaje alert_success'>Todo el registro relacionado con ID [$id} han sido borrados Exitosamente!!!</h4>";    
}
//Fin del If Isset
?>
En la linea 11 tengo este if (unlink($borrar_reg));. Buscando y buscando el error por Internet, en un foro en ingles decía q la función unlink no acepta la url "http". ¿Como solucionarlo?, xq sino no me borra el registro del servidor
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #5 (permalink)  
Antiguo 13/11/2013, 20:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: borrar archivo del servidor, mediante php y mysql

Ese es tu principal problema, no guardaste la ruta física del archivo, guardaste una URL y eso no sirve.

¿Cómo solucionarlo?

Pues sólo tu sabes dónde están tus archivos, intenta eliminar de dicha URL lo que no corresponda a la ruta física del archivo, debes reconstruir la ruta para que funcione.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 13/11/2013, 20:25
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: borrar archivo del servidor, mediante php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Cómo solucionarlo?

Pues sólo tu sabes dónde están tus archivos, intenta eliminar de dicha URL lo que no corresponda a la ruta física del archivo, debes reconstruir la ruta para que funcione.
tengo en la tabla estos campos: id_camp, campanias, url_camp
en url_camp almaceno la url absoluta d dnd esta alojado (y el nombre del archivo); ejemplo:
Código:
| id_camp | campanias | url_camp
| 1       | aldaniti  | http://localhost/ads_rotator/campanias/argentina/120x600/8-amex.html
y a la funcion unlink() le paso la url_camp para eliminarlo, y me dice el error del http

Manualmente puedo acceder al archivo (si copio y pego esa url en el navegador)
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #7 (permalink)  
Antiguo 13/11/2013, 20:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: borrar archivo del servidor, mediante php y mysql

Eso ya lo sabíamos, de hecho lo comentaste en el mensaje anterior: unlink() no funciona con URLs.

Por eso es pésima idea almacenar URLs en la BD, ¿imagina que pasaría si de un día para otro cambias de dominio?

En ese escenario, como el de ahora, la URL no sirve de nada.

Lo correcto es almacenar una ruta relativa del archivo, no completa, sólo aquella parte que es importante, omitiendo la raíz del sitio web.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 13/11/2013, 20:35
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: borrar archivo del servidor, mediante php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso ya lo sabíamos, de hecho lo comentaste en el mensaje anterior: unlink() no funciona con URLs.

Por eso es pésima idea almacenar URLs en la BD, ¿imagina que pasaría si de un día para otro cambias de dominio?

En ese escenario, como el de ahora, la URL no sirve de nada.

Lo correcto es almacenar una ruta relativa del archivo, no completa, sólo aquella parte que es importante, omitiendo la raíz del sitio web.
mmmmmm podría cambiar toda esa batatera por la url relativa ?? ya q acá yo estoy haciendo funcionar el del.php http://localhost/ads_rotator/del.php
y los archivos q intento borrar están en http://localhost/ads_rotator/campanias/argentina/120x600/8-amex.html
Es decir solamente pasarle el url campanias/argentina/120x600/8-amex.html????
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #9 (permalink)  
Antiguo 13/11/2013, 20:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: borrar archivo del servidor, mediante php y mysql

No es tan fácil tampoco, debes pasarle la ruta completa del archivo, te puedes valer de $_SERVER['DOCUMENT_ROOT'] para prefijar la raíz del sitio.

Pero sí, con str_replace() puedes hacer dicho cambio para corregir la ruta.

Has la prueba.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 13/11/2013, 20:49
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: borrar archivo del servidor, mediante php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
No es tan fácil tampoco, debes pasarle la ruta completa del archivo, te puedes valer de $_SERVER['DOCUMENT_ROOT'] para prefijar la raíz del sitio.

Pero sí, con str_replace() puedes hacer dicho cambio para corregir la ruta.

Has la prueba.

mmmmm valla; una cosa es trabajarla en un servidor online, y otra en localhost; a eso te referias pateke; ejemplo:
para construir rutas absolutas que comienzan con la raíz de tu sitio web, podria usar $ _SERVER ['DOCUMENT_ROOT'], ya q se construye la ruta desde la raiz (por decirlo asi)
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #11 (permalink)  
Antiguo 13/11/2013, 20:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: borrar archivo del servidor, mediante php y mysql

Así es, jamás debes almacenar la ruta completa del archivo (incluyendo la raíz del sitio), la idea es que pudiendo obtener dicha raíz de manera genérica siempre, entonces sólo guardes la sub-ruta del archivo (o a veces, sólo el nombre).

Ese valor si lo puedes usar para construir ambos valores: rutas físicas y URLs.

Y así tienes la certeza de sólo almacenar la parte relevante de la información, aquello que es inmutable y no cambiara por mucho.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 13/11/2013, 21:02
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: borrar archivo del servidor, mediante php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Ese valor si lo puedes usar para construir ambos valores: rutas físicas y URLs.

Y así tienes la certeza de sólo almacenar la parte relevante de la información, aquello que es inmutable y no cambiara por mucho.
Genial, ya borra ahora a seguir laburandolo, me falta poco para terminarlo, ahora ya con este ejemplo, voy a borrar un listado de id almacenados en un array; después veré si necesito mas ayuda en el script q estoy desarrollando, pero por el momento se van aclarando las aguas

Saludete pateke
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #13 (permalink)  
Antiguo 13/11/2013, 22:20
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: borrar archivo del servidor, mediante php y mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Y así tienes la certeza de sólo almacenar la parte relevante de la información, aquello que es inmutable y no cambiara por mucho.
pateke, quise utilizar dentro del foreach la misma q sacasmos mas arriba (la de borrar de a un registro tanto de la BD como del server; pero se ve q no me funciono :( en la de borrados multiples

Código PHP:
<?php
require('config/connect.php');
if(isset(
$_POST['del_multi'])){
    
$cheq$_POST['casilla'];
    foreach (
$cheq as $muchos){
        
/*Retenemos el id para utilizarlo primero en el borrado desde el servidor*/
        
if ($muchos){
            
$del_reg_m"SELECT * FROM $Name_tabla2 WHERE id_camp='$muchos'";
            
$resmysql_query($del_reg_m);
            while (
$filamysql_fetch_array($res)){
                
$borrar_reg$fila['url_camp'];
                
//Realizamos el borrado
                
if (unlink($borrar_reg));
            }
        }
        
$SQL_del"DELETE FROM $Name_tabla WHERE id_camp='$muchos'";
        
mysql_query($SQL_del);
        
        
$SQ_del2"DELETE FROM $Name_tabla2 WHERE id_camp='$muchos'";
        
mysql_query($SQ_del2);        
    }
//Fin del Foreach
    
echo"<h4 class='mensaje alert_success'>Todos los registros seleccionados han sido borrados Exitosamente!!!</h4>";
}
//Fin del If Isset
?>
Pero evidentemente me borra el ultimo registro ingresado

este es el original que tenia para hacer el borrado multiple a la base de datos

Código PHP:
<?php
require('config/connect.php');
if(isset(
$_POST['del_multi'])){
    
$cheq$_POST['casilla'];
    foreach (
$cheq as $muchos){
        
$SQL_del"DELETE FROM $Name_tabla WHERE id_camp='$muchos'";
        
mysql_query($SQL_del);
    }
//Fin del Foreach
    
echo"<h4 class='mensaje alert_success'>Todos los registros seleccionados han sido borrados Exitosamente!!!</h4>";
}
//Fin del If Isset
?>
Pero al agregarle el if($muchos) ya no me tomaba el listado de ides del array.
¿Sugerencias??
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.

Etiquetas: fopen, fwrite, mysql+php, unlink
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 04:10.