Ver Mensaje Individual
  #14 (permalink)  
Antiguo 24/05/2010, 00:32
Avatar de estibaliz2006
estibaliz2006
 
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Ayuda para eliminar imágenes del servidor

Nada de nada...bueno a ver. vamos a partir de otro ejemplo a ver si simplificándolo al máximo entre todos podemos sacarlo.

Partamos de una base de datos con dos tablas:

Campos de la Tabla 'artículos':

-idarticulo - autonumérico y único para cada registro
-codarticulo - código generado al azar que será único para cada artículo registrado y que a su vez nos valdrá para relacionar los artículos de esta tabla con sus imágenes asociadas en la tabla 'imagenes'
-articulo - Descripción del artículo

Campos de la Tabla 'imagenes':

-idimg - autonumérico y único para cada registro
-codimgart - es el código 'codarticulo' de la tabla anterior. Nos sirve para indicar qué imágenes corresponden a cada artículo.
-imagen - es la imagen a su tamaño real. Recoge la ruta de la imagen en el servidor
-imagen_th - es la imagen en thumbails. Recoge la ruta de la imagen en el servidor

Bien. Partiendo de estas dos tablas, tenemos lo siguiente:

Mediante una consulta extraigo todos los artículos que hay en la tabla 'articulos' de la base de datos y los listo. El código es este:

Código PHP:
echo " <form name='form' action='delete.php' METHOD='POST'>";
$sql "SELECT * FROM articulos ORDER BY idarticulo ASC";
$result mysql_query($sql) or die (mysql_error());
while(
$datos=mysql_fetch_array($result ) ){

echo 
"<table><tbody><tr>";
echo 
"<td>Seleccionar</td>";
echo 
"<td>Artículo</td>";
echo 
"</tr>";

echo 
"<tr>";
echo 
"<td><input type=checkbox name='codarticulo []' value='$datos[codarticulo ]'></td>";
echo 
"<td>$datos[articulo]</td>";
echo 
"</tr></tbody></table>";

echo 
"<a href='javascript:seleccionar_todo()'>Marcar todos</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href='javascript:deseleccionar_todo()'>Desmarcar Todos</a><br>
Para los elementos que están marcados <input type=submit value='Eliminar'></input>"
;

Bien. con el código anterior no sólo me lista los artículos de la tabla 'articulos' si no que además me da la posibilidad de seleccionar uno o varios o incluso todos los artículos para eliminarlos (el script para seleccionar o deseleccionar todos no creo que sea necesario mostrarlo), a través de un checkbox.

Bien. vamos ahora al quid de la cuestión: el archivo delete.php.

Este archivo recoge el siguiente código:

Código PHP:
//En primer lugar, recogemos en una única variable, $valor, los valores de los checkbox marcados, que recordemos recoge los codarticulo de cada artículo seleccionado para eliminar.

foreach($_POST["codarticulo"] as $valor){
//eliminamos las imágenes de ese artículo en cuestión que están en el servidor. para ello, utilizamos el nexo de relación entre un artículo de la tabla 'articulos' y las imágenes que este artículo tiene asociadas en la tabla 'imagenes': es decir, relacionamos coartimg con codarticulo (recogido en este caso en la variable $valor).    

    
$sql="SELECT imagen ,imagen _th FROM imagenes WHERE codimgart='".$valor."'";
    
$resultadoel=mysql_query($sql) or die (mysql_error());
    
$imagen =mysql_result($resultadoel,0,"imagen ");
    
$imagen _th=mysql_result($resultadoel,0,"imagen _th");
//borramos del servidor    
        
unlink("../$imagen ");
    
unlink("../$imagen _th");    
//eliminamos los registros de la tabla imagenes
    
mysql_query("DELETE FROM imagenes WHERE codimgart='$valor'");
//eliminamos los registros de la tabla articulos    
    
mysql_query("DELETE FROM articulos WHERE codarticulo='$valor'");

Bien. Resultado:

1) Eliminación del artículo seleccionado o de los artículos seleccionados (si a través del checkbox seleccionamos más de uno) de la tabla 'articulos': OK

2) Eliminación de las imágenes del artículo o de los artículos seleccionados (si a través del checkbox seleccionamos más de uno) de la tabla 'imagenes': OK

3) Eliminación de las imágenes del artículo o de los artículos seleccionados (si a través del checkbox seleccionamos más de uno) del Servidor: Sólo elimina la primera imagen que se encuentra de cada artículo seleccionado.

Bien. pues vamos a meter más lío en este asunto:

Si en lugar de tener dos tablas relacionadas a través de ese campo, el codarticulo y el codimgart, tengo únicamente una sola tabla donde recoga tanto el artículo como sus imágenes asociadas, aplicando la misma lógica anterior y el mismo código, me elimina todas las imágenes del servidor. ¿Cómo es posible? O sea, si está todo agrupado en una única tabla sí lo hace pero si está en dos tablas diferentes no? por dios, me estoy volviendo loca.

Seguro que dais con la solución porque yo ya no sé como llevarla a cabo.

necesito vuestra ayuda
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen