Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tracker - rejestrowanie wprowadzonych zmian
Forum PHP.pl > Forum > PHP
drbane
Zastanawiam sie jak zrobić logowanie zmian w stylu: użytkownik wchodzi do edycji danych (np. produktu) i zmienia np. tylko jego cenę. Muszę zarejestrować zmianę ceny (tylko ceny, użytkownik opisu i innych wartości nie zmieniał). System został napisany przez kogoś innego i jest dosyć spory.

Co mi przychodzi do głowy to tyle, żeby za każdym razem przy zapisie wywoływać funkcję z tytułem operacji, nazwą pola i jego wartością. Tak jak pisałem, system jest spory więc czekałoby mnie edytowanie wszystkie gdzie takie zmiany miałyby być rejestrowane.
Inna sprawa, to jak wychwycić co było zmienione? Porównywać wprowadzone dane z tym co jest w bazie?

Może jest jakieś inne rozwiązanie? Może ktoś już miał podobny problem?
UDAT
W jaki sposób masz realizowany zapis?
drbane
Jest główna nadrzędna klasa w której jest metoda zapisu.
edit:
----
Zapis jest realizowany tak, że do metody jest podawana tablica w której są pola i wartości (zrzut $_POST) i klasa zapisuje je w wybranej tablicyMySQL.
UDAT
Cytat(drbane @ 23.07.2007, 15:50:23 ) *
Jest główna nadrzędna klasa w której jest metoda zapisu.
edit:
----
Zapis jest realizowany tak, że do metody jest podawana tablica w której są pola i wartości (zrzut $_POST) i klasa zapisuje je w wybranej tablicyMySQL.


Czemu nie możesz zrealizować tego modyfikując klasę nadrzędną i dodając odwołanie do logowania?
Ewentualnie jeśli martwisz się Cross-cutting concern pomyśl nad użyciem AOP (chociaż pewnie to podejście odrzucisz - na początku będzie się wydawać że nie warto - ale nic bardziej mylnego).
drbane
To nie jest problem, z tym ze log musi wygladac tak:

Cytat
Zmiana ceny, 100 PLN
Dodanie nowego produktu, nazwa: PROSZEK DO PRANIA

Nie wiem skad mam wiedziec, ktore pole w formularzu bylo zmodyfikowane (tzn. teoretycznie moge porownac wczesniejsze dane z wprowadzonymi z formularza, ale ile to roboty - dziesiatki formularzy).
Mam maly metlik w glowie, poniewaz mam modyfikowac nie swoj kod. Poprostu szef zazyczyl sobie logowania zmian w ten sposob no i teraz co? Mam caly kod tak przekopac? A nad projektem pracuje jeszcze 2 obcokrajowcow i tez chlopcy za kazdym razem musza wywolywac logowanie...
UDAT
Chyba nie do końca rozumiem, jak masz nadklasę product:
  1. <?php
  2. class Product {
  3.  public static function addNewProduct( Product $p ) {
  4. logujDodane( $p );
  5. orginalna_logika_biznesowa();
  6.  }
  7.  
  8.  public static function modifyProduct (Product $p ) {
  9. $dane=pobierz_zapisane_dane(); 
  10. $porownanie = porównaj($dane, $_POST)
  11. loguj( $porownanie );
  12. orginalna_logika_biznesowa();
  13.  }
  14. }
  15. ?>


Bez większej ilości szczegółów nic nie można poradzić - nie można rozwiązać problemu którego się nie zna.
drbane
Oczywiscie rozumiem. To jest metoda ktorej wlasnie nie chcialbym uzyc. Chodzi mi o zautomatycowanie tego.
W tym systemie to wyglada tak:

Kod
Object
--insert
--save

Product extends Object
--insert
--save


---
edit:

W sumie mysle tak: jak mam linki w stylu "product.php?action=update&id=2" to zrobie mape linkow z nazwami. Tylko jak wykryc te cholerne zmiany w $_POST??
skowron-line
Ja zrobilem cos podobnego do firmy
i mam tak ze
zapisuje do bazy cala tablice $_POST
tablice $_GET
dziele url na strone glowna,
adresy IP

Wszystko to trzymam w bazie ktora raz w miesiacu zrzucam do pliku, niestety niemam jeszcze skryptu ktory by to ladnie wszystko dzielil zeby bylo to ladnie czytelne.

Dodatkowo zrobilem przegladarke tego co jest w baze znam ten program wiec mniej wiecej wiem co ludzie robia jak sobie spojrze na te tablice. Dzis zrobilem ladna wyszukiwarke w Ajaksie wiec skrypt jest jeszcze bardziej fajny.

Moze za pare dni uda sie napisac skrypt do dzielenia tych danych
drbane
No wlasnie tak to mialem zrobione, ale szefuncio chce zeby to wszystko ladnie sie nazywalo (np. "Zmiana ceny: 40PLN").
Ale juz jestem na dobrej drodze:)
skowron-line
no my mamy narazie to tylko na potrzeby administratorow systemu wiec szef chyba jeszcze o tym nie wie, moze i lepiej bo zacznie wymyslac a i tak ma dosyc ciekawe pomysly ktore skutecznie uniemozliwiaja mi wyjscie z pracy
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.