Rozdział 17. ♦ System news 461
Jest to zatem wstawienie nowego wiersza do tabeli News, w którym identyfikator zostanie wygenerowany automatycznie, identyfikator użytkownika będzie równy wartości odczytanej z $_SESSION[UserId], nagłówek zostanie pobrany ze zmiennej header, treść pobrana ze zmiennej contents, natomiast data —wygenerowana przez wywołanie funkcji NOW. W przypadku gdyby zapytanie nie mogło być wykonane, funkcja addMessage zwraca wartość fal se, natomiast w przypadku gdy zostało wykonane, funkcja zwraca liczbę wierszy, na które miało ono wpływ.
Funkcja del eteMessage ma za zadanie usunąć z bazy wiadomość o identyfikatorze przekazanym w postaci argumentu news Id. Jej kod jest zatem równie prosty jak kod przedstawionej już funkcji modi fyMessage. Jest tu wykonywane zapytanie SQL w postaci: DELETE FROM News WHERE Id=$newsld AND UserId-$_SESSION[UserId]
Jeśli jego wykonanie zakończy się sukcesem, funkcja zwraca liczbę rekordów, na które miało ono wpływ, natomiast w przeciwnym przypadku — wartość fal se. Należy zwrócić uwagę, że zapytanie to ma dwa warunki; pierwszy określa identyfikator wiadomości do usunięcia, natomiast drugi uniemożliwia usuwanie wiadomości innych użytkowników. A zatem załogowany użytkownik będzie mógł usuwać jedynie wiadomości wprowadzone przez siebie wcześniej do systemu.
Ostatnią funkcją zapisaną w pliku newsJunctions.php jest showAlIMessages. Jej zadaniem jest umożliwienie przeglądania wszystkich wiadomości zapisanych w systemie. Kod byłby nader prosty, gdyby wszystkie wiadomości można było naraz wyświetlić na witrynie. Niestety, ponieważ może być ich bardzo dużo, nie możemy postąpić w ten sposób. Strona musi być więc wyposażona w możliwości nawigacyjne (rysunek 17.4). W związku z tym funkcja showAl!News przyjmuje dwa argumenty: page i pageSize. Pierwszy z nich określa numer strony z wiadomościami, która ma zostać wyświetlona, a drugi liczbę wiadomości na pojedynczej stronie. Przykładowo, jeśli w systemie jest zapisanych 20 wiadomości, a na pojedynczej stronie chcemy wyświetlać nie więcej niż 3, to całkowita liczba stron wynosi 7 (20 / 3 zaokrąglone w górę do najbliższej liczby całkowitej).
Dane są pobierane z bazy za pomocą zapytania SQL w postaci:
SELECT News.Id. Nagłówek, Tresc, Data. Nazwa
FROM News, Users
WHERE Users.Id = News.Userld
ORDER BY Data DESC
Są tu złączane tabele News i Users, tak aby w wynikach zapytania figurowały nazwy użytkowników, którzy wprowadzili poszczególne wiadomości do systemu. To zapytanie pobiera wszystkie wiadomości z systemu. Następnie jest wywoływana funkcja mysql_nuni_rows, która pobiera liczbę wierszy będących wynikiem zapytania, a wynik jej działania jest przypisywany zmiennej rowsCount. Mając tę daną możemy w prosty sposób wyliczyć, na ile stron należy podzielić wynik zapytania. Wystarczy wykonać działanie: całkowita liczba wiadomości / liczba wiadomości na stronie czyli:
trowsCount / JpageSi;