Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Neukládej HTML do DB, je to fakt prasárna. jQuery umí vytáhnout data z formuláře a pak už jenom stač… nový
martin.developer 24.03.2015 10:19
martin.developer
Co misto uvozovek pouzit apostrofy? poslední
krata-mobil 24.03.2015 15:53
krata-mobil

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

onkeyup="calculate(this)"

všechny události by se měli registrovat přímo v JS.

var object = document.getElementById("foo"); // V jQuery $("#foo")

object.addEventListener("keyup", handler); // pro moderní prohlížeče
object.onkeyup = handler; // IE8 a starší
object.bind("keyup", handler); // jQuery

Zpět do poradny Odpovědět na původní otázku Nahoru