Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Metoda przedstawiona w artykule jest uruchamiana po kliknięciu odnośnika graficznego (rys. 1.), ma za zadanie opublikować wybrany wiersz na stronie internetowej (rys. 2.). Do prawidłowego działania skryptu wykorzystano tablicę $_GET (Listing 1). Fragment kodu przedstawiony na listingach korzysta z projektu bazy danych, który został opisany w artykule „Przykładowa baza danych prostego systemu CMS”. Połączenie z bazą danych wykonano za pomocą metody statycznej _getConnection(), przedstawionej w artykule „Dostęp do bazy danych MySQL z języka PHP” (Listing 2).

 

Lista sekcji przed uruchomieniem metody publication()

Rys. 1. Lista sekcji przed uruchomieniem metody publication()

 

Lista sekcji po uruchomieniu metody publication()

Rys. 2. Lista sekcji po uruchomieniu metody publication()

 

Mechanizm odpowiedzialny za uruchomienie metody publication() (opublikowanie wybranego wiersza na stronie internetowej) przedstawiono na listingu 1. Do prawidłowego uruchomienia instrukcji warunkowej if potrzebny jest adres url (rys. 1.). Przykładowy adres strony internetowej zawiera klucz główny z bazy danych wybranego wiersza – zapisany w zmiennej GET publication. Klucze główne z bazy danych przedstawiono w ostatniej kolumnie ID. Po wykonaniu metody publication() tabela na stronie internetowej powinna zostać uaktualniona (rys. 2.).

 

Listing 1. Fragment pliku section.php

<?php
/**
* W pliku PHP powinien znajdować się skrypt odpowiedzialny za wyświetlenie
* w tabeli wszystkich sekcji (rys. 1., rys. 2.),
* jak również instrukcja warunkowa if odpowiedzialna za opublikowanie
* wiersza z bazy danych na stronie internetowej.
*/

require_once('class.sectionfactory.php');
...
# Sprawdzamy czy tablica $_GET jest pusta
if (!empty($_GET)) {
// Instrukcja if zostanie wykonana jeśli zmienną publication przekazano do skryptu metodą GET
if (isset($_GET['publication'])) {
// Wykonanie metody statycznej
SectionFactory::publication(addslashes($_GET['publication']));
}
// Inny kod dla zmiennych GET.
// Skrypt odpowiedzialny za usunięcie wybranego wiersza tabeli z publicznie
// dostępnych zasobów na stronie internetowej (rys. 2.)

if (isset($_GET['remove_publication')) {
// Metodę należy napisać samemu
...
}
...
}

// Skrypt odpowiedzialny za umieszczenie pobranych sekcji
// z bazy danych w tabeli
...
?>

 

Listing 2. Fragment klasy SectionFactory (class.sectionfactory.php)

<?php
/**
* Klasa SectionFactory pracuje na tabeli „sekcje” z bazy danych opisanej
* w artykule „Przykładowa baza danych prostego systemu CMS
*/

// Klasę DataManager
// opisano w artykule „Dostęp do bazy danych MySQL z języka PHP

require_once('class.datamanager.php');

class SectionFactory extends DataManager {
...
/**
* Metoda odpowiada za publikację wiersza z bazy danych na stronie internetowej.
* $id – klucz główny z tabeli sekcje
*/

public static function publication($id)
{
$sql = "SELECT data_opublikowania FROM sekcje WHERE id_sekcja='$id'";
$result = mysqli_query(DataManager::_getConnection(), $sql);
if ($result == NULL)
return false;

$sql = "UPDATE sekcje SET data_opublikowania=CURRENT_TIMESTAMP WHERE id_sekcja='$id'";
$result = mysqli_query(DataManager::_getConnection(), $sql);

if ($result)
return true;
else
return false;
}
...
}
?>

 

Dodatkowe zadania:

  1. Zaprojektuj metodę, która będzie usuwała z publicznych zasobów wybrany wiersz w tabeli (rys. 2.)
  2. Co należałoby zmienić w metodzie, aby było możliwe ustawienie daty od kiedy artykuł byłby publikowany, obecnie metoda wprowadza aktualną datę modyfikacji (kliknięcie linka na stronie)

Warto przeczytać również:

Wybrane książki:

Książki Helion