Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 21. 8. 2008, 02:32:13
Ahoj,
na stránkách ... jsem si náhodou všimnul, že je formulář, kde mají inputy se stejným názvem (name). Jde pomocí nějakého skriptu ty inputy odlišit. Jejich kód je <input type="radio" name="jmeno" value="hodnota" id="idecko"> <input type="radio" name="jmeno" value="hodnota" id="idecko"> <input type="radio" name="jmeno[]" value="hodnota" id="idecko"> <input type="radio" name="jmeno[]" value="hodnota" id="idecko"> Tak nějak nechápu jak ty hodnoty pak zjistí? |
||
Hugo Profil |
#2 · Zasláno: 21. 8. 2008, 06:12:39
IMHO ne, pokud ti jde o PHP.
|
||
Joker Profil |
#3 · Zasláno: 21. 8. 2008, 07:22:30
joe
Jaký smysl má mít na stránce úplně stejná zaškrtávátka se stejnými hodnotami? Pokud mají alespoň různé hodnoty, dá se to odlišit podle toho, jaká hodnota v tom prvku bude. Jinak se jim dají přiřadit různá IDčka a rozlišit to Javascriptem (včetně toho, že ten Javascript by mohl hodnoty kopírovat třeba do cookie nebo skrytého pole) |
||
joe Profil |
#4 · Zasláno: 21. 8. 2008, 08:54:05
Joker
Žádný smysl to nemá, jenom mě překvapilo, že to jde. Úprava Javascriptem mě taky napadla, ale tak to určitě není... Hugo Proto jsem to dal sem :-) A není možný, že když se nepoužije PHP, že to je pole automaticky, když jsou stejný položky? Ale všude jsem četl jen o poli... |
||
bukaj Profil |
#5 · Zasláno: 21. 8. 2008, 10:03:41
joe
Radio buttony („přepínátka“) jsou právě od toho, aby tam bylo možno poslat jenom jednu hodnotu z nějakého výčtu ;o) Jejich použití je podobné jako <select>u – u něj taky většinou chceme, aby byla vybrána jedna hodnota (i když se dá samozřejmě nastavit možnost vybrání více hodnot; osobně jsem ji ale použil jen málokdy) –, ale na odpovědi typu ano/ne, ankety apod. se <select> nehodí – je lepší jasně vidět, co za možnosti jsou; navíc se mi zdá použití <select>u pro tyto případy nepřirozené. |
||
DoubleThink Profil * |
#6 · Zasláno: 21. 8. 2008, 10:24:41
„IMHO ne, pokud ti jde o PHP.“
Ale ano. Pokud jde o client-side, prohlížeč pošle všechny hodnoty za sebou. PHP ale při parsování POST/GET dat samozřejmě stejné klíče přepíše. Takže u GET je to jasné - vytáhne se QUERY_STRING a vyparsuje ručně. Ekvivalentně pak u POST existuje proměnná $HTTP_RAW_POST_DATA (viz PHP core: always_populate_raw_post_data). |
||
joe Profil |
#7 · Zasláno: 21. 8. 2008, 10:45:06
bukaj
Sakra, moje chyba :-) Myslel jsem třeba i u checkboxů, ale stejně, když by to byly i ty radio buttony, tak když by jako název bylo pole, tak z POSTu dostanu taky jenom jeden výsledek s klíčem 0 v tom poli. DoubleThink Zajímavé, díky, zase chytřejší :-) Jen by mě zajímalo k čemu to je dobré, za použití jen jednoho názvu, kromě toho, že s tím je pak trošku větší práce to dostat. |
||
bukaj Profil |
#8 · Zasláno: 21. 8. 2008, 11:38:44
joe
„ale stejně, když by to byly i ty radio buttony, tak když by jako název bylo pole, tak z POSTu dostanu taky jenom jeden výsledek s klíčem 0 v tom poli. “ Ale u toho právě u radio buttonů jde :o) Z více možností vybrat jednu jedinnou. Tam je pole naprosto zbytečné. Myslel jsem třeba i u checkboxů Checkboxy jsou zase od toho, aby uživatel mohl „zaškrtnout“ více možností. A na více možností je logické, že musíš použít pole. Přesně, jak píše DoubleThink, PHP nemůže vědět, že když mu v QUERY_STRINGu dorazí kategorie=foo&kategorie=bar, že to pochází z několika checkboxů a že by mělo proto v $_GET na indexu katgorie vytvořit pole a do něj dát položky foo a bar. Resp. PHP QUERY_STRING „čte“ zleva doprava, takže nejdříve si oddělí jednotlivé části pomocí ampresandu (&), pak každou položku nově vzniklého pole rozdělí podle rovnítka, kdy první část je klíč a druhá hodnota, takže nejdříve indexu kategorie nastaví hodnotu foo, ale pak jde dál a na stejném indexu je podle QUERY_STRINGU i hodnota bar, takže foo jde do pryč a je tam bar. Jen by mě zajímalo k čemu to je dobré, za použití jen jednoho názvu U radio buttonů to jinak ani nejde – prohlížeč by pak nepoznal, které spolu souvisí, takže bys jich mohl vybrat víc. U checkboxů stejně jako u multiple <select>u se používá syntaxe pole a pak ti do aplikace dorazí pole možností vybraných uživatelem. Pokud by jsi použil několik názvů, zjišťování, co bylo a nebylo zaškrtnuto/vybráno by nebyla až taková sranda. kromě toho, že s tím je pak trošku větší práce to dostat Právě naopak – práce je s tím míň. (Pokud to použiješ správně, samozřejmě :o)) |
||
joe Profil |
#9 · Zasláno: 21. 8. 2008, 12:07:44
bukaj
„Ale u toho právě u radio buttonů jde :o)“ Ja vím, že u radio buttonů se očekává, že je jen jedna možnost. Napsal jsem to pak proto, abysme si rozumněli. Takže je jedno jestli skupinu radio buttonů pojmenuju "nazev" nebo "nazev[]", i když druhý případ je zbytečný, funguje to stejně a to jsem tim chtěl napsat. Koukni na čas, kdy jsem zakládal diskuzi :-) „A na více možností je logické, že musíš použít pole.“ No právě, že pole jako název použít nemusíš, jak píše DoubleThink ;-) a o to mi šlo. To co popisuješ je v případě posílání metodou get a ne post. Mě překvapilo právě to, že u nějaké skupiny mají jako name nastavený "nazev" a ne "nazev[]", protože s tím polem by se podle mě pracovalo jednodušeji, ale ještě jsem $HTTP_RAW_POST_DATA nezkoušel. „Pokud by jsi použil několik názvů, zjišťování, co bylo a nebylo zaškrtnuto/vybráno by nebyla až taková sranda.“ Byla, nic na tom není, ale není důvod to tak dělat :-) „práce je s tím míň“ Předpokládám, že jsi myslel s polem, tedy když jako name napíšu "nazev[]" ;-) |
||
bukaj Profil |
#10 · Zasláno: 21. 8. 2008, 13:13:56
joe
Koukni na čas, kdy jsem zakládal diskuzi Áh, noční seance :o) No právě, že pole jako název použít nemusíš Dobře, použil jsem špatné sloveso – tak tedy měl bys ;o) To co popisuješ je v případě posílání metodou get a ne post Stejně to ale platí i pro POST. Stejný řetězec, který se by se při použití metody GET připojil na konec URI, se akorát při POST uloží do těla požadavku (a v PHP by tedy měl jít získat pomocí $HTTP_RAW_POST_DATA). Předpokládám, že jsi myslel s polem, tedy když jako name napíšu "nazev[]" ;-) Ne, myslel jsem tím, že pokud budeš používat syntax pole tam, kde se… by se používat měla – tedy v případech, kdy potřebuješ poslat více věcí pod jedním indexem – a skalární syntax používat tam, kde chceš indexu přiřadit jednu věc, pak bude práce míň. Neboli je podle mě blbost užívat syntax pole u skupiny radio buttonů a skalární syntax u skupiny spolu souvisejících checkboxů. |
||
joe Profil |
#11 · Zasláno: 21. 8. 2008, 15:12:35
bukaj
Ok, tak už víme co jsme tím každý chtěl napsat, skončíme to :-) „Neboli je podle mě blbost užívat syntax pole u skupiny radio buttonů a skalární syntax u skupiny spolu souvisejících checkboxů.“ No mě se to taky nezdá :-) Ale teď jsem to úplně náhodou objevil i na lidech.cz když se přihlásíš na seznamu na lidech, koukneš do nastavení profilu a pak kódu ;-) ale tam to zpracovávají nějakým cgi skriptem, to jsem ještě nedělal a snad ani dělat nebudu :-) |
||
Časová prodleva: 16 let
|
0