F.A.Q.


  1. F.A.Q.
  2. Wybieranie użytkownika
    1. Przykład wyszukiwania
  3. Wydajność bloków
  4. Złe nazwy prefiksów nadawanych tabelkom w bazie danych
  5. Problem z generowaniem nagłówków w wersji 1.0.1
  6. Stosowanie rozszerzeń plików w łączach
  7. Dzielenie wpisów na strony
  8. Wykonywanie zapytań do bazy danych
  9. Plik z konfiguracją bazy
  10. Formatowanie daty
  11. Tworzenie formularzy
    1. INPUT
    2. TEXTAREA
    3. SELECT
    4. RADIO
    5. CHECKBOX
    6. Dowolna zawartość
    7. Stopka formularza


Wybieranie użytkownika


W wielu miejscach takich jak panel administratora jest potrzeba wpisania nazwy użytkownika w odpowiednie pole formularza. Jeżeli nie jesteś pewien nazwy tego użytkownika lub jej nie pamiętasz pomoże ci w tym małe okienku pop-up które otworzy się po kliknięciu na napis “Szukaj użytkownika”.

W otwartym oknie w polu formularza wpisz nazwe użytkownika lub jej fragment który pamiętasz. Aby zastąpić dowolny ciąg znaków użyj gwiazdki “*”, a następnie kliknij przycisk “Szukaj użytkownika”.

Na stronie na którą zostaniesz przekierowany pojawi się formularz do wyszukiwania ale oprócz tego wynik poprzedniego wyszukiwania w postaci rozwijanej listy. Aby wybrać użytkownika rozwiń tą listę i wybierz jego nazwę, a następnie kliknij przycisk “Wybierz” co spowoduje że jego nazwa zostanie zostanie umieszczona w polu formularza w oknie głównym przeglądarki.

Kiedy wybierzesz użytkownika możesz zamknąć okno klikając łącze “Zamknij okno!”.

Przykład wyszukiwania

Jeżeli szukamy użytkownika którego nazwa zawiera literę “t” to w polu wpisujemy odpowiedni fragment “*t*” który odpowiada takiemu użytkownikowi. W wyniku otrzymieny wszystkich użytkowników w których nazwie wystąpiła przynajmniej jedna litera “t”.

Wydajność bloków


Jeżeli nie stosujesz wersji językowych dla bloków to z głównego pliku templatu możesz wyłączyć fragment odpowiedzialny za włączanie tych plików. Skoro są i tak puste to są niepotrzebne, a ich pominięcie przyspieszy prace systemu. Wybraną wersję językową wklej z pliku języka do pliku tworzącego blok jeżeli zajdzie taka potrzeba.

Plik do edycji
\public_includes\pub_templates\vphptree\template.php

Około linii 617 wewnątrz funkcji PrintBlocks($Side) wytnij fragment

            // Wybierz jezyk
            if($Result[$i]["block_language"] == "All")
            {

                $LanguageFile = $vsDragonRootPath."public_includes/pub_language/".$StatusOfUser =
                $UserSession -> SessionData["SesUserLanguage"]."/block_".$Result[$i]["block_name"].".".$phpExt;
            }
            else
            {
                $LanguageFile = $vsDragonRootPath."public_includes/pub_language/".$Result[$i]["block_language"].
                "/block_".$Result[$i]["block_name"].".".$phpExt;
            }

            if(!include($LanguageFile))
            {
                EchoWarning("INC", "Could not include language of this block",__FILE__,__LINE__,"");
            }

Złe nazwy prefiksów nadawanych tabelkom w bazie danych

Jeżeli twoja baza danych generuje błąd o podobnej do poniższej treści to oznacza że prefix który wybrałeś dla swoich tabelek w bazie nie jest prawidłowy.

Data Base ERROR
Can not exec query – SELECT * FROM pbdcms-config
in [blue-dragon]\includes\main.file.inc.php on line 72
1064
Something is wrong in your syntax obok '- config ' w linii 1


Błąd polega na tym iż baza danych ani tabelka nie może mieć w nazwie znaku myślnika “-”. W systemie więc nie występuje takie rozdzielanie nazw. Jedyną możliwością takiego problemu jest nadany przez ciebie prefix tabelek w bazie danych. Jeżeli chcesz go oddzielić od reszty nazwy tabelek używaj znaku podkreślenia “_”.

