OK, část kódu (obě části jsou součástí class, ale jen u druhé jsem to uvedl)
(...)
Eeee, pokud se tam míchá php a html tak to rozhodně moc objektově napsané není :-)
Řešit se to dá několika způsoby:
- při každé změně selectu se form odešle na server a server pošlě nově vyrenderované html, logika provázání je zcela a jen v php (data i odezva ui)
- načte se strom závislostí jen jednou a to na začátku do javascriptu, logika provázání při změně selectu je (co se týče odezvy ui) jen v javascriptu, form se odesílá až nakonec, kde se možná v php ještě validuje, zda je zadaná kombinace přípustná
- při každé změně selectu se načítá závislost ajaxem ze serveru do javascriptu, logika provázání je v php (co se týče dat) i v javascriptu (odezva v ui), form se odesílá až nakonec, kde se možná v php ještě validuje, zda je zadaná kombinace přípustná
Výber nejvhodnější varianty závisí na počtu položek, na tom, jak často se mění (transakce a jejich souběh) a jak tvrdě mají být zadané hodnoty validované (rovněž transakční chování) a nakonec samozřejmě na tom, kterou technologii tvůrce ovládá.
V závislosti na tom, jaké jsou odpovědi na uvedené otázky se
může výsledná cena za práce lišit ŘÁDOVĚ. Což je moment, kdy řada
zadavatelů uteče, protože „Proč je to tak komplikované, když chci přeci tak jednoduchou věc!“ a ještě si bude myslet, že všichni jen šroubují cenu. Ve skutečnosti ale
programátor jen přistupuje k zadání zodpovědně a dělá analýzu. A ta je drahá, leckdy dražšší než následné nakódování. A ano, i u malého zadání je potřeba mít minianalýzu - jinak se prostě snadno výsledek a potřeby zadavatele minou anebo přestane sedět nacenění a začne spor. Poměr nákladů na analýzu a nákladů na vyhotovení pak určuje, za jakých podmínek bude programátor chtít do projektu jít. Nejde o šroubování ceny, jde o to, aby se zadavatel a dodavatal vůbec dorozuměli.