Foros del Web » Programando para Internet » PHP »

PHP y MySQL eliminar registros

Estas en el tema de PHP y MySQL eliminar registros en el foro de PHP en Foros del Web. Quisiera saber como eliminar registros de dos tablas diferentes de una base de datos. Estoy usando PHP y MySQL....
  #1 (permalink)  
Antiguo 14/09/2004, 14:32
Avatar de canzoneta  
Fecha de Ingreso: diciembre-2003
Ubicación: Mendoza
Mensajes: 79
Antigüedad: 14 años
Puntos: 1
PHP y MySQL eliminar registros

Quisiera saber como eliminar registros de dos tablas diferentes de una base de datos.
Estoy usando PHP y MySQL.
  #2 (permalink)  
Antiguo 14/09/2004, 17:27
Avatar de TCL_ZIP  
Fecha de Ingreso: noviembre-2003
Ubicación: Esporles, Mallorca, España
Mensajes: 690
Antigüedad: 14 años
Puntos: 4
la consulta para eliminar seria:
Código PHP:
mysql_select_db($database_esporlesbc$esporlesbc);
$query_borrar "DELETE FROM Tabla WHERE tucondicion";
mysql_query($query_borrar$esporlesbc) or die(mysql_error()); 
Si copias la estructura de las tablas te podremos ayudar mejor
  #3 (permalink)  
Antiguo 14/09/2004, 20:49
Avatar de canzoneta  
Fecha de Ingreso: diciembre-2003
Ubicación: Mendoza
Mensajes: 79
Antigüedad: 14 años
Puntos: 1
Yo tengo una tabla llamada categoría (con los campos id y nombre) y otra tabla llamada productos (con los campos id, idcat, producto, precio y descripcion)
Por ejemplo: yo quiero eliminar la categoría con id '4' y que además se borren todos los productos que que en idcat tengan el valor '4' .
¿Esposible lograr esto?
  #4 (permalink)  
Antiguo 14/09/2004, 20:59
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Cuando haces eso puedes tener problemas de integridad referencial si borras la categoría 4 y por algún motivo se interrumpe la ejecución del script en ese punto antes de borrar también los productos con idcat=4.
Esto porque habrá productos que son de la categoría 4... y esta categoría no existe!!... ese es un problema de integridad referencial.
Si utilizas Mysql 4, puedes utilizar transacciones http://www.mysql-hispano.org/page.php?id=26
Y si no... de todas maneras puedes intentar eliminar primero los productos y luego la categoría.
Código PHP:
$variable "4";//el número de "id" que quieres borrar
$sql "DELETE FROM productos WHERE idcat='$variable'";
mysql_query($sql);
$sql "DELETE FROM categoria WHERE id='$variable'";
mysql_query($sql); 
Saludos
  #5 (permalink)  
Antiguo 16/09/2004, 12:57
 
Fecha de Ingreso: marzo-2004
Mensajes: 65
Antigüedad: 13 años, 9 meses
Puntos: 0
Lo que comentas se soluciona en el diseño de la base de datos.... esto es que pongas un porcedimiento almacenado para que los registros se borren en cascada... pienso que es lo mas conveniente......



---------------------------------------------------NO HAY CUCHARA-------------------------------------------------------------
  #6 (permalink)  
Antiguo 16/09/2004, 13:25
Avatar de canzoneta  
Fecha de Ingreso: diciembre-2003
Ubicación: Mendoza
Mensajes: 79
Antigüedad: 14 años
Puntos: 1
Y como se hace esto de la cascada?
  #7 (permalink)  
Antiguo 16/09/2004, 23:38
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Bueno... en realidad lo que debes utilizar es el soporte de integridad referencial que trae Mysql.... eso es "lo de la cascada".
Lee este artículo... y lo que no entiendas lo posteas... pero te pido que lo leas antes para poder entenderte mejor.
Aquí se explica todo bastante bien.
http://www.mysql-hispano.org/page.php?id=27

Saludos
  #8 (permalink)  
Antiguo 17/09/2004, 01:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por skywaker
Lo que comentas se soluciona en el diseño de la base de datos.... esto es que pongas un porcedimiento almacenado para que los registros se borren en cascada... pienso que es lo mas conveniente......



---------------------------------------------------NO HAY CUCHARA-------------------------------------------------------------
Lamentablemente .. Mysql no soporta procedimientos almacenados (ni triggers - disparadores) y bien poco el tema de integridad referencial (salvo que uses tablas Innodb como menciona el link que dejó jpinedo).

Un saludo,
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 10:50.