Zły prefix: “pbdcms-”

Dobry prefix: “pbdcms_”

Problem z generowaniem nagłówków w wersji 1.0.1

Nie mogę się zalogować na swoje konto w systemie i cały czas wyświetla mi się komunikat podobny do tego poniżej:

Warning: Cannot modify header information - headers already sent by (output started at c:\usr\apache\httpd\html\h_software\config.inc.php:42)

Problem z generowaniem nagłówków w wersji 1.0.1 polegał na umieszczeniu znaku nowej linii na końcu pliku “config.inc.php” poprzez co system nie potrafi umieścić pliku cookie na komputerze użytkownika.

Pojawiający się komunikat o błędzie wygląda mniej więcej tak:

Warning: Cannot modify header information - headers already sent by (output started at c:\usr\apache\httpd\html\h_software\config.inc.php:42)

Problem ten należy rozwiązać poprzez edycje pliku “config.inc.php” i usunięciu zza znacznika zamykającego PHP ( ?> ) na końcu pliku znaku nowej lini. Należy uzytć edytora który wyświetla numery wierszy dzięki czemu będziesz widział czy linia ta nadal pozostaje w pliku. Po usunięciu tej linni problem z przedwczesnym generowaniem nagłówków zniknie.

Stosowanie rozszerzeń plików w łączach

System posiada możliwość pracy za innym rozszerzeniu uznawanym za plik ze skryptem PHP. Rozszerzenie (bez kropki) jest zawarte w zmiennej “$phpExt” i odwołania do plików należy konstruować w sposób:

"modules.".$phpExt

co jest równoznaczne z zapisem

modules.php

Dzielenie wpisów na strony

Skrypt posiada funkcje automatycznie dzielące wpisy na strony i wyświetlający łącza do przechodzenia pomiędzy nimi (łącza pojawiają się jeżeli z podziału wynika że jest więcej niż jedna strona).

Funkcja dzieląca dane na strony:

echo PageSplit(p1,p2,p3,p4);

p1 – url do którego należy przejść. System automatycznie doda zmienne potrzebne do orientowania się która to strona z podziału

p2 – ilość wpisów która ma być pokazywana na jednej stronie

p3 – suma wpisów uzyskanych w wyniku zapytania do bazy

p4 – obecny wpis początkowy od którego należy zacząć wyświetlanie

Przykład podziału

echo PageSplit("modules.{$phpExt}?name=module",$SiteConfig["GuestBookPage"],$Rows,$start)

Wykonywanie zapytań do bazy danych

Warstwa abstrakcji SQL zawiera już przetworzone dane w postaci tablicy indeksowanej liczbami i nie trzeba przetwarzać wyników. Aby wykonać zapytanie do bazy (wykonać pytanie i pobrać jego wyniki) należy użyć konstrukcji:

$sql = "SELECT * FROM ".$DBTablePrefix."guestbook ORDER BY id DESC";

<>if(!$DragonDBKernel -> query($sql))
{
EchoWarning("DE", "Can not exec query",__FILE__,__LINE__,$sql);
}

$Result = $DragonDBKernel -> fetch_array();

$Rows = $DragonDBKernel -> fetch_num_array();

W zmiennej “$Result” jest tablica asosjacyjna z wynikami zapytania, W zmiennej “$Rows” jest ilość otrzymanych rekordów.

Zmienna “$DragonDBKernel” to klasa która jest odpowiedzialna za wykonanie zapytania.

Wywołanie funkcji:

EchoWarning("DE", "Can not exec query",__FILE__,__LINE__,$sql);

to pokazanie błędu jeżeli pytanie nie zostanie wykonane poprawnie.

W zmiennej “$DBTablePrefix” jest zawarty prefix tabelki w bazie danych.

Plik z konfiguracją bazy

Plikiem zawierającym dane potrzebne do konfiguracji jest plik db_config.php z katalogu głównego systemu.

$DragonKernelMode = "MySQL"; // rodzaj sterowników dla bazy danych

$DragonDBHost = "localhost"; // host z bazą

$DragonDBName = "public_1_1_0"; // nazwa bazy

$DragonDBUser = "root"; // login użytkownika do bazy

$DragonDBPassword = ""; // hasło do bazy

