forma nastavitev in shranjevanje le teh

Pozdravljeni,

imam formo za spreminjanje gesla, spremembo prikazne slike, starost, mesto.
Vse skupaj imam v eni formi, in tako samo en gumb za shranjevanje nastavitev.

Zanima me kako bi lahko preveril katere nastavitve so bile iz strani spremenjene, da bi v bazo shranil le te ?

7 odgovorov

Ena rešitev bi bla (php koda), da začetno stanje shraniš v SESSION ali v array spremenljivko, potem pa narediš primerjavo (greš recimo skozi začetno tabelo oz. session (kjer imaš shranjene stare podatke) in primerjaš $_POST podatke (validirane). Tisto, kar je v POST drugače shraniš.

Ne vem pa zakaj ne bi kar vse shranil, imaš toliko podatkov da se ti splača pisat logiko zadej zato?

V bistvu podatkov ni dosti (samo tisto kar sem navedel v prvem postu), sem pač mislil, da bi bilo boljše, če nebi shranjeval vsega. Sam sem mislil, da bi blo pač bolše da nebi pisal v bazo če ni potrebe, ampak če to ne obremenjuje strežnika tako zelo, lahko vpišem tudi vse..

Če imaš to za urejanje, potem le v formo kličeš tisto kar je ŽE v bazi in potem kaj popraviš in spremeniš po želji. (recimo pokličeš v value: value="<?=$NekajIzBaze?>" )

Če nič ni v bazi pa bo itak prazno pokazalo.:)

markoslo: Še nekaj s strani MySQL. Če narediš UPDATE in se vrednosti ne spremenijo jih MySQL ne prepiše in prišpara nekaj "dragocenega" časa. Vsekakor se ti POMOJE ne splača pregledovat ali je bilo popravljeno ali ne. Ob shranitvi pač posodobi njihov profil v vsakem primeru:) Simpl je ta najtabuljše!

Kot prvo naj povem da so Roky-jeva in iMP-ova rešitvi najbolj enostavni in če ne rabiš zgodovine spremeb tudi najboljše.

Sam jaz bi odgovoril na tvojo prvo zahtevo, v kateri želiš vedeti kaj se je spremenilo.
Rešitev ki jo v Javi (model 2 arhitektura) uporabljam je da shraniš podatke v nek objekt (Bean) in napišeš hashCode in equals metodi.

Grobi postopek pa je
Potegneš podatke iz baze in jih shraniš v Bean
Prikažeš vsebimo Bean na Spletni strani (forma)
Submitaš formo
Ujameš podatke (POST) in jih shraniš v nov Bean, ki je istega tipa.
Primerjaš Bean-a z equals.

Tako samo veš da so podatki spremenjeni, če hočeš natančno vedeti KATERI moraš malo predelat standardno equals metodo in bean (označevanje spremenjenih vrednosti).

Da se naredit tudi brez Beanov, sam potem več kode preneseš na kontroler.

Hvala za odgovore, nisem vedel, da mysql ne prepiše enakih vnosov, če uporabiš update. Bom kr izpustil preverjanje, ker itak imam napisan query z update.

Bom si pa zapomnil tole rešitev z objekti. :)

Lp

Evo še uradna razlaga:

When using UPDATE, MySQL will not update columns where the new value is the same as the old value. This creates the possibility that mysqlaffectedrows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.