Borrar datos en tablas relacionadas
Te vuelvo a realizar otra pregunta en relación a la última que te hice hace unos pocos días.
Me ayudaste con la inserción de registros en tablas relacionadas y ahora necesito ayuda para el borrado de registros en tablas relacionadas.
Te explico de nuevo como lo tengo para que me ayudes:
Tengo 3 tablas:
Categorías
categoria_id
categoria_nombre
...
productos
producto_id
producto_nombre
...
productos_categorias
Producto_id (id de la tabla productos)
Categoria_id(id de la tabla productos)
La última tabla la utilizo para relacionar muchos productos a muchas categorías y viceversa, aunque todavía me faltan cosillas lo que ahora necesito es borrar un registro de la tabla productos.
Al estar relacionada con la tabla productos_categorias me saltaba el error de clave foránea etc. Bien, yo tengo el código php así, metido en una función.
Imprimo en pantalla tal y como me enseñaste el borrado del registro para ver donde fallo y me sale esto:
DELETE FROM fpcfontana_productos, fpcfontana_productos_categorias WHERE producto_id=434
He probado también así:
DELETE FROM $tabla_productos, $tabla_productos_categorias WHERE $tabla_productos_categorias.producto_id=$tabla_productos.producto_id AND
$tabla_productos.producto_id=434;
Pero nada de nada, no elimina nada.
Que estoy haciendo mal?
Te pongo el código de la función en php que estoy utilizando:
function eliminar_registroproducto_bd2 ($tipo, $id) {
// Elimina un registro determinado (devuelve E en caso de error o no encontrado)
// Inicializacion de variables
// Variables globales
global $tabla_productos;
global $tabla_productos_categorias;
global $productos_upload;
$productos_upload = "../" . $productos_upload;
$rs = mysql_query("select * from $tabla_productos WHERE producto_id = '$id'");
$cant = mysql_num_rows($rs);
if ($cant == 0) return "E";
else {
$imagen = $productos_upload . Mysql_result($rs,0,"producto_imagen1");
$imagentb = $productos_upload . Mysql_result($rs,0,"producto_imagen1tb");
if ((file_exists($imagen)) && (mysql_result($rs,0,"producto_imagen1")) != "") unlink ($imagen);
if ((file_exists($imagentb)) && (mysql_result($rs,0,"producto_imagen1tb")) != "") unlink ($imagentb);
$imagen = $productos_upload . Mysql_result($rs,0,"producto_imagen2");
$imagentb = $productos_upload . Mysql_result($rs,0,"producto_imagen2tb");
if ((file_exists($imagen)) && (mysql_result($rs,0,"producto_imagen2")) != "") unlink ($imagen);
if ((file_exists($imagentb)) && (mysql_result($rs,0,"producto_imagen2tb")) != "") unlink ($imagentb);
$imagen = $productos_upload . Mysql_result($rs,0,"producto_imagen3");
$imagentb = $productos_upload . Mysql_result($rs,0,"producto_imagen3tb");
if ((file_exists($imagen)) && (mysql_result($rs,0,"producto_imagen3")) != "") unlink ($imagen);
if ((file_exists($imagentb)) && (mysql_result($rs,0,"producto_imagen3tb")) != "") unlink ($imagentb);
// Eliminar registro de la base de datos
$sql = "DELETE FROM $tabla_productos, $tabla_productos_categorias WHERE producto_id=$id";
echo $sql;
Me ayudaste con la inserción de registros en tablas relacionadas y ahora necesito ayuda para el borrado de registros en tablas relacionadas.
Te explico de nuevo como lo tengo para que me ayudes:
Tengo 3 tablas:
Categorías
categoria_id
categoria_nombre
...
productos
producto_id
producto_nombre
...
productos_categorias
Producto_id (id de la tabla productos)
Categoria_id(id de la tabla productos)
La última tabla la utilizo para relacionar muchos productos a muchas categorías y viceversa, aunque todavía me faltan cosillas lo que ahora necesito es borrar un registro de la tabla productos.
Al estar relacionada con la tabla productos_categorias me saltaba el error de clave foránea etc. Bien, yo tengo el código php así, metido en una función.
Imprimo en pantalla tal y como me enseñaste el borrado del registro para ver donde fallo y me sale esto:
DELETE FROM fpcfontana_productos, fpcfontana_productos_categorias WHERE producto_id=434
He probado también así:
DELETE FROM $tabla_productos, $tabla_productos_categorias WHERE $tabla_productos_categorias.producto_id=$tabla_productos.producto_id AND
$tabla_productos.producto_id=434;
Pero nada de nada, no elimina nada.
Que estoy haciendo mal?
Te pongo el código de la función en php que estoy utilizando:
function eliminar_registroproducto_bd2 ($tipo, $id) {
// Elimina un registro determinado (devuelve E en caso de error o no encontrado)
// Inicializacion de variables
// Variables globales
global $tabla_productos;
global $tabla_productos_categorias;
global $productos_upload;
$productos_upload = "../" . $productos_upload;
$rs = mysql_query("select * from $tabla_productos WHERE producto_id = '$id'");
$cant = mysql_num_rows($rs);
if ($cant == 0) return "E";
else {
$imagen = $productos_upload . Mysql_result($rs,0,"producto_imagen1");
$imagentb = $productos_upload . Mysql_result($rs,0,"producto_imagen1tb");
if ((file_exists($imagen)) && (mysql_result($rs,0,"producto_imagen1")) != "") unlink ($imagen);
if ((file_exists($imagentb)) && (mysql_result($rs,0,"producto_imagen1tb")) != "") unlink ($imagentb);
$imagen = $productos_upload . Mysql_result($rs,0,"producto_imagen2");
$imagentb = $productos_upload . Mysql_result($rs,0,"producto_imagen2tb");
if ((file_exists($imagen)) && (mysql_result($rs,0,"producto_imagen2")) != "") unlink ($imagen);
if ((file_exists($imagentb)) && (mysql_result($rs,0,"producto_imagen2tb")) != "") unlink ($imagentb);
$imagen = $productos_upload . Mysql_result($rs,0,"producto_imagen3");
$imagentb = $productos_upload . Mysql_result($rs,0,"producto_imagen3tb");
if ((file_exists($imagen)) && (mysql_result($rs,0,"producto_imagen3")) != "") unlink ($imagen);
if ((file_exists($imagentb)) && (mysql_result($rs,0,"producto_imagen3tb")) != "") unlink ($imagentb);
// Eliminar registro de la base de datos
$sql = "DELETE FROM $tabla_productos, $tabla_productos_categorias WHERE producto_id=$id";
echo $sql;
1 respuesta
Respuesta de davidcortesb
1