![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 25.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam taka tabelkę w bazie, która przyporządkowuje artykuły do odpowiednich kategorii. Kolumny są 2: id_kategorii i id_artykulu. W obu kolumnach wartosci sie powtarzaja (jeden art moze nalezec do wielu kat i odwrotnie). Zrobiłem formularz usuwający dana kategorie z tabeli "kategorie", ale za nic nie mogę usunąć rekordów dot. tych kategorii z tabeli przyporzadkowań. Przykład: W tabeli przyporządkowań mam np 5 wpisów gdzie id_kategorii = 1 a id_artykolow to 5 roznych wartości. Zapytanie: CODE DELETE FROM przyp_art WHERE id_kategorii='1' nie daje zadnego rezultatu.Jak powinno wyglądać poprawne zapytanie? Ten post edytował kcx 5.11.2008, 21:49:38 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 11 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to zrobił przy pomocy checkboxów i usuwał po PRIMARY KEYu danej tabeli.
Jeśli trzeba hurtem to zawsze robie tak i zawsze działa:
Ten post edytował Lombi 5.11.2008, 01:46:16 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Proszę dodać tag do tematu.
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
to jest relacja wiele-do-wielu. usuwasz kategorię ale nie usuwasz artykułów z nią powiązanych. jeżeli te tabele są powiązane relacją, to najpierw usuń artykuły a potem wpisy w tabeli łączącej, albo zmień ustawienia relacji na kaskadowe usuwanie / aktualizację... zrób w phpMyAdmin SHOW CREATE TABLE `xxx`; (zamiast xxx daj kolejno nazwy tabel: z artykułami, z kategoriami i łączącej) i pokaż tu rezultaty. wtedy będzie można ci pomóc...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 25.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tabela Atykuly:
CODE CREATE TABLE `artykuly` ( `Id` int(11) NOT NULL auto_increment, `tytul` varchar(255) default NULL, `opis` varchar(255) default NULL, `sciezka_pliku` varchar(255) NOT NULL default '', `id_ikony` tinyint(3) unsigned default NULL, `dodano` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`Id`) ) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 tabela Kategorie: CODE CREATE TABLE `kategorie` ( `Id` int(11) NOT NULL auto_increment, `kategoria` varchar(255) default NULL, `opis` varchar(255) default NULL, PRIMARY KEY (`Id`) ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 Tabela łącząca przyp_art: CODE CREATE TABLE `przyp_art` ( `id_kategorii` tinyint(3) unsigned NOT NULL default '0', `id_artykulu` tinyint(3) unsigned NOT NULL default '0', KEY `art` (`id_artykulu`), KEY `kat` (`id_kategorii`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 Co do realacji.... Do tej pory mialem do czynienia wylacznie z accessem gdzie bylo takie specjalne okienko do edycji relacji. Tutaj nic takiego nie ustawialem... moze tu tkwi moj błąd... No tak.... dzisiaj po raz kolejny usiadłem do DW i proszę. Zadziałało! Zaraz po tym jak poprawiłem kod PHP i dodałem brakujący znak "$" (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif) . Nie wiem jak jego braku przez ponad 2 godz nie zauważyłem i przez kolejną szperania po sieci w poszukiwaniu rozwiązania (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) . Zastosowalem metodę hurtową (DELETE FROM przyp_art WHERE id_art... itd.) Co do relacji i kaskadowego usuwania rekordów to juz nie będę teraz zawracał Wam głowy - najpierw poczytam manual'a od MySQL . Pozdrawiam i dziękuję za odpowiedzi! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 13:30 |