

PHP, jQuery, Databáze.. dotaz pro pokročilejší
Zdarec.
Mám HTML dokument, který obsahuje hromadu javascriptového kódu a
hlavně hromadu políček. Tyto políčka se navíc dynamicky přidávají.
Požadavkem také je, aby se uživatel kdykoliv mohl vracet k takto rozpracovanému HTML dokumentu.
Protože není snadné takové hodnoty ukočírovat, napadlo mě obalit celý složitý formulář do tagu.
A následně použít metodu: $('#myForm').html(), která vlastně pošle celou část HTML,
tak jak je přes Ajax.
No a potom se uloží v DB.
S tím problém není.
Ale narazil jsem, jak správně zapsat do databáze tuto html část.
Nejprve jsem použil PHP funkci mysql_real_escape_string, přes kterou se mi úspěšně podařilo
vkládat formuláře.
Bohužel funkce odstraňuje některé uvozovky, což vede k tomu, že na prvcích nefunguje JavaScript.
Například, mám:
...apend('<tr onkeyup="calculate(this)" .....
A on mi tam vyzobavá nutné uvozovky ".
Takové HTML následně není ani validní, ani funkční.
Nemá někdo zkušený nápad, jak vhodně takový kód "propašovat" do databáze, a pak ho dostat i ven?
formular prevest na objekt a ten pak jako JSON ulozit do DB, pri nacitani vyskladat formular z JSON objektu...
Díky za nápad. Uvidím, možná to nakonec takto udělám.
Ale těch hodnot je tam fakt moc, chtěl jsem se tomuto vyhnout.
Moje idea byla tato:
Dát formu ID, třeba takhle:
<form id="myForm">
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<br>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
<br>
<input type="checkbox" name="check" value="check1" id="ch1">
<label for="ch1">check1</label>
<input type="checkbox" name="check" value="check2" checked="checked" id="ch2">
<label for="ch2">check2</label>
<br>
<input type="radio" name="radio" value="radio1" checked="checked" id="r1">
<label for="r1">radio1</label>
<input type="radio" name="radio" value="radio2" id="r2">
<label for="r2">radio2</label>
</form>
No a s jQuery lze zavolat:
$( "#myForm" ).html();
Což vlastně vyvolá celou HTML strukturu výše (včetně inputů + jejich aktuálních hodnot).
A právě tuhle část jsem chtěl přenášet a ukládat do databáze.
Nicméně narazil jsem na dvě chyby![]:(](https://static.poradna.net/images/smiley/evilworry.gif)
- IE8 nepoužívá u atributů uvozovky.
To vede k tomuhle průšvihu:
<input type=radio name=radio value=radio 1 />
- Dále nefungují handlery (události) těchto funkcí. OMG !
Ach jo! Tak krásně jsem si to vymyslel.....
Nemá nějaká duše nápad, jak to rychle a elegantně udělat?
//Editace
Tady jsem našel fakt pěknou věc, která by mi mohla píchnout:
yLPY3
Pokud to chceš takhle prasácky, tak to HTML zkus uložit jako binární data (BLOB)...
Neukládej HTML do DB, je to fakt prasárna. jQuery umí vytáhnout data z formuláře a pak už jenom stačí ty data uložit třeba jako JSON.
Taktéž existuje ještě plugin pro naplnění formuláře z JSON dat.
Jinak sice nevím jak dlouho ty data máš držet, ale možná bych se zamyslel nad tím spíše použít session než-li přímo databázi.
BTW: V HTML kódu by se určitě neměli objevovat věci jako
všechny události by se měli registrovat přímo v JS.
Co misto uvozovek pouzit apostrofy?