Foros del Web » Programando para Internet » PHP »

Ayuda con eliminar imagen del servidor

Estas en el tema de Ayuda con eliminar imagen del servidor en el foro de PHP en Foros del Web. Hola buena gente, quiero borrar un registro lo que me funciona bien, pero a la vez borrar el archivo que tengo en la carpeta images ...
  #1 (permalink)  
Antiguo 13/05/2008, 17:21
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Ayuda con eliminar imagen del servidor

Hola buena gente, quiero borrar un registro lo que me funciona bien, pero a la vez borrar el archivo que tengo en la carpeta images dentro de la public_html y me da error:


Warning: unlink($imagen) [function.unlink]: No such file or directory in /home/m/dominio.com.ar/public_html/borrar.php on line 9

Warning: Cannot modify header information - headers already sent by (output started at /home/m/dominio.com.ar/public_html/borrar.php:9) in /home/m/dominio.com.ar/public_html/borrar.php on line 14

Código PHP:
/include ('cone.php');
    
$id=$_GET['id']; 
    
mysql_query("select * from noticias where id = $id"); 
    
$imagen=$row["imagen"]; 
    
//si hay alguna imagen que borrar se borra 
    
if (!($imagen=='images/')) 
        
unlink('$imagen');  
         
    
mysql_query("delete from propiedades where id = $id"); 
     

header("location: actualizar.php"); 
  #2 (permalink)  
Antiguo 13/05/2008, 18:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 171
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Ayuda con eliminar imagen del servidor

prueba sin las comillas ' '

unlink($imagen);

por otro lado, imagen tiene todo? o sea el path tb incluido en ese campo? Porque sino no te va a funcionar.

Comenta como te fue, besos, Agus!
  #3 (permalink)  
Antiguo 13/05/2008, 18:14
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

Cita:
Iniciado por MadKat Ver Mensaje
prueba sin las comillas ' '

unlink($imagen);

por otro lado, imagen tiene todo? o sea el path tb incluido en ese campo? Porque sino no te va a funcionar.

Comenta como te fue, besos, Agus!


Gracias por responder, probé sin las comillas y tampoco funciona. lo del path??? en el campo imagen solo guardo el nombre del archivo. ej: logo.jpg
  #4 (permalink)  
Antiguo 13/05/2008, 19:27
isra00
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda con eliminar imagen del servidor

Quizá estés teniendo problemas con las rutas, y deberías usar rutas absolutas (en vez de images/, emplear /var/www/mi_programa/images, en el caso de Linux). Es lo único que se me ocurre...
  #5 (permalink)  
Antiguo 13/05/2008, 19:30
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 2 meses
Puntos: 18
Re: Ayuda con eliminar imagen del servidor

prueba a poner la ruta completa con $_SERVER['DOCUMENT_ROOT']
  #6 (permalink)  
Antiguo 14/05/2008, 09:15
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

probe con la ruta completa y tampoco, tengo permisos 777 en la carpeta images y tampoco, que puede ser?
Gracias por sus respuesta.
  #7 (permalink)  
Antiguo 14/05/2008, 09:33
Avatar de migueljga  
Fecha de Ingreso: enero-2008
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Ayuda con eliminar imagen del servidor

No conozco todas las formas para extraer los datos obtenidos en las consultas,
suelo usar el mysql_fetch_array().
No se si la forma en que lo estás trabajando funciona, pero yo colocaría lo siguiente donde realizas la consulta:

Código PHP:
$resultado=mysql_query("select * from noticias where id = $id"); 
$row=mysql_fetch_array($resultado); 
Prueba y nos avisas que tal te fue.

Saludos n_n
  #8 (permalink)  
Antiguo 14/05/2008, 10:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

Código PHP:
//recibimos la variable $id 
$id=$_GET[id];
$resultado=mysql_query("select * from propiedades where id = $id",$enlace); 
$row=mysql_fetch_array($resultado);  
    
$imagen=$row["imagen"]; 
    
//si hay alguna imagen que borrar se borra 
    
if ($imagen=='/images/')
        
