007slawek
25.03.2009, 20:03:18
Cześć,
Mam w bazie zapisane zapytania SQL, które zostały wykonane w panelu administracyjnym w formie np:
UPDATE customers SET customer_name='Jan Kowalski' WHERE customer_id=1.
I teraz chciałbym uzyskać na stronie postać np: Zmieniono w tabeli Klienci nazwisko klienta na Jan Kowalski
Czyli szukam jakiegoś parsera, analizatora, który po odpowiedniej konfiguracji zwróci mi taką formę, jak opisana wyżej.
Mam już pomysł jak to zrobić, ale chciałem Was zapytać, czy nie znacie jakiegoś gotowego rozwiązania.
Kalinowcyk
25.03.2009, 22:10:01
Rozumiem, że chcesz to uzyskać na podstawie tylko bazy danych? Nie tworzysz żadnych logów itd?
007slawek
26.03.2009, 12:43:07
Tak, wszystkie zapytania mam w bazie i chcę je pobrać i wyświetlić na stronie, tak, żeby dla gościa było to zrozumiałe. Narazie zrobiłem to tak "rozbieram" zapytanie na części.
Stworzyłem jedną tablicę, w której mam jako klucze nazwy wszystkich tabeli, a jako wartości tłumaczenia ich, czyli np $tablica = Array("customers"=>"Klienci");. Jak znajdzie mi w analizowanym zapytaniu (powiedzmy UPDATE) sql nazwę tabeli customers, to zamienia mi to na tekst "Zmieniono w tabeli Klienci".
Następnie mam drugą tablicę z kluczami w danej tabeli i nazwami pól, w których znajdują się wartości tych kluczy, czyli np. $tablica = Array("customer_id", "customer_name).
I jeszcze jedną tablicę z odpowiednio odmienionymi nazwami wszystkich pól np. $tablica = Array("customers_email"=>"Adres e-mail");
Przypuśćmy, że mamy zapytanie UPDATE customers SET customer_email='jan@kowalski.com' WHERE customer_id='12'.
Program sprawdza typ zapytania. Tutaj UPDATE, więc zaczyna nowy strong od "Zmieniono w tabeli "
Póżniej sprawdza tłumaczenie nazwy tabeli. Znalazł customers, więc "Zmieniono w tabeli Klienci"
Następnie znajduje nazwę pola customer_email i jego wartość, więc mamy już "Zmieniono w tabeli Klienci Adres e-mail na jan@kowalski.com"
Sprawdza czy jest WHERE i wtedy mamy "Zmieniono w tabeli Klienci Adres e-mail na jan@kowalski.com u "
Skrypt przeszukuje czy customer_id jest w tablicy z kluczami. Jest więc tworzy zapytanie SELECT customer_name FROM customer WHERE customer_id='12'
I tak w sumie otrzymujemy tekst "Zmieniono w tabeli Klienci Adres e-mail na jan@kowalski.com u klient JAn Kowalski"
O takie coś mi chodzi. Czy myslicie, że w dobrym kierunku idę, czy może jest jakiś inny sposób na wykonanie tego?
Bart77
26.03.2009, 16:27:22
W sumie wartałoby napisać sobie coś takiego. Wręcz zdziwiłbym się gdyby ktoś już tego nie napisał

Pogooglaj głębiej.
007slawek
26.03.2009, 19:34:04
preg_replace i str_replace właśnie do tego używam. tyle już napisałem. tylko jak mowicie, az dziw, ze nie moge znalezc czegos takiego:)