Autor | Zpráva | ||
---|---|---|---|
suk552 Profil |
#1 · Zasláno: 15. 6. 2016, 20:52:19
Ahoj,
potřeboval bych radu k mému webu. Na webu mám umístěný seznam majetků a potřeboval bych k seznamu přidat filtr vyhledávání. Tzn., že uživatel vybere v prvním políčku svůj kraj, ve druhém políčku své město a ve třetím políčku například svůj věk. Vše bych potřeboval mít napojené na MySQL databázi. Dokázal by mi někdo prosím poradit? Díval jsem se na internet, ale vůbec nikde nemůžu nic najít :/ Předem díky za pomoc. |
||
juriad Profil |
#2 · Zasláno: 15. 6. 2016, 21:09:31
Pro každý parametr, pokud byl uživatelem vyplněn, vygeneruješ příslušnou podmínku pro WHERE klazuli.
$conditions = ['1 = 1']; # aby WHERE klauzule nezůstala prázdná if (isset($_POST['kraj'])) { $conditions[] = 'kraj = ' . intval($_POST['kraj']); } if (isset($_POST['mesto'])) { $conditions[] = 'mesto = ' . intval($_POST['mesto']); } if (isset($_POST['vek'])) { $conditions[] = 'vek = ' . intval($_POST['vek']); } $sql = 'SELECT * FROM tabulka WHERE ' . implode(' AND ', $conditions); Samozřejmě, že to může být složitější, neboť pro vykonání určité podmínky můžeš potřebovat přijoinovat nějakou tabulku, pak bych podmínku přidal do klauzule ON. Uvažujme, že kraj je uložen v číselníku měst a nikoli přímo v majetku. $from = ['tabulka t']; # seznam tabulek $conditions = ['1 = 1']; # aby WHERE klauzule nezůstala prázdná if (isset($_POST['kraj'])) { $from[] = 'mesta m ON m.mesto = t.mesto AND m.kraj = ' . intval($_POST['kraj']); } if (isset($_POST['mesto'])) { $conditions[] = 'mesto = ' . intval($_POST['mesto']); } if (isset($_POST['vek'])) { $conditions[] = 'vek = ' . intval($_POST['vek']); } $sql = 'SELECT * FROM ' . implode(' JOIN ', $from) . ' WHERE ' . implode(' AND ', $conditions); |
||
Časová prodleva: 9 let
|
0