skanuj0495 (2)

skanuj0495 (2)



Rozdział 20. ♦ Forum 513

Zadaniem funkcji showThreads jest wyświetlenie listy wątków. Ponieważ wątków może być wiele, ta lista będzie musiała być podzielona na osobne strony. Dlatego też funkcja otrzymuje dwa argumenty: page i pageSize. Pierwszy z nich określa, która strona listy ma zostać wyświetlona, natomiast drugi, ile tematów ma być zawartych na jednej stronie. Z podobną sytuacją mieliśmy do czynienia w rozdziale 17. i w analogiczny sposób rozwiążemy problem podziału i nawigacji między stronami.

Na początku pobieramy wszystkie artykuły stanowiące tematy główne forum, wraz z nazwami ich autorów. Jest w tym celu wykonywane zapytanie SQL w postaci:

SELECT Users.Nazwa. Artykuły.Id. Artykuły.Data. Artykuły.Temat FROM Artykuły, Users WHERE Users.Id - Artykuły.Autorld AND Artykuły.Id = Artykuły.Parentld ORDER By Data DESC

Dane są sortowane względem daty w porządku malejącym, tak aby najnowszy temat znajdował się zawsze na początku listy. Liczba wierszy zwróconych przez zapytanie, a tym samym całkowita liczba tematów głównych, jest pobierana za pomocą wywołania funkcji nłysq1_num_rows, a wynik jej działania jest przypisywany zmiennej rowsCount. Następnie jest obliczana całkowita liczba stron, na których zmieszczą się wszystkie tematy. Wynika ona ze wzoru:

całkowita liczba wierszy / liczba wierszy na pojedynczej stronie Jest zatem wykonywana operacja:

$rowsCount / SpageSize

a jej wynik, po zaokrągleniu w górę do najbliższej liczby całkowitej, jest przypisywany zmiennej pagesCount.

Funkcja sprawdza również poprawność przekazanych jej danych. Wiadomo bowiem, że zarówno liczba wierszy na stronie, jak i numer strony do wyświetlenia nie mogą być mniejsze od 1. Dodatkowo numer strony nie może być większy od całkowitej liczby stron. Jeśli zatem zostanie stwierdzone, że wartość argumentu pageSize jest mniejsza od 1, jest mu przypisywana wartość 1 (czynność ta jest wykonywana przed opisanymi wyżej obliczeniami). Podobnie jeśli zostanie stwierdzone, że wartość argumentu page jest mniejsza od 1, jest mu przypisywana wartość 1. Jest również sprawdzane, czy wartość zapisana w page jest większa od pagesCount i, jeśli tak, jest temu argumentowi przypisywana wartość pagesCount.

Po sprawdzeniu poprawności danych jest obliczany numer wiersza w tabeli z wynikami zapytania, od którego ma się rozpocząć wyświetlanie wątków. Numer tego wiersza wynika ze wzoru:

(numer strony - 1) * liczba wierszy na stronie Jest więc wykonywane obliczenie:

(Spage - 1) * SpageSize


Wyszukiwarka

Podobne podstrony:
skanuj0491 Rozdział 20. ♦ Forum 509 e1se{ echo("<a h ref- forum.php?acti on-showts&i d=l
skanuj0493 Rozdział 20. ♦ Forum 511 if($page + 1 <- $pagesCount){ $next = Spage + 1: echo("&
skanuj0503 Rozdział 20. ♦ Forum 523 else{ echo("<p al i gn= center ^Nieprawidłowe wywołanie
skanuj0499 Rozdział 20. ♦ Forum 517 Pobrane dane są przetwarzane w pętli whi lei umieszczane w tabel
57388 skanuj0489 Rozdział 20. ♦ Forum 507 Ta jedna tabela wystarczy do realizacji całego forum. Możn
33373 skanuj0505 (2) Rozdział 20. ♦ Forum 525 Jeśli parametr action ma wartość showts, skrypt oczeku
48519 skanuj0501 Rozdział 20. ♦ Forum 521 <td> <textarea name= tresc co1s= 40
66219 skanuj0497 (2) Rozdział 20. ♦ Forum 515 Rysunek 20.1. Przykładowy wygląd głównej strony forum

więcej podobnych podstron