Ahoj,
mám formulář pro vyhledávání s pěti poli pro vyhledávání podle jména, roku, apod.
Potřebaval bych poradit jak napsat dotaz, který by vzal v úvahu údaje ze všech pěti polí, tj. dát uživateli možnost zadat více parametrů najednou, ale ignoroval prázdné pole.
Např. zadat jméno autora a rok a ostatní tři pole nechat nevyplněná. Výsledkem by byly všechny záznamy vztahující se k zadanému jménu publikované v zvoleném roce. Nebo třeba vyplnit všech pět polí a tím omezit množinu vyhledaných dat ještě víc.
Díky za pomoc!
$where = "";
if($podle_roku) $where .= ", rok = {$podle_roku}";
if($podle_jmena) $where .= ", jmeno LIKE %{$podle_jmena}%";
atd...
$query = SELECT ... FROM tabulka WHERE 1{$where}
VYSVETLENI...
>promenna $podle_[roku, jmena...] obsahuje retezec ktery byl zadan aby byl vyhledan.
>zada-li jen cast jmena, tak to nevadi protoze je pouzito LIKE.
>ve $where jsou vsechny podminky oddelene carkou, protoze je carka i na zacatku je v dotazu pred {$where} 1.
tzn. kdyz:
$podle_roku=2004;
$podle_jmena="aaa";
$query bude:
SELECT ... FROM tabulka WHERE 1, rok=2004, jmeno LIKE %aaa%
syntaxe mozna neni uplne spravna ale s tim si poradis...
uz vidim chybu: vzor (to za like) musi byt v uvozovkach
A podminky za WHERE se neoddeluji carkami ale AND
Tak ja to radsi prepisu:
$where = "";
if($podle_roku) $where .= ", rok = {$podle_roku}";
if($podle_jmena) $where .= "AND jmeno LIKE '%{$podle_jmena}%'";
atd...
$query = SELECT ... FROM tabulka WHERE 1{$where};
Díky, to LIKE je mi jasný, ty "IFy" tak docela ne.
Já to zkusím a uvidí se...
Aha, jak jsi to přepsal, vidím až teď a rázem se vyjasnilo.
Ještě jednou díky!
Taky bych ti rád poradil, ale bohužel, nemůžu sloužit.