Autor | Zpráva | ||
---|---|---|---|
Lkor Profil * |
#1 · Zasláno: 26. 5. 2009, 09:02:31
Dobrý den,
potřebuji formulář s dynamickým vytvářením prvků (prvky se vytvoří kliknutím na tlačítko). Něco podobného jsem našel na netu, ale problém nastal s odesíláním údajů z těchto dynamicky vytvořených inputů, textareí do databáze. Při stisku tlačítka "odeslat" se totiž Javascriptově vytvořené dynamické prvky refreshují a přemazají. Tudíž do databáze se už nic nepošle. Prosím Vás tedy o rady, jestli nevíte co s tím. Předem dík moc. P.S.: Posílám ukázku dynamicky vytvořených prvků ve formu. http://www.zaachi.com/cs/items/dynamicke-pridavani-elementu-formulare.html |
||
AM_ Profil |
#2 · Zasláno: 26. 5. 2009, 10:36:25
S dynamickým vytvářením prvků formuláře pracuji také a při odesílání se nic nerefreshuje ani nemaže. Chybu tedy máš zřejmě jinde.
Zkus si ve skriptu pro zpracování vypsat print_r($_POST); |
||
Lkor Profil * |
#3 · Zasláno: 26. 5. 2009, 10:50:19
A to ty dynamické prvky také tvoříš pomocí JS? Protože já mám problém, že při odeslání se ten JS přemaže a tudíž všechny dynamické prvky se zruší a není co posílat. Hodil bys mi sem pls nějaký stručný příklad jak to řešíš? Dík moc
|
||
AM_ Profil |
#4 · Zasláno: 26. 5. 2009, 10:55:20
spíš ty pošli, jak to řešíš :) ano, pomocí JS, a nic se nepřemazává. Jestli dobře chápu tvůj popis, tvrdíš, že při odeslání formuláře se neodešlou ty prvky,které jsi přidal pomocí JS. V tom prostě problém není, hledej chybu jinde (špatné zpracování na straně PHP nebo si v JS ty prvky házíš mimo ten formulář nebo tam děláš nějaké kejkle navíc, které to ruší).
|
||
Lkor Profil * |
#5 · Zasláno: 26. 5. 2009, 11:53:05
JS část:
<script type="text/javascript"> var num_of_lines = 0; function plus(element){ num_of_lines ++; var y = document.getElementById( element ); var option1 = document.createElement('OPTION'); option1.setAttribute('value', 'prvni'); var option2 = document.createElement('OPTION'); option2.setAttribute('value', 'druha'); var option3 = document.createElement('OPTION'); option3.setAttribute('value', 'treti'); var option4 = document.createElement('OPTION'); option4.setAttribute('value', 'ctvrta'); var txt1 = document.createTextNode("Modul A"); option1.appendChild(txt1); var txt2 = document.createTextNode("Modul B"); option2.appendChild(txt2); var txt3 = document.createTextNode("Modul C"); option3.appendChild(txt3); var txt4 = document.createTextNode("Modul D"); option4.appendChild(txt4); var select = document.createElement('select'); select.setAttribute('name', 'select[]' ); var text = document.createTextNode('Modul: '); var p = document.createElement('span'); p.setAttribute('id', 'span1_' + num_of_lines ); var br = document.createElement('br'); select.appendChild(option1); select.appendChild(option2); select.appendChild(option3); select.appendChild(option4); p.appendChild(text); p.appendChild(select); p.appendChild(br); y.appendChild(p); } function minus(element){ if( num_of_lines < 1 ) return; var d = document.getElementById( element ); var olddiv = document.getElementById( 'span1_' + num_of_lines ); num_of_lines--; d.removeChild(olddiv); } </script> <form action="?vytvoreni=true" method="post" id="form" name="form"> <table id="table1"> <tr><td colspan="2" align="center">PŘÍDAVNÉ MODULY</td></tr> <tr><td><a href="#" onclick="plus('table1'); return false;">Přidat modul</a></td> <td> / <a href="#" onclick="minus('table1'); return false;" >Odebrat modul</a></td> </tr></table> <input type="submit" value="Vytvořit vrátník" name="tlacitko" /> </form> |
||
AM_ Profil |
#6 · Zasláno: 26. 5. 2009, 12:09:27
Asi není úplně dobře, když do elementu <table> vnořuješ element <span>, měl bys to buď cpát jinam, než do té tabulky, nebo vytvářet i řádky. Jinak tu chybu nevidím, buď ji přehlížím, nebo je chyba až na straně zpracujícího PHP, ale to, co tu řešíš, bys měl mnohem spíš řešit přes vlastnost "multiple"
|
||
Lkor Profil * |
#7 · Zasláno: 26. 5. 2009, 12:28:36
Jenže multiple mi nevyřeší možnost, že chci mít dva moduly A...
Hmm... a jak řešíš ty ten zápis dynamickejch tlačítek do DB? |
||
AM_ Profil |
#8 · Zasláno: 26. 5. 2009, 12:32:44
Tady by se ti mělo předat pole $_POST['select'][(index)], které postupně projdeš. Řeší se to úplně stejně, jako kdyby tam byly napevno, protože to taky úplně stejně funguje, pořád říkám to samé, problém je zřejmě v něčem jiném :)
|
||
Lkor Profil * |
#9 · Zasláno: 26. 5. 2009, 12:36:27
To jsem blázen, funguje to... a to jsem to zkoušel několikrát... :) A dík moc za ochotu. :)
|
||
Časová prodleva: 15 let
|
0