Jump to content


Photo

Script Para Excluir Varios Registros Do Banco


  • Faça o login para participar
2 replies to this topic

#1 marx

marx

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado
  • Localidade:Tubarão - Santa Catarina

Posted 17/05/2004, 10:23

Pessoal,

Estou com uma dificuldade tremenda para excluir alguns registros da tabela. Preciso que tendo um id, eu possa excluir todos os registros relacionados a aquele id.Vou explicar melhor abaixo:

Tabela:
CREATE TABLE `categorias` (
  `codCategoria` int(5) unsigned NOT NULL auto_increment,
  `nomeCategoria` varchar(30) NOT NULL default '',
  `codCategoriaSuperior` int(5) unsigned default NULL,
  `nivelCategoria` int(2) unsigned default NULL,
  PRIMARY KEY  (`codCategoria`)
) TYPE=MyISAM CHARSET=latin1;

Onde:
codCategoria: é o codigo que identifica a categoria
nomeCategoria: nome da categoria
codCategoriaSuperior: é o codigo da categoria superior
nivelCategoria: é o nivel da categoria.

Vou dar um exemplo, para melhor explicar como funciona essa tabela:
Categoria: Brinquedos, o cod é 1, o codSuperior é 0 e o nivel 0.
Categoria: Carrinhos, o cod é 2, o codSuperior é 1 e o nivel é 1.
Categoria: Eletricos, o cod é 3, o codSuperior é 2 e o nivel é 2.
Categoria: Fricção, o cod é 4, o codSuperior é 2 e o nivel é 2.
Categoria: Importados, o cod é 5, o codSuperior é 3 e o nivel é 3.

Ou seja, Brinquedos é a categoria principal, Carrinhos é a sub-categoria de Brinquedos, Eletricos é sub-categoria de Carrinhos, Fricção é sub-categoria de Carrinhos e Importados é uma sub-categoria de Eletricos.

Eu preciso, por ex., quando excluir a categoria Carrinhos, que exclua todas que estão abaixo dela, que no meu exemplo, teria que excluir Eletricos, Fricção e Importados juntos.

Alguem tem alguma ideia de como fazer isso? :blink:

#2 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 17/05/2004, 10:44

seria + ou - assim :

$categoria = "Brinquedos";
$sql = mysql_query("SELECT * FROM tabela WHERE nomeCategoria='$categoria'");
$rows = mysql_fetch_array($sql);
$codCatSuper = $rows["codCategoria"];
$sql = mysql_query("DELETE tabela WHERE nomeCategoria='$categoria' AND codCategoriaSuperior='$codCatSuper'");

ai neste exemplo acima , ele pega o nome da categoria primeiro, depois faz uma pesquisa no DB com o nome da categoria, e pega o ID da categoria ( no caso seria o ID 2 ) e depois exclui a categoria ( Brinquedos) e exclui todos os registros que contém o numero 2 no campo codCategoriaSuperior

ok ?

até +!!!
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#3 marx

marx

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado
  • Localidade:Tubarão - Santa Catarina

Posted 17/05/2004, 10:54

Bom, até aí eu consegui fazer.

O meu maior problema, está nas sub-sub-sub categorias.

No seu exemplo, ele vai excluir todos os registros que tem o id superior igual ao id informado antes.

Mas tem que ser pensada na hipotese, da sub-categoria que está sendo excluida conter sub-categorias, e essas sub-categorias conterem mais sub-categorias.

Meu sistema está projetado para cadastrar até 6 niveis de categoria.

No exemplo que eu dei no post anterior, o seu script deixaria para tras a categoria Importados, pois só excluiria as categorias Eletricos e Fricção.

Não sei se fui claro.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq