Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Blokowanie rekordów
Forum PHP.pl > Forum > PHP
TomASS
Witam,

mam edycję zamówienia (w ogólności rekordu), chciałbym zrobić blokadę tak, aby tylko jedna osoba mogła jednocześnie edytować - w przypadku gdy kolejna osoba chce edytować ten rekord chciałbym aby wyświetlił się komunikat "edycja niemożliwa".

Można np. ustawiać flagę w bazie MySQL, ale co będzie gdy użytkownik po prostu zamknie okienko a nie da zapisz albo anuluj? ta jedynka pozostanie tam na wieki....

ktoś już rozwiązał taki problem albo wie czego szukać po sieci?
Crozin
Zamiast jedynki oznaczającej zablokowany rekord wstawiaj tam aktualny czas. Rozpoznawanie czy ktoś edytuje: czas z bazy jest < teraz minus np. 60 sekund. Dodatkowo na stronie formularza edycji musiałbyś JSowo (czy w dowolny inny asynchroniczny sposócool.gif co te 60 sekund wysyłać żądanie, które by aktualizowało tą wartość (czas).
TomASS
Dzięki, pomysł niezły, niezły.

Problem może być w momencie kiedy JS się wysypie, lub przeglądarka go nie obsługuje :/

Może są jeszcze jakieś inne?
nospor
Cytat
Problem może być w momencie kiedy JS się wysypie
JS jak jest poprawnie napisany to sie nie wysypuje.

Jak rekord jest zablokowany dłuzej niz np. godzine to mozesz z czystym sumieniem zalozyc, ze cos sie posypalo i mozna juz rekord odblokowac.
TomASS
Tylko kiepsko czekać na odblokowanie rekordu aż godzinę ;/

Cytat
JS jak jest poprawnie napisany to sie nie wysypuje.


Ja tam Panu JSowi nie wieżę za grosz winksmiley.jpg Dlatego chcę uniknąć korzystania z niego smile.gif
nospor
Cytat
Tylko kiepsko czekać na odblokowanie rekordu aż godzinę
to byl przyklad. jak chcesz to czekaj tylko pol godziny

Cytat
Ja tam Panu JSowi nie wieżę za grosz
A ja na podstawie doswiadczenia moge powiedziec ze mozna temu Panu zaufac. Jedyne co trzeba zrobic to spłodzić go bez błędów.
TomASS
Cytat
Jedyne co trzeba zrobic to spłodzić go bez błędów.

Masz rację - jak się napisze bez błędów to się nie wyspie winksmiley.jpg Podobnie jak się wcale go nie napisze winksmiley.jpg

Dzięki, kolejne moje pytanie - czy jest jakaś możliwość napisania tego bez pomocy JS?
nospor
Cytat
Podobnie jak się wcale go nie napisze
No to nie pisz wogole blokowania - też sie nie wysypie.

Oczywiście ze mozna:
koles klika edycje - blokujesz rekord poprzez wspomnianie wczesniej pole
koles klika zapisz i wychodzi - odblokowujesz pole
koles nie kliknal zapisz, tylko sobie poszedl na panny - sprawdzasz date blokady, jak dluzsza niz np. pol godziny - odblokowujesz
TomASS
Cytat
No to nie pisz wogole blokowania - też sie nie wysypie.

Masz rację.


Właśnie, tutaj nie mogę znaleźć kompromisu, 30min wydaje się być długie...za długie na czekanie na automatyczne odblokowanie, oczywiście można ten czas skrócić do 15min, ale 15min to może trwać sama edycja.... cóż może skuszę się na tego JSa.
nospor
No to połącz rozwiązanie z js z rozwiązaniem bez js. W 99% przypadków wszystko bedzie cacy.
askone
Hej

Nie jestem pewień na 100% czy to może być rozwiązaniem, ale poczytaj:

page 1
page 2
page 3

TomASS
Tak - dodam jeszcze stronę, gdzie każdy użytkownik będzie miał powypisywane rekordy które poblokował z możliwością ręcznego odblokowania.
Crozin
Jak tak bardzo nie chcesz JS to zawsze możesz skorzystać np. z ukrytej ramki, w której jest strona z automatycznym odświeżaniem co 30 sekund. Albo nawet połączyć oba rozwiązania (tzn. JS mógłby już taką ramkę blokować).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.