$DBTablePrefix = "pbdcms_"; // prefix tabelek w bazie

Formatowanie daty

System tworzy datę na podstawie znacznika czasu i ustala jej wygląd i czas lokalny na podstawie podanej strefy czasowej.

echo GetMyFormatedDate(“p1”,”p2”,”p3”);

p1 – format dany zgodny z funkcją date();

p2 – strefa czasowa w zapise + lub – godzina, np.: +1

p3 – znacznik czasu

Przykład formatowania daty

echo GetMyFormatedDate($SesDateFormat,$SesTimePlace,$Result[$a]["date_in"]);

Tworzenie formularzy

Aby utworzyć formularz należy podać parametry formularza <>
$NewForm->StartForm(

"NAZWA_FORMULARZA",

"METODA_WYSŁANIA",

"ADRES_ZE_SKRYPTEM",

"CZY_FORMULARZ_BĘDZIE_PRZESYŁAŁ_INNE_DANE_NIŻ_TEKST"

);

Następnie deklarujemy pola formularza w tablicy

$FormFields[] = array();

Wywołujemy funkcje tworzącą pola na podstawie przekazanej tablicy

$NewForm->CreateField($FormFields);

Zamykamy tworzenie formularza

$NewForm->StopForm();

Zapewne fragment “Następnie deklarujemy pola formularza w tablicy” nie jest zbyt jasny i nie podałem jego składni. Deklaracja pól polega na stworzeniu tablicy wielowymiarowej. Każdy element to jedno pole a w drugim wymiarze tablicy deklarujemy rodzaj pola i jego właściwości. Pola i ich deklaracja zostały opisana poniżej według typu pól formularzy HTML.

INPUT

$FormFields[] = array(

"INPUT",

"klasa_komórki_napisu",

"napis",

"czy_wymagane",

"klasa_komórki_pola",

"nazwa_pola",

"typ_input (input,button,hidden)",

"wartość_pola",

"szerokość_w_html",

"szerokość_w_px",

"klasa_pola_input"

);

TEXTAREA

$FormFields[] = array(

"TEXTAREA",

"klasa_komórki_napisu",

"napis",

"czy_wymagane",

"klasa_komórki_pola",

"nazwa_pola",

"ilość_znaków (COLS)",

"ilość_wierszy (ROWS)",

"klasa_pola_textarea",

"wartość_pola"

);


SELECT

Deklaracja listy:

$FormFields[] = array(

"SELECT",

"clasa_komórki_napisu",

"napis" ,

"czy_wymagane",

"klasa_komórki_pola",

"nazwa_pola ",

"$tablica_z_option",

"klasa_pola_select"

);

Deklaracja elementu:

$tablica_z_option [] = array(

"wartość_option",

"czy_wybrane(selected)",

"napis_w_option"

);

RADIO

Deklaracja listy:

$FormFields[] = array(

"RADIO",

"klasa_komórki_napisu",

"napis" ,

"czy_wymagane",

"klasa_komórki_pola",

"nazwa_pola",

"$tablica_z_radiolist");

Deklaracja elementu:

$tablica_z_radiolist [] = array(

"nazwa_pola",

"wartość_pola",

"czy_wymagane",

"klasa_pola_radio",

"napis"

);

CHECKBOX

Definicja pola:

$FormFields[] = array(

"CHECKBOX",

"klasa_komórki_napisu",

"napis",

"czy_wymagane",

"klasa_pola",

"nazwa_pola",

"$tablica_z_chckboxlist"

);

Deklaracja elementu listy:

$tablica_z_chckboxlist [] = array(
"nazwa_pola",
"wartość_pola",

"czy_zaznaczone",

"klasa_pola_checkbox",

"napis"

);


Dowolna zawartość

Pole pozwalające na dodanie dowolne zawartości w środku formularza.

$FormFields[] = array(

"MYFIELD",

"klasa_pola",

"napis"

);

Stopka formularza

System automatycznie tworzy stopkę pozwalającą na jego wysłanie i wyczyszczenie.

$FormFields[] = array(

"FOOTFORM",

"klasa_komórki_napisu",

"napis_na_przycisku_reset",

"napis_na_przycisku_submit",

"klasa_przycisku_reset",

"klasa_przycisku_submit"

);