Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Usuwanie wielu wpisów o takim samym ID
Forum PHP.pl > Forum > Przedszkole
kcx
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?
Lombi
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:
  1. <?php
  2. mysql_query("DELETE FROM menu WHERE type = '5'");
  3. ?>
Ociu
Proszę dodać tag do tematu.
nevt
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...
kcx
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 "$" 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 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!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.