Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako spreciti overwrite informacija u bazi

[es] :: PHP :: Kako spreciti overwrite informacija u bazi

[ Pregleda: 2094 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

djovan01

Član broj: 75700
Poruke: 196
208.65.70.*



Profil

icon Kako spreciti overwrite informacija u bazi13.04.2007. u 18:00 - pre 206 meseci
Napravila sam sajt koji sluzi za evidenciju kvota poslova. U okviru tog sajta imam formular za popunjavanje nove aplikacije i formular za editovanje vec postojece aplikacije. Problem je nastao ukoliko dvoje ljudi rade editovanje nekog od poslova u isto vreme tako da recimo osoba A popunjava sekciju1 a osoba B popunjava sekciju 2 negog posla "Posao1". E sada osobaA zavrsi popunjavanje sekcije1 sacuva promene, u medjuvremenu osoba B je zavrsila sa promenom svog dela ali na svojoj verziji aplikacije ne vidi promene osobe B i onda prilikom update-a Posla1 izbrise sve ono sto je njegov predhodnik popunio. Ne znam na koji nacin da sprecim i kako da postavim provere vrednosti polja u bazi tako da sprecim probleme brisanja informacija.

Nadam se da ce se naci neko ko ce razumeti o cemu se radi i pomoci mi da resim ovaj problem. Hvala

 
Odgovor na temu

mb_sa

Član broj: 50529
Poruke: 172
*.PPPoE-4562.sa.bih.net.ba.



Profil

icon Re: Kako spreciti overwrite informacija u bazi13.04.2007. u 19:00 - pre 206 meseci
Meni za sada pada jedino ovo rjesnje, tj. ukoliko neko vec vrsi izmjene, onemogući da iko drugi moze, tj. "zakljucaj" taj posao za izmejne za sve ostale korisnike!
 
Odgovor na temu

djovan01

Član broj: 75700
Poruke: 196
208.65.70.*



Profil

icon Re: Kako spreciti overwrite informacija u bazi13.04.2007. u 19:03 - pre 206 meseci
a kako to da uradim? nikada nisam radila nista slicno.

hvala
 
Odgovor na temu

mb_sa

Član broj: 50529
Poruke: 172
*.PPPoE-4562.sa.bih.net.ba.



Profil

icon Re: Kako spreciti overwrite informacija u bazi13.04.2007. u 19:19 - pre 206 meseci
Najjednsotavnije rjesenje bi bilo da u tabeli imas kolonu 'izmjena' koja moze imati
dvije vrijednosti 0 (default, dozovoljene 'izmejne' za sve) i 1 (vec neko azurira, ostali ne mogu azurirati)!

I kada neko klikne na link tipa posao.php?akcija=izmjeni&posao_id=34 izvrsis update u kolone 'izmjena' sa 0 na 1. Kada zavrsi izmejne izvrsis update sa 1 na 0.

Naravno, prilikom prikaza tih poslova ne prikazujes dugmadi/linkove za izmjenu ili napis neku obavijest + da osiguras da se forma za izmjenu ne moze ucitiati
ako je vrijednost 1, da neko ne bi unio direktan link u adress bar.

E sada se ovdje javlja problem ukoliko neko klikne na link za izmjenu i onda samo napusti browser (a ne izvrsi nikakve izmjene), onda bi taj posao vjecno ostao zakljucan. Ovo bi se moglo rijesti da zapises datum i vrijeme kada je zapoceta izmjena i ako je duza od nekog perioda (15 ili 30 minuta), da se izvrsi update kolone izmjena na 0. Naravno, za ovo ti ne treba nikakv cron job ili slicno, vec nek se upit koji bi ovo odradio izvrsi prilikom svakoh logovanja bilo kojeg korisnika.

Nadam se da ce ti ovo pomoci, a bilo bi intersatno cuti da li neko ima neku drugu idjeu za rjesnje ovog problema!

 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
*.net
Via: [es] mailing liste



+8 Profil

icon Re: Kako spreciti overwrite informacija u bazi13.04.2007. u 20:51 - pre 206 meseci
Ovakvo rešenje je svakako najjednostavnije ali se u praksi izbegava baš zbog toga što je vreme trajanja lock-a nepoznato. Jedna mogućnost je da ograničiš vreme kao što je već pisano. Druga mogućnost je da prilikom pristupanja bazi pre update-a zapamtiš trenutnu vrednost sloga (ono što dobiješ select-om). Potom kada treba uraditi update, prvo uradiš select i uporediš vrednosti sa onima dobijenim prethodnim selectom. Ukoliko podaci nisu isti implementiraš logiku koja će obrađivati ovakav događaj. Da li ćeš obavestiti korisnika, ili ćeš merge-ovati podatke, ili ćeš mu prikazati izmenjene podatke i pitati da li da ih čuvaš...
 
Odgovor na temu

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1122
*.BVCOM.NET.

Sajt: www.gvozden.info


+68 Profil

icon Re: Kako spreciti overwrite informacija u bazi15.04.2007. u 18:03 - pre 206 meseci
Jedno od resenja moze biti da koristis ajax za upis jednog po jednog polja - sukcesivno kako se popunjava forma.

ili mozes raditi submit posle upisa jednog broja podataka.

Meni se ipak svidja vise resenje sa zakljucavanjem zapisa. Tako rade desktop aplikacije. E, sad, problem napustanja browsera je aktivan.
Nisam nikad radio event on shutdown, mozda bi to nesto pomoglo?


 
Odgovor na temu

mb_sa

Član broj: 50529
Poruke: 172
*.PPPoE-277.sa.bih.net.ba.



Profil

icon Re: Kako spreciti overwrite informacija u bazi15.04.2007. u 18:28 - pre 206 meseci
Mislim da bi se pri napustanju mogao se automatski pokrenuti neki recimo pop-up malih dimnezija, koji bi otkljucao posao, i automatski se taj pop-up zatovrio Vjerovatno bi se to moglo izvrsiti manje-vise neprimjetno!
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.adsl.beotel.net.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako spreciti overwrite informacija u bazi15.04.2007. u 19:54 - pre 206 meseci
Mozda i moze, ali je to suvise nepouzdano (nestanak struje, interneta, pucanje browsera, ne izvrsavanje javascripte itd...). Mozda u gorepomenutoj kombinaciji sa zakljucavanjem na odredjeno vreme, ali je onda beskorisno. Mislim da je zakljucavanje na period vremena jedini nacin koji lici na resenje. Upise se kad je zadnji put poceo edit, i da li je zavrsen. Ako je zavrsen, ili je proslo npr.10 minuta od pocetka, onda je edit dozvoljen... Isto uraditi i prilikom same akcije ubacivanja u bazu, kao i pre crtanja samog linka ka editovanju...
Mada opet postoji preklapanje prilikom 2 unosa. Primer:
Osoba 1: vreme 00:10 pocinje edit, ali ne zavrsava isti na vreme, nego ode da skuva mleko;
Osoba 2: 00:21 dobija edit, i submituje, regularno;
Osoba 1: 00:32 nakon uspesno skuvanog mleka, vraca se i klikne na submit, te gazi prethodnu izmenu, a bez da je toga svesna...

Mora da postoji bolji nacin za ovo, valjda ce neko od iskusnijih da nas udostoji odgovora

P.S. Da, kuvao sam mleko dok sam pisao
 
Odgovor na temu

[es] :: PHP :: Kako spreciti overwrite informacija u bazi

[ Pregleda: 2094 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.