Foros del Web » Programando para Internet » PHP »

Comprobación a la hora de borrar tablas

Estas en el tema de Comprobación a la hora de borrar tablas en el foro de PHP en Foros del Web. Buenas. Puede que el título sea un poco confuso, pero me explico jeje. Tengo una BD relacionada, es decir, en la tabla1 tengo nombres de ...
  #1 (permalink)  
Antiguo 10/08/2011, 01:44
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Comprobación a la hora de borrar tablas

Buenas.

Puede que el título sea un poco confuso, pero me explico jeje.

Tengo una BD relacionada, es decir, en la tabla1 tengo nombres de categorías, en la tabla2 info sobre contenido que va en esa categoría, y en la tabla3 opciones sobre esa información. La cosa es que estoy desarrollando un script el cual al borrar la categoría se borre toda esa información adjunta, para que no quede ahí colgando.

Os doy el esquema para que se hagan una idea:

wp_lista_cat(lista_c_id, lista_c_name)
wp_lista_info(lista_info_Id, lista_info_nombre, lista_info_descripcion, lista_c_id(FK) )
wp_lista: (lista_id, lista_nombre, lista_imagen, lista_votos, lista_info_Id(FK) )

Y aquí os dejo la parte de código la cual comprueba la ID de todas las "listas" que tiene una categoría, y luego cuenta cuantas opciones tiene cada lista. Lo que quiero hacer es que vuelva a contar todo y al ver que es 0 aparezca lo típico de se borró bien, pero bueno, es lo de menos, lo que me tiene un poco liado es el tema de volver a contar el contenido.

Código PHP:
// Borramos las listas asociadas a dicha categoría, pero primero tenemos que ver si hay listas en esa categoría
if(num_listas_x_categoria($_GET['delete']) != 0){
// Al ser distinta a 0 quiere decir que tiene listas
// Obtenemos las ID de las listas creadas en esa categoria
$lista_info lista_info($_GET['delete']);
                
while(
$lista_info_ID mysql_fetch_array($lista_info)){
// procedemos a borrar las listas que tengan asociada el ID de lista_info
$ssql "DELETE FROM wp_lista WHERE wp_lista_Info = '" $lista_info_ID['lista_info_Id'] . "' ";
                    
mysql_query($ssql);                    

__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 10/08/2011, 01:48
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Comprobación a la hora de borrar tablas

Usas FK? Si usas FK (e innoDB) puedes usar la opción "ON DELETE CASCADE" en la definición de la tabla... si mal no recuerdo, ayudaba a eso :)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 10/08/2011, 02:05
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Comprobación a la hora de borrar tablas

Te amplío la información de mi compañero en el manual de MySQL.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #4 (permalink)  
Antiguo 10/08/2011, 02:06
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Comprobación a la hora de borrar tablas

Cita:
Iniciado por Eleazan Ver Mensaje
Usas FK? Si usas FK (e innoDB) puedes usar la opción "ON DELETE CASCADE" en la definición de la tabla... si mal no recuerdo, ayudaba a eso :)
Lo puse a modo de referencia, para que sepan de donde toman los datos, no uso innoDB, perdón por no aclararlo.

Saludos !!
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?

Etiquetas: borrar, mysql, sql, tabla, tablas
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 22:08.