Filtry MHD pozwalają efektywnie filtrować zakłady na układach liczb.
Dla wyjaśnienia, posłużę się prostym przykładem filtra końcówek.
Przykład :
Filtr o nazwie "końcówki 1" (skrócona nazwa "K1") filtruje liczby zakończone liczbą 1.
Są to liczby 1,11,21,31,41 ...
Jeżeli ustawi się opcję "poziom=1" i opcję "mode='nie więcej", to filtr przepuści zakład
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- 7,12,21,32,38,49
7,12,24,32,38,49 - GeSHi © Codebox Plus
a nie przepuści zakładu :
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- 7,12,21,31,38,49
- GeSHi © Codebox Plus
Filtry można kaskadować a więc np można wprowadzić dla przykładowej końcówki np 1
dwa osobne filtry o nazwach "K1" i "K1A", pierwszy z opcjami jak wyżej a drugi
z opcją "mode='nie mniej" i tą samą opcją "poziom=1".
wówczas filtr przepuści :
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- 7,12,21,32,38,49
- GeSHi © Codebox Plus
ale nie przepuści :
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- 7,12,24,32,38,49
7,12,21,31,38,49 - GeSHi © Codebox Plus
różnica polega na tym że pierwsza kaskada "K1" przepuści zakłady
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- 7,12,21,32,38,49
7,12,24,32,38,49 - GeSHi © Codebox Plus
ale druga kaskada nie przepuści zakładu w którym nie ma końcówki 1.
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- 7,12,24,32,38,49
- GeSHi © Codebox Plus
więc wynikiem filtracji jest TYLKO zakład :
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- 7,12,21,32,38,49
- GeSHi © Codebox Plus
ponieważ spełnia warunki obu filtrów kaskady :
jest nie więcej niż jedna końcówka 1 i jest nie mniej niż jedna końcówka 1.
Kaskadowanie pozwala na bardzo precyzyjne i rozbudowane filtrowanie zakładów.
Ale ich budowa i zestaw powinien być dokładnie przemyślany i logicznie zbudowany.
Aby skutecznie filtrować i korzystać z kaskadowania trzeba tych filtrów
nieraz sporo wprowadzić. Aby usprawnić tę czynność można skorzystać z excela lub z tekstowej listy
liczb wprowadzonej np do pola zakłady.

Taka lista powinna kolejno zawierać :
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
- liczbę porządkową (1,2,3,4,...)
poziom wybierania (ilość liczb) - 0,1,2...
liczby filtra oddzielone znakiem przecinka np : (1,11,21,31,41)
opcjonalnie : mode filtra (0,1,2) co oznacza
0- opcja "nie więcej"
1- opcja "dokładnie"
2- opcja "nie mniej" - GeSHi © Codebox Plus
jeżeli nie wprowadzimy czwartej kolumny domyślnie wybrana będzie opcja 0="nie więcej"
Każda kolumna oddzielona jest znakiem spacji "SPC" lub znakiem tabulacji "TAB"
W excelu po prostu kopiujemy kolumny i wówczas każda kolumna to znak tabulacji.
Z excela wklejamy listę do pola "zakłady".

Teraz z menu wybieramy polecenie SkryptyPHP->SkryptyPHP Edytor

Otwieramy edytor a wnim klikamy na ikonkę Nowy i w nowo otworzonym pliku wklejamy skrypt :
- Code: [Select all] [Expand/Collapse] [Download] (Untitled)
<?php
$IdGame = $GAME_ID; // pobiera identyfikator aktywnej gry
$outsql="";
/* Nastepne trzy linijki usuwaja wszystkie filtry gry, wprowadzone poprzednio ktorych,
nazwa zaczyna sie od slowa excel.... */
$sql="DELETE FROM MHD WHERE AbbName LIKE 'excel%' AND IdGame=$IdGame;";
$outsql .= $sql."\n";
$outsql .= delphi_exec_sql($sql)."\n";
/* Nastepne trzy linijki wyłączają wszystkie inne filtry gry włączone poprzednio.... */
$sql="UPDATE MHD SET OnFilter=false WHERE IdGame=$IdGame;";
$outsql .= $sql."\n";
$outsql .= delphi_exec_sql($sql)."\n";
// pobiera
$sets=delphi_str_memoa();
foreach ($lines as $n=>$line) {
if (!empty($line_arr[0])) { $name ="excel".$line_arr[0];
$level =$line_arr[1];
$liczby =$line_arr[2];
$Onfilter='true';
$longname="filtr "+$name;
if (!empty($line_arr[3])) $mode=$line_arr[3]; else $mode=0; if ($mode<0 OR $mode>2) $mode=0;
$sql="INSERT INTO MHD VALUES ($IdGame,'$name','$longname',$Onfilter,$mode,$level,'$liczby');";
$outsql .= $sql."\n";
$outsql .= delphi_exec_sql($sql)."\n";
}
}
echo $outsql;
?>
- GeSHi © Codebox Plus
Zapisujemy plik skryptu np pod nazwą "insert_mhd_filter.php". Uruchamiamy skrypt poleceniem "RunPHP" lub wciskając klawisz "F9".
Filtry zostaną wprowadzone do bazy filtrów a dodatkowo poprzednie filtry zostaną usunięte
a inne zaznaczone filtry będą wyłączone. Tak że po wprowadzeniu filtrów filtr MHD jest gotowy do użycia.

powodzenia życzę
AK