vyhledávání
7 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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.