Potrzebuje wiec podpowiedzi czy jest wykonalnym zrobienie czegoś takiego stosując jedno zapytanie SQL, czy powinienem ten mechanizm wyszukiwania całkiem inaczej przerobić? A jeżeli tak, to mniej więcej w jaki sposób?
To jest moja baza:
CREATE TABLE IF NOT EXISTS `ksiazki` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tytul` varchar(200) COLLATE utf8_polish_ci NOT NULL, `wydanie` int(11) DEFAULT NULL, `miejsce_wydania` varchar(20) COLLATE utf8_polish_ci NOT NULL, `wydawnictwo` varchar(20) COLLATE utf8_polish_ci NOT NULL, `rok_wydania` int(11) NOT NULL, `haslo_przedmiotowe` varchar(20) COLLATE utf8_polish_ci NOT NULL, `ISBN` varchar(17) COLLATE utf8_polish_ci NOT NULL, `komentarz` varchar(500) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ISBN` (`ISBN`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=12 ; CREATE TABLE IF NOT EXISTS `autorzy` ( `id` int(11) NOT NULL AUTO_INCREMENT, `imie` varchar(20) COLLATE utf8_polish_ci NOT NULL, `nazwisko` varchar(35) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=23 ; CREATE TABLE IF NOT EXISTS `autorzy_to_ksiazki` ( `autor_id` int(11) NOT NULL, `ksiazka_id` int(11) NOT NULL, KEY `autor_id` (`autor_id`,`ksiazka_id`), KEY `ksiazka_id` (`ksiazka_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; CREATE TABLE IF NOT EXISTS `hasla_przedmiotowe` ( `id` int(11) NOT NULL AUTO_INCREMENT, `haslo` varchar(20) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=3 ; CREATE TABLE IF NOT EXISTS `slowa_kluczowe` ( `id` int(11) NOT NULL AUTO_INCREMENT, `slowo_klucz` varchar(20) COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `slowo_klucz` (`slowo_klucz`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ; CREATE TABLE IF NOT EXISTS `slowa_to_ksiazki` ( `slowo_id` int(11) NOT NULL, `ksiazka_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; ALTER TABLE `autorzy_to_ksiazki` ADD CONSTRAINT `autorzy_to_ksiazki_ibfk_2` FOREIGN KEY (`ksiazka_id`) REFERENCES `ksiazki` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `autorzy_to_ksiazki_ibfk_3` FOREIGN KEY (`autor_id`) REFERENCES `autorzy` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
To jest formularz:
<form method="post" action=""> <input id="autor" name="autor" type="text" /> <input id="tytul" name="tytul" type="text" /> <input id="haslo_przedmiotowe" name="haslo_przedmiotowe" /> <input id="rok_wydania" name="rok_wydania" type="text" /> <input id="saveForm" class="button_text" type="submit" name="wyslane" value="Szukaj" /> </form>
$wh[] = "tytul = '".$_POST["tytul"]."' "; $wh[] = "autor = '".$_POST["autor"]."' "; $wh[] = "rok = '".$_POST["rok_wydania"]."' "; $wh[] = "haslo = '".$_POST["haslo_przedmiotowe"]."' "; $where = "where k.tytul like '%".$_POST["tytul"]."%' and a.nazwisko like '%".$_POST["autor"]."%' and k.rok_wydania like '%".$_POST["rok_wydania"]."%' and k.haslo_przedmiotowe like '%".$_POST["haslo_przedmiotowe"]."%' "; }else{ $where = ''; $sql = 'select * from bibliografia.ksiazki as k, bibliografia.autorzy as a '.$where; { //return $wynik; } //mysql_free_result($wynik); } }