Autor | Zpráva | ||
---|---|---|---|
JaySee Profil |
#1 · Zasláno: 3. 7. 2012, 16:05:57
Ahoj,
řeším problém, kdy potřebuji vybrat (označit checkboxem) 0 až mnoho hodnot a pokud jsou vybrány, tak je zapsat do databáze (pokud neexistují) nebo je smazat (pokud existují). Hlavně mi jde o tom, jak to udělat (správně) při mě neznámém množství prvků. Prostě třeba můžu vypsat 1000 možností z nichž si uživatel vybere 4. Jakým způsobem tedy potom (správně-bezpečně) přistupovat k poli $_POST a dostat z něj požadovaná data? Přenáší se jen hodntoa ID a ANO/NE, resp. jen ANO. Díky za náměty. |
||
JaySee Profil |
Hmm, zdá se otázka zapeklitá.
Přidám svůj nápad, ale nejsem přesvědčen o tom, že je to správná cesta. Mám tedy formulář, který obsahuje základní identifikační údaje a k tomu celou řadu volitelných položek. Ty volitené položky se jmenují řekněme special5, special78, special125 .. etc. Projedu celé pole $_POST v cyklu a explodem (či něčím jiným) z toho dostanu idčka. (tedy odřízku special od čísla). A pak provedu třeba sto insertů: mysql_query("INSERT INTO special (member_id, special_id) VALUES ('$id', '$spec_id') ON DUPLICATE KEY UPDATE special_id = '$spec_id'"); Ještě by to ale asi chtělo ověřovat, zda-li je poslané id existující... co vy na to? Je to přijatelné řešení, nebo bastlířská prasárnička? |
||
marek094 Profil |
checkboxům nastav
name="jmeno[]" value="checked" a z POST je vezmeš $_POST["jmeno"][0], $_POST["jmeno"][1] .... [n]
if($_POST["jmeno"][$i]=="checked") $checkbox[$i] = 1; else $checkbox[$i] = 0 ... |
||
JaySee Profil |
#4 · Zasláno: 3. 7. 2012, 18:36:06
marek094:
díky za tip! Ale ještě se tedy doptám, když potřebuji přenést id skrz formulář, mám jej přidávat jako jmeno[$id][] a pak to z toho pole dostat? Mě by totiž stačila i varianta, že by se přenesla jen a pouze idečka, kde je checked. |
||
marek094 Profil |
#5 · Zasláno: 3. 7. 2012, 18:39:52
JaySee:
„pouze idečka, kde je checked“ Jedině přes javascript, ale je to celkem zbytečné. „jmeno[$id][]“ Jo to jde (foreach) |
||
JaySee Profil |
#6 · Zasláno: 3. 7. 2012, 18:48:53
marek094:
ještě to není ideální. Když dám print_r($_POST['jmeno']) tak mi to vyplivne Array ( [2] => [4] => ) no ale nejsou tam ty hodnoty (checked nebo true nebo 1) a ty nevybrané se nepošlou vůbec (což chápu a je v pořádku) ... ale neměla by ta hodnota tam přecijenom být? Nebo to mám ověřovat jen na základě existence toho id?
|
||
Tori Profil |
#7 · Zasláno: 3. 7. 2012, 19:27:47
JaySee:
Můžete si do session uložit ID těch checkboxů, a při zpracování formuláře procházet cyklem ne $_POST, ale $_SESSION (a ověřovat, jestli tohle ID checkboxu existuje v $_POST). |
||
JaySee Profil |
#8 · Zasláno: 3. 7. 2012, 19:29:32
Tori:
jo to by šlo, bude tam jen pár uživatelů, nemuselo by dojít k žádným kolizím... dobrej nápad, díky. |
||
Časová prodleva: 12 let
|
0