| 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: 10 let
|
|||
0