Foros del Web » Programando para Internet » PHP »

Ayuda con unlink()

Estas en el tema de Ayuda con unlink() en el foro de PHP en Foros del Web. Buenas, tengo un pequeño problemilla. tengo un borrar registro, q me borra los datos de este. en eso no hay problema. la cosa es que ...
  #1 (permalink)  
Antiguo 25/01/2006, 11:20
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Ayuda con unlink()

Buenas, tengo un pequeño problemilla. tengo un borrar registro, q me borra los datos de este. en eso no hay problema.

la cosa es que quiero borrar tb la foto que tiene asignada. la foto tiene guardada la url completa:

http://www.loquesea.com/foto1.jpg

y me da un error. tengo otros unlink solamente de carpeta/nombrearchivo, y me lo borra sin problemas, pero en este caso me interesa que este la ruta completa.

alguien puede ayudarme?

salu2
  #2 (permalink)  
Antiguo 25/01/2006, 13:31
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
No queda muy claro tu problema. Podrias detallarlo más porfavor.
  #3 (permalink)  
Antiguo 25/01/2006, 13:41
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
hace algo por el estilo
$nombrefoto=explode("/",$_direccion_foto);
y ahora con
$largo=count($nombrefoto)-1;
conseguis la ultima posicion del array con el nombre del archivo
luego con un simple
if(file_exists($nombrefoto[$largo]))//con esto comprobas q exista el arcihvo a borrar
unlink($nombrefoto[$largo]);
y listo archivo borrado
si el archivo esta adentro de una carpeta por ejemploç
http://www.miweb.com/fotos/img1.jpg
donde haces
$largo=count($nombrefoto)-1;
deberias poner
$largo=count($nombrefoto)-2;
para q te tome con la carpeta
saludos espero te sirva
  #4 (permalink)  
Antiguo 25/01/2006, 13:42
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
gracias mauled, es muy simple.

tengo unos registros que tienen foto. elimino los registros por el id de referencia, y tengo hecho un unlink de la foto asociada.

el problema es que en la foto, tengo guardada la ruta completa. la cosa es que si hago un unlink de una carpeta, si que me la borra, pero al estar la ruta completa, pues no.

que hago mal? o hay alguna otra forma de hacerlo..?

salu2
  #5 (permalink)  
Antiguo 25/01/2006, 13:43
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
hgracias emiliodeg, pero no he entendido nada!

puedes explicarme mejor?
  #6 (permalink)  
Antiguo 25/01/2006, 13:48
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
el error que me da es el siguiente:

Warning: unlink(http://www.loquesea.com/admin/fotos/...2-1111-1.jpg): No such file or directory in /home/loqsea/www/admin/borrar_producto.php on line 33

y en esa linea tengo
unlink($foto1);

salu2
  #7 (permalink)  
Antiguo 25/01/2006, 14:03
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
bien, ferranWEB ese error es pq no encontro el archivo
para eso yo te habia puetso q preguntaras primero si existia el archivo

if(file_exists($nombrefoto[$largo]))//con esto comprobas q exista el arcihvo a borrar
unlink($nombrefoto[$largo]);

lo q hace el explode es dividir una cadena en tantas partes como se repita el caracter q buscas aca utilizamos el / pq es el q divide las carpetas

$nombrefoto=explode("/",$_direccion_foto);

osea aca te qeudaria un arreglo con estos valores
array[0]=http:
array[1]=www.loquesea.com
array[2]=foto1.jpg

cuando haces $largo=count($nombrefoto)-1;
el resultsado del count te va a dar 3 pero vos queres lo de la posicion 2 entonces restamos 1 para pararnos en la posicion deseada

y ahora si podes preguntar si existe el archivo y luego eleminarlo con unlink
se entendio mejor?¿
  #8 (permalink)  
Antiguo 25/01/2006, 14:16
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
creo que tu problema es el parametro que le estas enviando le estas enviando una direccion web y no la direccion real osea /fotos/...2-1111-1.jpg ya que el scipt lo estas llamando desde el path admin no uses la direccion web referencia la ubicacion
  #9 (permalink)  
Antiguo 25/01/2006, 14:17
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
puedes poner el caso practico con mi codigo?

$sql = "DELETE FROM producto WHERE idproducto=".$_POST['idproducto'];
$res = mysql_query($sql) or die (mysql_error());

if(file_exists($foto1)){
unlink($foto1);
echo "La foto existe";
}

y el caso es que no entro en el if. me estoy volviendo loco

salu2
  #10 (permalink)  
Antiguo 25/01/2006, 14:20
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
amigo dime que contiene $foto1 y te daras cuenta de lo que te digo
  #11 (permalink)  
Antiguo 25/01/2006, 14:21
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
gracias dopon, pero tengo la necesidad de hacerlo asi,pq con las rutas es mas lioso. llamo desde varios sitios, y me es mas complicado...

salu2
  #12 (permalink)  
Antiguo 25/01/2006, 14:28
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
haber amigo dejame explicarte, NO puedes usar como parametro de unlink una direccion url sencillamente usa la ruta de donde se encuentra el archivo, si deseas sencillamente guardarlo en urls bien pero a la hora de borrar debes hacerle un tratamiento a esa cadena y convertirlo en la ruta para que lo puedas borrar
  #13 (permalink)  
Antiguo 25/01/2006, 14:29
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
entiendo lo q dices dopon. $foto1 contiene la ruta de internet, es decir

http://www.loqsea.com/admin/fotos/foto1.jpg...

pero necesito tener la ruta. hay alguna forma con el explode que comentaba el amigo emiliodeg, de quedarme solo con el nombre de la foto?

salu2
  #14 (permalink)  
Antiguo 25/01/2006, 14:31
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
haber si asi es y por lo visto el script esta en el path de admin pues debes sacra lo que haya despues de admin y listo

si se encuentra en el path de admin aca hay un pequeño codigo

Código PHP:
$inicio strpos($url'admin/'0);
$ruta=substr($url,$inicio+6,strlen($url));
unlink($ruta); 

Última edición por dopon; 25/01/2006 a las 14:36
  #15 (permalink)  
Antiguo 25/01/2006, 14:39
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
no puedo hacer ../admin... neceito toda la ruta
  #16 (permalink)  
Antiguo 25/01/2006, 19:12
Avatar de aL+@rgÔt"  
Fecha de Ingreso: enero-2006
Mensajes: 8
Antigüedad: 18 años, 3 meses
Puntos: 0
Cita:
Iniciado por mauled
No queda muy claro tu problema. Podrias detallarlo más porfavor.
sip necesitamos saber +
  #17 (permalink)  
Antiguo 26/01/2006, 06:54
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Mira porque no expones TODO tu problema tal y como lo tienes en UN solo post lo que haz hecho es dar la informaciona trozos me diste un ejemplo y te di la solucion al ejemplo pero el ejemplo no es lo que necesitas, entonces por favor coloca bien lo que necesitas y no hagas perder tiempo con ejemplos porfavor
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 18:21.