Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/02/2007, 02:20
Avatar de estibaliz2006
estibaliz2006
 
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 6 meses
Puntos: 1
eliminar de dos tablas condicionada

muy buenas a todos. os explico cuál es mi duda:

resulta que tengo dos tablas:

tabla 1: secciones, con dos campos: idseccion (autonumérico) y seccion (varchar 255).
tabla 2: libros, con 4 campos: idlibro (autonumerico), titulo (varchar 255),
imagen (varchar 255) y seccion (varchar 255).

en el campo 'imagen' de la tabla libros se recoge la ruta de imágenes que previamente se han almacenado en un directorio en el servidor llamado 'imagenes'. en el campo sección de la tabla libros, se recoge el 'idseccion' de la tabla secciones.

bien. estas tablas se alimentan independientemente a través de formularios diferentes. la tabla 'secciones' tiene un formulario en el que se pide se introduzca el nombre de esa sección.

la tabla 'libros' tiene un formulario en el que uno de los datos que se pide es la sección a la que va a pertenecer ese libro, campo éste que guarda en la tabla 'libros' el idsección de la tabla 'secciones'.

el tema está en lo siguiente:
si yo quiero eliminar un determinado libro de la tabla 'libros' de forma individual, no hay problema, se elimina mediante un archivo de eliminar.

el problema es este: si el administrador selecciona 'eliminar sección', se eliminen tanto la sección como todos los libros asociados a ella. esto lo hago mediante este código:

código que selecciona la sección a eliminar:
Código PHP:
<a href="eliminarseccion1.php?id='.$row ['idseccion'].'">Eliminar</a></td></tr>); 
código que elimina tanto la sección como los libros asociados a ella (incluídas las imágenes de esos libros en el directorio 'imagenes'):
Código PHP:
//borra la sección seleccionada
$id=$_GET['id'];
$connect=mysql_connect("localhost","user","password")or die(mysql_error()); 
mysql_select_db("biblio",$connect)or die(mysql_error()); 
$sql="SELECT seccion FROM secciones WHERE idseccion='".$id."'"
$resultado=mysql_query($sql) or die (mysql_error());
mysql_query("DELETE from secciones where idseccion='$id'") or die(mysql_error());

//borra los libros asociados a esa sección, incluida las imagenes de los mismos
//en el directorio 'imagenes'

$sql="SELECT imagen FROM libros WHERE obra='".$id."'";
$resultado=mysql_query($sql) or die (mysql_error()); 
$row mysql_fetch_array($resultado); 
$imagen=mysql_result($resultado,0,"imagen");
mysql_query("DELETE from libros where obra='$id'") or die(mysql_error());  
unlink($imagen);

header("Location: exito.html"); 
bien. todo esto funciona correctamente. ese código está en un mismo archivo 'eliminarseccion1.php'. Cuál es el problema? el problema es que si trato de eliminar una sección que no tiene ningún libro asociado, me da un error, pues trata de buscar ese libro asociado y no lo encuentra. lo que yo quiero entonces es tratar de meter un condicional de tal modo que si existen libros asociados a esa sección seleccionada, ejecute ese código, pero si no existen libros, para tratar de evitar ese error, me redireccione directamente a la página exito.html y no ejecute el código tratando de buscar libros asociados, que es lo que me da el error.

me echáis un cable?