Autor | Zpráva | ||
---|---|---|---|
Kukusak Profil |
Zdravím,
Mám: <form name="doktorskej" method="post"> <select name="doktor"> <option selected="selected" name="vse">Všichni</option> <option name="doc1">Doktor1</option> <option name="doc2">Doktor2</option> ... </select> <select name="rok"> <option selected="selected" name="vse">Všechny</option> <option name="2012">2012</option> ... </select> <input type="submit" value="Hledej..."> </form> a pak php: načtení z POSTu, připojení DB, ... Chci, aby se vypsalo to co uživatel navolí. Tzn. např. pokud vybere Doktor1 a rok 2011, tak aby se vypsali jen zápisy s Doktor1 s rokem 2011 a když někdo zvolí/nechá zvolené Všechny/Všichni, tak aby se vypsali všechny. A když někdo zvolí Doktor1 a všechny roky, tak aby se vypsali všechny zápisy Doktora1... Výpis funguje krásně, ale buď mi funguje všechno, kromě možnosti kdy se má zobrazit všechno a nebo právě se zobrazí, zase jen všechno. Googlím a hledám to celý vodpoledne, je to nějaká jednoduchá kravina a já si nevzpomenu, poraďte prosím.... Stačí klidně odkaz na nějakou dokument se stejnym případem, já nemohl najít ani to... :-( Dík všem za radu |
||
Tori Profil |
#2 · Zasláno: 12. 4. 2012, 19:43:16
Ukažte, jak zpracováváte údaje z formu, konkrétně rozlišení mezi "vše" a ostatními hodnotami.
|
||
Chamurappi Profil |
#3 · Zasláno: 12. 4. 2012, 19:52:38
„Asi už jsem kokot - filtr dat z databáze....“
Uprav si ten titulek na něco, co vystihuje podstatu dotazu, jinak budeš smazán. |
||
Kukusak Profil |
#4 · Zasláno: 12. 4. 2012, 20:09:39 · Upravil/a: Kukusak
Tori:
$doc = $_POST['doc']; $rok = $_POST['rok']; A odlišení "vše" jsem zkoušel několikero... if ( !isset( $_POST["doc"] )) $_POST["doc"] = NULL; if ( !isset( $_POST["rok"] )) $_POST["rok"] = NULL; - pak jsem zkoušel všemožný podmínky, ale v tom jsem to vždycky zamotal, že to ukazovalo jen všechno, nebo nic... Chamurappi: Omlouvám se... |
||
Tori Profil |
Kukusak:
Nedoporučuje se měnit data v $_POST/$_GET/... (s výjimkou ošetření zapnutých magic_quotes) - další části programu mohou očekávat nějakou hodnotu, kterou jim přemažete. Poskládejte si podmínku WHERE do dotazu třeba takhle: $where = ''; if (!empty($_POST['doc']) && $_POST['doc'] !== 'vse') { $where .= ' WHERE `doktor` = "'.mysql_real_escape_string($_POST['doc']).'"'; } if (!empty($_POST['rok']) && $_POST['rok'] !== 'vse') { $where .= (!empty($where) ? ' AND ' : ' WHERE '); $where .= '`rok` = '.intval($_POST['rok']); } $sql = "SELECT * FROM tabulka $where"; Jinak v HTML máte u <option> hodnoty v atributu name, ale mají být ve value. ↓ Alphard: díky za odmražení vlákna :-) |
||
Keeehi Profil |
$dotaz = "SELECT * FROM tabulka"; if($doc != "vše" || $rok !="vše") $dotaz .= " WHERE"; if($doc != "vše") $dotaz .= " doc='$doc'"; if($doc != "vše" && $rok !="vše") $dotaz .= " AND"; if($rok != "vše") $dotaz .= " rok='$rok'"; + u optionů si name vyměňte za value |
||
Alphard Profil |
#7 · Zasláno: 12. 4. 2012, 23:51:57
[#5] Tori
Ano, nebudem to mazat. Čekal jsem na Chamurappiho, ale není tady. |
||
Kukusak Profil |
#8 · Zasláno: 13. 4. 2012, 08:05:37
Keeehi:
Děkuji, hezky to funguje, ale pokud vyberu doc a roky nechám vše, taky to nefunguje, ale to už zmáknu :-) A s tim value jsem to asi nepochopil, protože když jsem to přepsal, tak to nešlo, vůbec nic se neodeslalo, tak jsem nechal i name i value stejný a je klid :-) |
||
panther Profil |
#9 · Zasláno: 13. 4. 2012, 08:08:47
Kukusak:
3. řádek má vypadat takto: if($doc != "vše" || $rok !="vše") |
||
Kukusak Profil |
#10 · Zasláno: 13. 4. 2012, 08:15:48 · Upravil/a: Kukusak
Tori:
Děkuji, tvoje funguje na 100% trvalo dlouho, než jsem to pochopil, ale funguje to, děkuji mnohokrát :-) panther: „if($doc != "vše" || $rok !="vše")“ To sice dává smysl, ale nefunguje to :-) |
||
Tori Profil |
#11 · Zasláno: 13. 4. 2012, 14:27:16
Kukusak:
„To sice dává smysl, ale nefunguje to“ Keehi to napsal s diakritikou, ve formuláři máte bez. Taky se dá nastavit té možnosti prázdnou hodnotu a v PHP ověřovat pouze if (!empty($_POST['doc']))
|
||
Časová prodleva: 4 dny
|
|||
Kukusak Profil |
#12 · Zasláno: 17. 4. 2012, 15:31:31
Tori:
„Keehi to napsal s diakritikou, ve formuláři máte bez“ Tím to není, ale nevadí... Děkuji všem mnohokrát za užitečné řešení!!! :-) |
||
Časová prodleva: 12 let
|
0