Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie SQL w postaci czytelnej dla ludzi:)
Forum PHP.pl > Forum > PHP
007slawek
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
Rozumiem, że chcesz to uzyskać na podstawie tylko bazy danych? Nie tworzysz żadnych logów itd?
007slawek
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
W sumie wartałoby napisać sobie coś takiego. Wręcz zdziwiłbym się gdyby ktoś już tego nie napisał smile.gif Pogooglaj głębiej.
007slawek
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:)
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.