unlink($imagen);   
//borramos los registros pertenecientes a la id 
$result mysql_query("delete from propiedades where id='$id'",$enlace); 
if (!
$result) { 
$message 'Invalid query: ' mysql_error() . "\n"
$message .= 'Whole query: ' $query
die(
$message); 

header("location: actualizar.php"); 
lo probé asi y ya no me da error y elimina el registro pero no la imagen del servidor.
  #9 (permalink)  
Antiguo 14/05/2008, 10:26
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 2 meses
Puntos: 18
Re: Ayuda con eliminar imagen del servidor

prueba ésto
Código PHP:
//recibimos la variable $id 
$id=$_GET[id];
$resultado=mysql_query("select * from propiedades where id = $id",$enlace); 
$row=mysql_fetch_array($resultado);  
    
$imagen=$row["imagen"]; 
    
//si hay alguna imagen que borrar se borra 
    
if ($imagen=='/images/')
        
unlink($imagen);   
        
//RETRASAR MEDIO SEGUNDO
         
usleep(500000);
//borramos los registros pertenecientes a la id 
$result mysql_query("delete from propiedades where id='$id'",$enlace); 
if (!
$result) { 
$message 'Invalid query: ' mysql_error() . "\n"
$message .= 'Whole query: ' $query
die(
$message); 

header("location: actualizar.php"); 
  #10 (permalink)  
Antiguo 14/05/2008, 10:45
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

mil gracias trasgukabi pero no me elimina el $imagen . me tiene loco, jaja.
  #11 (permalink)  
Antiguo 14/05/2008, 11:56
Avatar de migueljga  
Fecha de Ingreso: enero-2008
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Ayuda con eliminar imagen del servidor

El código no está intentando borrar la imagen al momento de comparar ($imagen=='/images/')
si lo que traes es el nombre de la imagen pues supongo que la condición no se cumple.
Código PHP:
//recibimos la variable $id 
$id=$_GET[id];
$resultado=mysql_query("select * from propiedades where id = $id",$enlace); 
$row=mysql_fetch_array($resultado);  
    
$imagen=$row["imagen"]; 
    
//si hay alguna imagen que borrar se borra 

    
if ($imagen!='')
{
$ruta=$_SERVER['DOCUMENT_ROOT']."/".$imagen;
unlink($ruta);  

//borramos los registros pertenecientes a la id 
$result mysql_query("delete from propiedades where id='$id'",$enlace); 
if (!
$result) { 
$message 'Invalid query: ' mysql_error() . "\n"
$message .= 'Whole query: ' $query
die(
$message); 

header("location: actualizar.php"); 
Además el amigo trasgukabi sugirió que colocaras la ruta donde se alojaban los archivos.
Prueba de nuevo... Suerte! n_n

Última edición por migueljga; 14/05/2008 a las 11:59 Razón: variable con nombre erróneo
  #12 (permalink)  
Antiguo 14/05/2008, 12:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 171
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Ayuda con eliminar imagen del servidor

Prueba asi

Código PHP:
//recibimos la variable $id 
$id=$_GET[id];
$resultado=mysql_query("select * from propiedades where id = $id",$enlace); 
$row=mysql_fetch_array($resultado);  
    
$imagen=$row["imagen"]; 
    
//si hay alguna imagen que borrar se borra 
    
if ($imagen=='/images/')
        
unlink($imagen);   
        
//RETRASAR MEDIO SEGUNDO
         
usleep(500000);
//borramos los registros pertenecientes a la id 
$result mysql_query("delete from propiedades where id='$id'",$enlace); 
unlink($imagen);
if (!
$result) { 
$message 'Invalid query: ' mysql_error() . "\n"
$message .= 'Whole query: ' $query
die(
$message); 

header("location: actualizar.php"); 
Besos, Agus.
  #13 (permalink)  
Antiguo 14/05/2008, 13:38
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

Hola chicos/as como buen argentino "para cada solución, encontramos un problema" jaja.
Gracias y gracias por su amabilidad, lo hice así buscando y buscando

funciona bien, pero cuando ingreso los registros en la web de inmobiliaraia por defecto si no hay imagen para subir, cargo ni.jpg para que diga no hay imagen disponible.
Al borrar esta me quedarán todos los registros con ni.jpg sin imagen.
en ese link pueden verlo.

http://www.mvlsistemas.com.ar/pagina...0en%20Alquiler

Código PHP:
<?php
$id
=$_GET["id"];

$resultado=mysql_query("select * from propiedades where id = $id",$enlace); 

while(
$row=mysql_fetch_array($resultado))
{
$imagen ="images/".$row['imagen']:
unlink("images/".$row['imagen']);
}
$result mysql_query("delete from propiedades where id='$id'",$enlace); 
if (!
$result) { 
$message 'Invalid query: ' mysql_error() . "\n"
$message .= 'Whole query: ' $query
die(
$message); 

header("location: actualizar.php"); 
?>

Última edición por mvlsistemas; 14/05/2008 a las 13:49
  #14 (permalink)  
Antiguo 14/05/2008, 14:53
Avatar de migueljga  
Fecha de Ingreso: enero-2008
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Ayuda con eliminar imagen del servidor

No me quedó muy claro tu nuevo problema pero si lo que pretendes es evitar que elimine el archivo "ni.jpg" solo coloca el unlikn() dentro de un "if" que compare "$row['imagen']" es igual a "ni.jpg"

Intentale a ver :)
  #15 (permalink)  
Antiguo 14/05/2008, 16:03
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

Cita:
Iniciado por migueljga Ver Mensaje
No me quedó muy claro tu nuevo problema pero si lo que pretendes es evitar que elimine el archivo "ni.jpg" solo coloca el unlikn() dentro de un "if" que compare "$row['imagen']" es igual a "ni.jpg"

Intentale a ver :)
Claro tal cual lo puse así
Código PHP:

while($row=mysql_fetch_array($resultado))
{
if (
$row['imagen'] != ni.jpg)
unlink("images/".$row['imagen']);


funciona perfecto. ahora solo me queda concatenar para que me borre $imagen, $imagen1, $imagen2 y listo.

ojalá pueda ayudar algún día como uds. graciasss!!!
  #16 (permalink)  
Antiguo 14/05/2008, 18:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

bueno acá se darán cuenta que soy un novato que aprende para ser menos novato, jaja.

acá se me re-complicó
como les decía quiero borrar 3 registros en tres campos. imagen,imagen1,imagen2
así borra bien cuando las tres no son ni.jpg ahora si tres son ni.jpg borra la primera y las otras dos al no encontrarlas da error.

Puedo meter un else en cada if dentro del while?


Código PHP:
while($row=mysql_fetch_array($resultado))
{
if (
$row['imagen'] != ni.jpg)
unlink("images/".$row['imagen']);
if (
$row['imagen1'] != ni.jpg)
unlink("images/".$row['imagen1']);
if (
$row['imagen2'] != ni.jpg)
unlink("images/".$row['imagen2']);


Última edición por mvlsistemas; 14/05/2008 a las 18:51
  #17 (permalink)  
Antiguo 14/05/2008, 19:11
Avatar de bLEx  
Fecha de Ingreso: mayo-2008
Ubicación: Villa Alemana, Chile
Mensajes: 181
Antigüedad: 16 años, 6 meses
Puntos: 5
Re: Ayuda con eliminar imagen del servidor

mmm me vas a creer que he leido todo y no he entendido tu problema... Aunque no sea mucho aporte te recomiendo tabular sentencias y mantener un order, ademas de como todos te han dado a conocer, comentar lass secciones.

Me gustaria ayudarte pero aun no me queda claro.. sorry
  #18 (permalink)  
Antiguo 15/05/2008, 13:27
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Re: Ayuda con eliminar imagen del servidor

Hola nuevamente, seguro no he sido claro en el último mensaje.
Si el usuario no sube una imagen en el campo imagen yo por defecto en el inmput imagen como valor inicial dejo ni.jpg entonces esta se muestra por defecto y dice no hay imagen disponible, en el link que esta arriba entras y lo ves.
Que sucede, al eliminar una propiedad con ni.jpg esta se borra del servidor y las demas propiedades que tambien usan esa imagen ni.jpg quedan sin imagen por defecto.
Ese es en si ahora el problema.
Hay otra forma de hacerlo?
  #19 (permalink)  
Antiguo 15/05/2008, 19:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Respuesta: Ayuda con eliminar imagen del servidor

Hola,

Lo podrias arreglar añadiendo a cada ni.jpg la id de propiedades
o sea
nombrefinal = id_propiedades + ni.jpg

Y al borrar la borras solo la imagen por defecto de ese user en concreto.

espero haberme explicado.
  #20 (permalink)  
Antiguo 15/05/2008, 20:11
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: Ayuda con eliminar imagen del servidor

Cita:
Iniciado por jaronu Ver Mensaje
Hola,

Lo podrias arreglar añadiendo a cada ni.jpg la id de propiedades
o sea
nombrefinal = id_propiedades + ni.jpg

Y al borrar la borras solo la imagen por defecto de ese user en concreto.

espero haberme explicado.
gracias Jaronu, es buena tu idea, te muestro como los inserto

Código PHP:
<?php
$titulo 
$_POST['titulo'];
$telefono $_POST['telefono'];
$operacion$_POST['operacion'];
$banos $_POST['banos'];
$habitaciones $_POST['habitaciones'];
$ciudad $_POST['ciudad'];
$provincia $_POST['provincia'];
$mtscuadrados $_POST['mtscuadrados'];
$precioventa $_POST['precioventa'];
$preciopesos $_POST['preciopesos'];
$preciorenta $_POST['preciorenta'];
$tipoinmueble $_POST['tipoinmueble'];
$descripcion $_POST['descripcion'];
$fechaingreso $_POST['fechaingreso'];
$imagen$_POST['imagen'];
$imagen1$_POST['imagen1'];
$imagen2$_POST['imagen2'];
$referencia$_POST['referencia'];
$fechaingreso date("Y-m-d");

$ruta="./images/";//ruta carpeta donde queremos copiar las imágenes
$uploadfile_temporal=$_FILES['imagen']['tmp_name'];
$uploadfile_nombre=$ruta.$_FILES['imagen']['name'];

if (
is_uploaded_file($uploadfile_temporal))
{
    
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
    echo 
"el archivo 1 subio correctamente";
}
$uploadfile_temporal=$_FILES['imagen1']['tmp_name'];
$uploadfile_nombre1=$ruta.$_FILES['imagen1']['name'];

if (
is_uploaded_file($uploadfile_temporal))
{
    
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre1);
    echo 
"el archivo 2 subio correctamente";
}
$uploadfile_temporal=$_FILES['imagen2']['tmp_name'];
$uploadfile_nombre2=$ruta.$_FILES['imagen2']['name'];

if (
is_uploaded_file($uploadfile_temporal))
{
    
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre2);
    echo 
"el archivo 3 subio correctamente";    
}
$uploadfile_nombre=$_FILES['imagen']['name'];
    
$uploadfile_nombre1=$_FILES['imagen1']['name'];
    
$uploadfile_nombre2=$_FILES['imagen2']['name'];
include (
'cone.php');
//Ejecucion de la sentencia SQL
mysql_query("insert into propiedades (titulo,telefono,operacion,banos,habitaciones,ciudad,provincia,mtscuadrados,precioventa,preciopesos,preciorenta,tipoinmueble,descripcion,fechaingreso,imagen,imagen1,imagen2,referencia) values ('$titulo','$telefono','$operacion','$banos','$habitaciones','$ciudad','$provincia','$mtscuadrados','$precioventa','$preciopesos','$preciorenta','$tipoinmueble','$descripcion','$fechaingreso','$uploadfile_nombre','$uploadfile_nombre1','$uploadfile_nombre2','$referencia')",$enlace);

?>
  #21 (permalink)  
Antiguo 15/05/2008, 20:57
 
Fecha de Ingreso: marzo-2008
Mensajes: 171
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Ayuda con eliminar imagen del servidor

Que paso con el while() y los if() ? No funciona?

Porque no veo ningun error ahi

Saludos, Agus
  #22 (permalink)  
Antiguo 16/05/2008, 08:22
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: Ayuda con eliminar imagen del servidor

Hola, el subir va perfecto, después de mucho conseguí subir 3 archivos a la juntos y hacer el insert en la base.
Sigo sin enncontrar como solucionar lo de "no hay imagen disponible", como dice jaronu seroa bueno poner algo + desdpues de ni.jpg para renombrarlo.
Estoy liado con eso, pasa que despues si te borra un ni.jpg te borra todos.

El sube ese en php va bien, faltaría hacer que dedimensione al imagen y demas pero va perfecto.
Para las inmobiliarias va a funcionar perfecto lo que estoy haciendo, súper-básico, pero funciona, sólo que son detalles que son necesarios e imprescindibles. Lo demás ya lo tengo todo, me falta esto y me tiene jaja.

Saludos
  #23 (permalink)  
Antiguo 16/05/2008, 11:15
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Respuesta: Ayuda con eliminar imagen del servidor

prueba a usar una funcion como esta que lo que hace es crearte una cadena aleatoria de la longitud que le indiques, podrias usarla para poner un nombre aleatorio a cada ni.jpg

Código PHP:
<?php 
function genera_random($longitud){ 
    
$exp_reg="[^A-Z0-9]"
    return 
substr(eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())), 
       
0$longitud); 
}


$titulo $_POST['titulo']; 
$telefono $_POST['telefono']; 
$operacion$_POST['operacion']; 
$banos $_POST['banos']; 
$habitaciones $_POST['habitaciones']; 
$ciudad $_POST['ciudad']; 
$provincia $_POST['provincia']; 
$mtscuadrados $_POST['mtscuadrados']; 
$precioventa $_POST['precioventa']; 
$preciopesos $_POST['preciopesos']; 
$preciorenta $_POST['preciorenta']; 
$tipoinmueble $_POST['tipoinmueble']; 
$descripcion $_POST['descripcion']; 
$fechaingreso $_POST['fechaingreso']; 
$imagen$_POST['imagen']; 
$imagen1$_POST['imagen1']; 
$imagen2$_POST['imagen2']; 
$referencia$_POST['referencia']; 
$fechaingreso date("Y-m-d"); 


$aleatorio genera_random(20);//cadena de 20 caracteres
$ruta="./images/";//ruta carpeta donde queremos copiar las imágenes 
$uploadfile_temporal=$_FILES['imagen']['tmp_name']; 
$uploadfile_nombre=$ruta.$aleatorio.$_FILES['imagen']['name']; 



if (
is_uploaded_file($uploadfile_temporal)) 


    
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre.); 
    echo 
"el archivo 1 subio correctamente"
}
esta es otra idea, espero te sirva
Un saludo

