Formulář pro více záznamů do tabulky dtbze
2 příspěvky
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravím všechny, řeším následující úlohu: Na dané stránce má uživatel možnost tipovat výsledky 1..n zápasů. Po vyplnění formulářových polí (pro každý zápas jsou 2 - góly domácích a góly hostů) má mít uživatel všechny typy zapsat do databázové tabulky (se sloupci ID zápasu, domácí, hosté, góly domácí, góly hosté) najednou, stisknutím jednoho tlačítka. ID uzivatele bude v SESSION. Kdyby se někdo chtěl podívat - představuji si to takhle: www.vhala.chytrak.cz uživatel vhala a heslo vhala - pak v menu v levo kliknout na "Zápasy". Jde o studijní verzi - neřešte detaily. Doposud jsem formuláře vnímal tak, že šlo pokaždé o zápis jednoho řádku do tabulky. V tomto případě ale vkládám několik řádků jedním formulářem. Asi bych se s tím nějak dokázal poprat, ale zatím mě napadají samé divné věci:). Existuje nějaké elegantní řešení, jak se tento problém řeší (za použití php)? Off topic - je tu na fóru možnost vyhledávání? Vím, že dřív tu byla, ale teď nikde žádnou lupu nevidím. Díky za nápady....
-
Tak lze to. Klasická varianta je, že každá položka (input) má svoji name hodnotu a tu poté jen zpracujete. Tak jak to tam máte teď. Akorát je to dosti nepraktické s velkou pravděpodobnosti chyby. Pro tyto účely lze využít featurku. Každý blok formuláře (zápas) nastavit jako pole a při zpracování s ním jako pole pracovat. Tedy. Ve formuláři budete mít společný name s tím, že pro každý zápas nastavíte jako index jeho id. <input name="d[1]" value=""> <input name="h[1]" value=""> <input name="d[2]" value=""> <input name="h[2]" value=""> <input name="d[3]" value=""> <input name="h[3]" value=""> Při zpracování se to pak bude chovat jako dvě proměnné d a h, ale s tím, že to nebude single hodnota, ale pole s indexem id. foreach ( $_POST['d'] as $id_zapas => $d_value ) { $d = $d_value; $h = $_POST['h'][$id]; ulozit(id_zapas, d, h); }