Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis do bazy - sprawdzenie czy rekord nie uległ zmianie
Forum PHP.pl > Forum > PHP
okatse
Witam
Problem dotyczy zapisywania do bazy. Gdy dwóch ludzi otworzy np: edycję produktu o ID =1. Oboje zobaczą ten samo formularz i te same dane w nim. Pierwszy poszedł na kawę a drugi w tym czasie zmodyfikował dane i zapisał do bazy. Pierwszy wraca z kawy patrzy na formularz ale widzi w nim stare dane (bo ktoś w tym czasie je już poprawił) - nieświadomy niczego wprowadza swoje dane i zapisuje. W momencie zapisu powinien dostać info że dane w formularzu podczas jego nie obecności zostały zmienione.
Zna ktoś jakiś sposób na to? Blokowanie rekordu na czas edycji w formularzu nie wchodź i w grę.
kapslokk
Wstaw do tabeli pole "modifiedAt" z czasem ostatniej modyfikacji, przy pobieraniu rekordu do edycji zapiszesz sobie ten czas, później przy próbie zapisu rekordu najpierw porównujesz czy zapisana data jest taka sama jak w bazie, jeśli nie to wywalasz informację, że dane się zmieniły.
Tomplus
Możesz sprawdzać różnicę danych sprawdzać checksum rekordów. Albo wchodząc na dokument blokować do niego dostęp, który będzie odblokowany po pewnym czasie, lub po kliknięciu czynności.
Wtedy jak ktoś inny wejdzie na dokument będzie tylko do odczytu.
Pyton_000
Jeśli masz pole typu `updatedAt` to je pobierasz. Potem przy zapisywaniu robisz tak:

UPDATE table SET col1 = val1, updatedAt = NOW()
WHERE id = 1 AND updatedAt = WartośćPobranaWcześniej.

Jesli zwórci Ci to zapytanie 1 to znaczy że poszło ok. Inaczej klops.
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.