Última edición por jaronu; 16/05/2008 a las 11:21
  #24 (permalink)  
Antiguo 16/05/2008, 19:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 20 años, 6 meses
Puntos: 4
Respuesta: Ayuda con eliminar imagen del servidor

Tremenda ayuda Jaronu, gracias.
Lo solucione asi y con algun dato mas rústico para que funcione.
Por que al subir 3 veces ni.jpg en la misma propiedad le genera el mismo aleatorioa las 3 entonces despues al eliminarla me sucede lo mismo, Entonces el cliente debera tener en misdocumentos/misimagenes ni1 ni2 y ni3 para subir si la propiedad no tiene imagen a mostrar.
Bue muy rústico digamos pero al menos funcionando.
Y al registro le asigne $aleatorio para que tambien le de el mismo valor que a la imagen asi:

Código PHP:
$uploadfile_nombre=$aleatorio.$_FILES['imagen']['name'];
    
$uploadfile_nombre1=$aleatorio.$_FILES['imagen1']['name'];
    
$uploadfile_nombre2=$aleatorio.$_FILES['imagen2']['name'];
include (
'cone.php');
//Ejecucion de la sentencia SQL


mysql_query("insert into propiedades (titulo,telefono,operacion,banos,habitaciones,ciudad,provincia,mtscuadrados,precioventa,preciopesos,preciorenta,tipoinmueble,descripcion,fechaingreso,imagen,imagen1,imagen2,referencia) values ('$titulo','$telefono','$operacion','$banos','$habitaciones','$ciudad','$provincia','$mtscuadrados','$precioventa','$preciopesos','$preciorenta','$tipoinmueble','$descripcion','$fechaingreso','$uploadfile_nombre','$uploadfile_nombre1','$uploadfile_nombre2','$referencia')",$enlace); 

gracias, nuevamente millones de gracias!!!

Última edición por mvlsistemas; 16/05/2008 a las 19:25
  #25 (permalink)  
Antiguo 16/05/2008, 21:21
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Respuesta: Ayuda con eliminar imagen del servidor

podias haber hecho mas cadenas aleatorias para los otros ni.jpg

Cita:

$aleatorio = genera_random(20);//cadena de 20 caracteres
$aleatorio1 = genera_random(18);//cadena de 18 caracteres
$aleatorio2 = genera_random(19);//cadena de 19 caracteres
Un saludo y me alegro de que te funcionara.
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:08.