Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzanie, czy warunek jest poprawnie napisany
Darek M.
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.05.2013

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


Witam po dłuższej przerwie,

słowem wstępu, tworzę funkcjonalność, która pozwoli na tworzenie filtrów do pewnej z tablicy - takich filtrów mogę mieć do 10 sztuk, każdy jest obiektem przechowującym 3 wartości - nazwa pola, operator oraz wartość porównywana: w końcowej fazie będzie to zamieniane na część zapytania WHERE: "NazwaPola__c < 100". Obecnie każdy z tych filtrów jest łączony za pomocą "AND", tak więc posiadając takie filtry:

1. Koszt < 100
2. Nazwa LIKE '%Test'

otrzymam wszystkie, które mają w nazwie Test i ich koszt jest mniejszy niż 100. Po dodaniu trzeciego filtra:

3. Koszt > 150

nie będę miał żadnego rekordu, bo nie możliwe, aby Koszt był zarówno mniejszy od 100 i większy od 150 - i tu dochodzimy do sedna. Użytkownik mam mieć możliwość dostosowania filtrów w taki sposób, że może w odpowiednim polu wpisać coś w stylu:

"(1 AND 2) OR 3"

wtedy, zapytanie ma być zbudowane według tego wzorca i za 1, 2 oraz 3 wstawić odpowiednio filtry - to już mam obcykane. Problemem jest walidacja tej logiki: w jaki sposób mogę sprawdzić, czy aby na pewno użytkownik wpisał poprawnie warunek (tj. liczba nawiasów się zgadza) oraz mam pewność, że nie ma czegoś takiego jak "1 AND OR 2" czy "1 AND ()". Liczbę nawiasów obecnie waliduję w taki sposób, że zliczam od lewej liczbę nawiasów otwierających oraz zamykających - jeśli zamykających w trakcie przechodzenia od lewej mam więcej niż otwierających, lub otwierających na zakończenie jest więcej niż zamykających, jednak nie wiem, co zrobić z samą logiką.

Dziękuję za wszelkie rady, pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 23.08.2025 - 09:05