Autor | Zpráva | ||
---|---|---|---|
cenek Profil |
#1 · Zasláno: 2. 8. 2012, 15:21:07
Zdravim,
Mám ve formuláři pole selcet a input (hidden). Do selectu tahám z databáze název položky a v inputu potřebuji value nastavit na id této položky. Problémem je, že pokud změním v selectu položku, value u inputu se samozřejmě nezmění, protože je tam od načtení stránky první položka. Zná někdo, prosím, nějaký fígl? |
||
Keeehi Profil |
#2 · Zasláno: 2. 8. 2012, 16:01:41
Javascript a onchange na selectu. Z podstaty javascriptu to není 100% řešení.
Proč to vlastně potřebujete kopírovat ze selectu do inputu? přijde mi to jako hloupost. |
||
JaySee Profil |
cenek:
Proč to dělat tak složitě, když každá option v selectu má svoje value . Nestačí pak tedy předávat tu hodnotu ze selectu ? Namísto nějakého předávání do skrytých polí. Jaký to má mít přínos předávat to jinam?
|
||
cenek Profil |
#4 · Zasláno: 3. 8. 2012, 01:10:55
Díky klucí,
Ale jde o to, že ten formulář pak zas ukládám do databáze. Tudíž select se jmenuje třeba "name" a ten pak POSTnu do sql. Tudíž nevim, jak bych value toho selectu uložil zvlášť, pod jinou proměnnou |
||
Ugo Profil |
cenek:
tak v týhle větě mi trochu ujel vlak, myslíš třeba: $prvni = $_POST['name']; $druha = $_POST['name']; ? Jestli nad ní nepotřebuješ dělat úpravy, tak ani nepotřebuješ 2 přec. Jednoduše není důvod abys v hidden inputu potřeboval stejnou hodnotu, do proměnné kterou bys očekával z hidden inputu si přiřaď proměnnou selectu a máš to bez dalších úprav. |
||
cenek Profil |
#6 · Zasláno: 3. 8. 2012, 09:51:53
Sakra, nevím jestli si rozumíme. Zkusím to jinak:
<select name="name"> <option value="1">První jméno</option> <option value="2">Druhé jméno</option> </select> Uložím $prvni = $_POST['name']. Ale jak ulozim $druha jako value toho optionu? |
||
Ugo Profil |
#7 · Zasláno: 3. 8. 2012, 10:15:56
Asi nerozumíme. Select odesílá vybranou value takže $_POST['name'] bude nabývat hodnot [1,2] a bude tam do té doby než to smažeš, čili i po tom přiřazení. To je nejspíš jasné takže nějak stále aspoň já nechápu, čeho chceš dosáhnout. Jestliže ti jde o to vybrat více možností, pak bys mohl použít multiple select který odešle pole vybraných, ovšem je třeba v něm umět označovat. Bez multiple pomocí selektu bych to neřešil na události onchange, focus atp. ale tlačítkem aby uživatel věděl co dělá.
P.S. teď mi to asi došlo, ty chceš odeslat value (čili 1) a zároveň textovou podobu - "První jméno" že? To bys moh jedine tím JS že na onchange by sis někam dával innerHTML toho option.. jestli to vůbec bude všude fungovat, to jsem nikdy nezkoušel. Ale ani to bych neřešil, šak ty hodnoty musíš znát, tak je jen přiřaď. Např. máš něco jako.. $name[1] = "První jméno"; $name[2] = "Druhé jméno"; $value = $_POST['name']; $text = $name[$value]; |
||
cenek Profil |
#8 · Zasláno: 3. 8. 2012, 10:56:31
Potřebuju to přesně jak píšeš v P.S.
Ale to je právě to, že ty hodnoty neznám. Do toho selectu je vypisuju z jiný tabulky. Takže po lopatě: Vypíšu z jedné tabulky pár údajů do fomuláře, pár dalších údajů přidám a uložím do jiné tabulky. |
||
Ugo Profil |
přijde mi to jako špatný návrh, máš je v tý tabulce -> id by mělo stále stačit na uložení, případně na dohledání jestliže nechceš mít závislost. Ovšem tím javascriptem to půjde, tedy Veře Pohlové ne, jen nevím jak. Je na to nějaka nejistá funkce, ale takovýto selektor bez jquery jednoduše nedám. Dám ti ale velice jednoduché řešení pomocí PHPka ... dej si např.
<select name="name"> <option value="1;První jméno">První jméno</option> <option value="2;Druhé jméno">Druhé jméno</option> </select> <?php $values = explode(";", $_POST['name']); $text = ""; if(isset($values[1])) { $text = $values[1]; } $name = $values[0]; jen to chce najít něco dle čeho jde spolehlivě explodovat .. co třeba !TNT! :D |
||
cenek Profil |
#10 · Zasláno: 3. 8. 2012, 11:17:16 · Upravil/a: cenek
Explode me vubec nenapadlo, to by melo fungovat. Zkusim to, dik moc
2Ugo: Funguje to perfektně!!! Díky moc chlape. Doufám, že to třeba pomůže i někomu dalšímu ;) |
||
JaySee Profil |
cenek:
No jak poznamenal Ugo, není to správný návrh, takže doufám, že to někomu dalšímu moc pomáhat nebude. Pokud máš v jedné tabulce uložená jména, ta předpokládám mají i svoje ID , tak ti bohatě stačí předávat v tom selectu jen parametr name s hodnotu ID (1,2,...520) a ty si potom v SQL dotazu natáhneš ta jména podle ID, pokud je máš ve více tabulkách tak si tu druhou tabulku JOIN neš k té první. Takhkle to míchat je cesta do pekel.
Ale jestli ti to stačí přes explode, tak budiž. |
||
Časová prodleva: 12 let
|
0