Formulier-elementen (in HTML) ondersteunen array-constructies door rechte haken toe te voegen aan een veldnaam:
Dit soort velden kun je knippen en plakken met JavaScript (waarschijnlijk bedoelde je dat of jQuery in plaats van JSON, ik zie niet helemaal hoe JSON hier bij past?).
Als je vervolgens een regel opslaat en daarna weer wilt bewerken in eenzelfde soort dynamisch formulier zou je kunnen overwegen om een referentie (het volgnummer / het auto-increment veld) mee te geven aan dit veld:
Wel zul je iets moeten verzinnen om het onderscheid te maken tussen bestaande regels en nieuwe regels.
Wat je ook nog zou kunnen doen (en wellicht stukken makkelijker is) is het volgende: deze regels zijn gekoppeld aan een overkoepelend iets (een factuur, een order, whatever). Wanneer je al deze data update doe je het volgende bij verwerking van het formulier:
- je verwijdert alle bestaande items die gekoppeld zijn aan de factuur, en
- je voegt ze opnieuw toe
Dus je gebruikt deze als een koppeltabel tussen je orderregels en je orders, je hoeft dan geen moeilijke inspecties te doen maar kiepert gewoon alles weg en voegt alles (en mogelijk meer) opnieuw toe.
Dit alles zou wel in één ondeelbare actie moeten. Dit kun je doen met database-transacties. Je moet er dan wel voor zorgen dat de ENGINE die je tabellen gebruiken deze bewerkingen ondersteunen.
In zijn algemeenheid is het ook wel handig dat als je een grote administratief-achtige database hebt dat deze echt relationeel is opgezet. Tabellen hebben dan echt onderlinge verbanden en relaties middels foreign keys.
Indien deze database(tabellen) niet de InnoDB engine hebben, zou ik daar eerst eens mee aan de slag gaan.
De database vormt het fundament van je applicatie. Als deze niet goed is, hoef je ook niet veel van je applicatie te verwachten.
EDIT: over PDF: dit lijkt mij echt een aparte zijstraat en die zou ik gewoon apart behandelen. Je zou bij het ontwerp van dit ding wel in je achterhoofd kunnen houden dat dit op ening moment ook in PDF-vorm gebruikt moet worden. Daarbij is het volgens mij ook (bij facturatie dan) belangrijk dat op het moment dat je hier een PDF van maakt en deze naar een klant stuurt dat de bijbehorende data niet meer gewijzigd kan/mag worden.