Jak naprogramovat vyhledávací filtr
- gizer
- Člen | 67
Dobrý den,
při vyhledávání v databázi používám formulář, kde jsou pole jako Jméno, Příjmení, ulice, č.p, č.orientační, PSČ, email, telefon a město.
Rád bych naprogramoval filtr, kterým postupně zužuji výběr z databáze. Např. vyfiltruji město (20) údajů. V těch chci hledat správnou ulici (3 údaje). V těch 3 údajích si pak vyberu třeba příslušné jméno nebo č.p. atd.
Děkuji moc za případnou radu jak správně na to.
- Polki
- Člen | 553
@Martk nedává smysl v případech, kdy chceš vybrat více měst a filtrovat, jestli je uživatel ve všech městech a pak vybírat z těch měst konkrétní ulice. Sice jde použít na toto multiselect a tedy i dependent selectbox, nejspíš vlastnoručně napsaný, ale pointa mého kommentu je ta, že ten způsob tahání dat je vždy stejný a stačí se dependent selectboxem inspirovat, kdyby nevyhovoval. Navíc podle popisu to vypadá, že dependent selectbox bude stačit.
EDIT 1: A klidně můžeš dependent selectbox kombinovat s datagridem v tom problém nevidím.
Editoval Polki (31. 10. 2021 23:53)
- gizer
- Člen | 67
Každopádně by mně také zajímalo, jak jednoduše vyřešit dotaz SELECT
v MySQL, kterým budou zpřísňována kritéria.
Například zadám pouze město a vyjedou všechny záznamy z daného města.
Následně přidám ulici a záznamy se zúží pouze na tuto ulici v předtím
vybraném městě. To samé s číslem domu atd.
Vyhledávací tabulka, která má pole(Jméno, Příjmení, ulice, č.p, č.orientační, PSČ, email, telefon a město.) by měla mít možnost být vyplněna úplně nebo částečně.
- Kamil Valenta
- Člen | 822
$selection = $this->database->table('table');
if (!empty($jmeno)) {
$selection->where('jmeno', $jmeno);
}
if (!empty($prijmeni)) {
$selection->where('prijmeni', $prijmeni);
}
...
Where samozřejmě může být různý, někde LIKE apod. Dle kontextu.
- gizer
- Člen | 67
Děkuji, ale myslím, že tento systém jednotlivých výběrů v databází také nebude dobře fungovat. Jde o to, že když například vyberu město A a také vyberu číslo popisné třeba 1020, tak pokud budou stejná čísla 1020 v obou městech A a B, tak se také vyberou.
Nejedná se tedy o zúžení výběru.