Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Como borrar una imagen del servidor al borrar el post

Buen día amigo.
Estuve observando el post anterior sobre: Borrar imagenes del post subido en editar y ciertamente el código cumple muy bien su función eliminando la foto en la edición de post y en la carpeta upload al mismo tiempo.

Pero cuando el post es eliminado del todo la imagen permanece en el servidor ignorando el código. Es allí que me surgió esta interrogante:

¿como se podría lograr que una imagen que fue subida al servidor sea eliminada al momento que se borra todo el post?

De antemano; Muchas gracias por todo el apoyo estimado amigo.
Editado
1
Puntos
288
Visitas
15
Resp
Por rquilcate hace 5 meses
Experto Sitio web
Respuesta #1
buenas, es muy sencillo solo tienes que agregar la función unlink de php antes de que se elimine el post con DELETE de sql.

ten en cuenta que para borrar la imagen, antes tienes que hacer una consulta para obtener la o las imágenes del post que estas borrando y pasar el unlink a todas para que se borren del server

si quieres pasa por aquí el código que te borra el post (con el DELETE sql) y vamos mirando ideas

slds
0
Puntos
Por alber hace 5 meses
Administrador
Respuesta #2
Gracias por tu respuesta amigo Alber.
Ese es el código que está en el fichero borrar.php
<?php require_once('../conexion.php');


//2016-10-07 21:23:10

unlink('../img/upload/'.DELETE sql['nombre']);

echo ';)';

 ?>
0
Puntos
Por rquilcate hace 5 meses
Experto Sitio web
Respuesta #3
¿Está correcto haberlo insertado en ese fichero?
0
Puntos
Por rquilcate hace 5 meses
Experto Sitio web
Respuesta #4
rquilcate dijo: ¿Está correcto haberlo insertado en ese fichero?
me refería al fichero que te borra el post.. no al fichero borrar.php ;)
0
Puntos
Por alber hace 5 meses
Administrador
Respuesta #5
Ese es el código que actualmente estoy usando amigo Alber ( el que funciona borrando la imagen en modo edición de post).
<?php require_once('../conexion.php'); 

//Validar formulario
if(!isset($_POST['nombre']) || $_POST['nombre']=='') exit;

//$_SESSION['imagenes']; ####edwerewr

$elimiar=array('####'.$_POST['nombre'] , $_POST['nombre'].'####', $_POST['nombre']);

//Aquí se elimina la img

unlink('../img/upload/'.$_POST['nombre']);

$cadenanueva=str_replace($elimiar,'',$_SESSION['imagenes']);

$_SESSION['imagenes']=$cadenanueva;

 echo 'ok';

?>
0
Puntos
Por rquilcate hace 5 meses
Experto Sitio web
Respuesta #6
vale, pero quieres que cuando borres un post, las imágenes del mismo se borren verdad?? para eso tienes que hacerlo en al fichero donde se borra el POST no la imagen.. no se si me explico
0
Puntos
Por alber hace 5 meses
Administrador
Respuesta #7
ok me has puesto el código de inc/eliminar.php (borrar imagenes) necesito el código de admin/borrar.php (borrar post)

salu2
1
Puntos
Por alber hace 5 meses
Administrador
Respuesta #8
Ya veo amigo.
Andaba mas perdido; disculpa brother.
Este es el código en cuestión:
<?php require_once('../conexion.php');

$menu='admin';

//Validación de rango y valores
if(!isset($_SESSION['iduser']) || rango($_SESSION['iduser'])!=10 || !isset($_GET['idpost'])) header('Location:'.$dato[0]);


$idpost=$_GET['idpost'];



//BORRAR REGISTRO
$accion_nm = "DELETE FROM z_posts WHERE id=$idpost";
$consulta_nm = mysqli_query($conexion,$accion_nm) or die(mysqli_error());


header('Location:'.$dato[0].'admin/posts.php');


?>
0
Puntos
Por rquilcate hace 5 meses
Experto Sitio web
Respuesta #9
Hola amigo Alber. intenté colocar la función unlink en esta ruta admin/borrar.php y también en otros ficheros pero no logro conseguir que funcione estimado amigo.; por favor si me podrías hechar una manito con esto amigo Alber.
Muchas gracias.
0
Puntos
Por rquilcate hace 5 meses
Experto Sitio web
Respuesta #10
hola como te había comentado, tienes que generar un consulta en ese fichero que te saque la cadena de imágenes del post en cuestión que quieres eliminar y después hacerle el unlink una por una.

te dejo el código, en el fichero admin/borrar.php justo abajo de esto:
$idpost=$_GET['idpost'];
agrega esto y quédate con los comentarios que hay en el código para la próxima vez que lo hagas ;)
//buscar la cadena de imagenes del post
$accion_buscarimg="SELECT imagen FROM z_posts WHERE id=$idpost";
$consulta_buscarimg=mysqli_query($conexion,$accion_buscarimg);
$datos_buscarimg=mysqli_fetch_assoc($consulta_buscarimg);

//dividir la cadena de imagenes
$imagenes=$datos_buscarimg['imagen'];
$partes=explode('####',$imagenes);
$cantidad=count($partes);

if($imagenes!=''){
//bucle para recorrer todos los nombres de imagenes
for ($i=0; $i < $cantidad; $i++) { 
	
	//elimirar imagen una por una
	unlink('../img/upload/'.$partes[$i]);
		 
} 
}
mysqli_free_result($consulta_buscarimg);
salu2
1
Puntos
Por alber hace 4 meses
Administrador
Respuesta #11
Gracias por tu recomendación estimado amigo !! ...Ya estaba al borde de la locura... pero con tu ayuda por fín lo pude lograr.
Muchas gracias por compartir tus conocimientos amigo Alber :)
0
Puntos
Por rquilcate hace 4 meses
Experto Sitio web
Respuesta #12
rquilcate dijo: Gracias por tu recomendación estimado amigo !! ...Ya estaba al borde de la locura... pero con tu ayuda por fín lo pude lograr.
Muchas gracias por compartir tus conocimientos amigo Alber :)
perfecto crack! que te parece si publicas aportes en el foro y así nos ayudamos mutuamente?

salu2
1
Puntos
Por alber hace 4 meses
Administrador
Respuesta #13
Con gusto brother!!
1
Puntos
Por rquilcate hace 4 meses
Experto Sitio web
Respuesta #14
muy buen aporte el que habéis echo! me sirvió demasiado
0
Puntos
Por dicarloo hace 4 meses
Principiante
Respuesta #15
rquilcate dijo: Con gusto brother!!
genial bro, entonces te subo el rango y cerramos este tema como solucionado!

salu2 ;)
0
Puntos
Por alber hace 4 meses
Administrador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate