Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie SQL w postaci czytelnej dla ludzi:)
007slawek
post 25.03.2009, 20:03:18
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 18.04.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Kalinowcyk
post 25.03.2009, 22:10:01
Post #2





Grupa: Zarejestrowani
Postów: 67
Pomógł: 4
Dołączył: 23.09.2008

Ostrzeżenie: (0%)
-----


Rozumiem, że chcesz to uzyskać na podstawie tylko bazy danych? Nie tworzysz żadnych logów itd?

Ten post edytował Kalinowcyk 25.03.2009, 22:10:16


--------------------
Notatnik programisty
Go to the top of the page
+Quote Post
007slawek
post 26.03.2009, 12:43:07
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 18.04.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
erix
post 26.03.2009, 14:28:48
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




str_replace" title="Zobacz w manualu PHP" target="_manual + preg_replace" title="Zobacz w manualu PHP" target="_manual.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Bart77
post 26.03.2009, 16:27:22
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 3
Dołączył: 24.03.2009
Skąd: Poznań

Ostrzeżenie: (0%)
-----


W sumie wartałoby napisać sobie coś takiego. Wręcz zdziwiłbym się gdyby ktoś już tego nie napisał smile.gif Pogooglaj głębiej.
Go to the top of the page
+Quote Post
007slawek
post 26.03.2009, 19:34:04
Post #6





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 18.04.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:40