Lekcja 5 – MVC – Opis tabel pobieranie danych z bazy

Kategoria: Kurs pisania komponentów dla Joomla 1.5 [MVC] Utworzono: niedziela, 13, lipiec 2008 Opublikowano: niedziela, 13, lipiec 2008 Wojciech Romanek Drukuj E-mail

Po długiej przerwie nareszcie znalazłem czas na napisanie kolejnego artykułu z serii tworzenia komponentów dla Joomla 1.5. Dziś zajmiemy się obsługą baz danych, która w przypadku api Joomla jest bardzo prosta. Na dobry początek utwórzmy jakąś tabelę w bazie danych joomla. Np. tabelę z numerami telefonów. Nasza tabela będzie zawierać pola: id, nazwisko, imie, nr_tel. Tabelę nazwijmy jos_telefony (jos - przedrostek jaki używa w bazie joomla). Tabelę możemy utworzyć używając np. phpMyAdmina. Tak swoją drogą... nie przerażaj się że na razie wiele rzeczy robimy ręcznie, odpowiednie tabele tworzy się przy instalacji komponentu co będzie opisane później, na razie skupmy się na pobieraniu danych z bazy. Kiedy mamy gotową tabelę warto dodać kilka przykładowych wpisów. Jak dodawać wpisy w phpMyAdmin myślę, że nie muszę opisywać (jeśli ktoś programuje to nie wyobrażam sobie żeby nie potrafił klikać myszką).

Kiedy nasza tabela jest gotowa zabieramy się za nasz kod. Aby obsługiwać bazę danych w Joomla najprostszym sposobem musimy utworzyć plik z opisem tabeli. Wszystkie pliki opisu tabeli zamieszczać będziemy w katalogu tables naszego komponentu. Teraz postępujemy tak jak wcześniej jeśli chcemy aby któryś opis był domyślnym dla któregoś z modelów to plik nazywamy tak samo jak model. Zrobimy opis domyślny dla naszego poprzedniego przykładu. W katalogu naszego komponentu tworzymy katalog 'tables' a w nim plik o nazwie witaj.php. W jego treść wpisujemy:

<?php
defined('_JEXEC') or die('Restricted access');
 
class TableWitaj extends JTable
{
    var $id = null;
    var $nazwisko = null;
    var $imie = null;
    var $nr_tel = null;
 
    function __construct(&$db)
    {
        parent::__construct( '#__telefony', 'id', $db);
    }
}
?>

Jak widać na początku zabezpieczenie przed dostępem bezpośrednim a następnie klasa. Nazwę klasy definiujemy w ten sposób: TableNazwaplikuopisubazy (nazwa modelu). Wewnątrz klasy definiujemy pola naszej tabeli następnie konstruktor który praktycznie zawsze wygląda tak samo. Pierwszy parametr to nazwa tabeli '#__telefony' w ten sposób odwołujemy się do tabeli aby nasz komponent działał na każdej instalacji joomla. Jeśli ktoś np. w bazie danych ma przedrostek jom_ to joomla automatycznie w ten sposób będzie tłumaczyć #__ - to jest po prostu zamieniane na przedrostek bazy danych.

Teraz kiedy mamy gotową bazę oraz gotowy opis tabeli możemy napisać funkcję w modelu która będzie pobierać nam wpisy. Funkcja będzie wyglądać tak:

function getTelefony()
    {
        $query = "SELECT * FROM #__telefony";
        $dane = $this->_getList($query);
       
        return $dane;
    }

Jeśli chcemy sprawdzić czy funkcja działa dobrze obsługujemy ją tak samo jak w poprzedniej lekcji czyli w widoku wpisujemy:

$telefony = $model->getTelefony();
$this->assignRef( 'telefony', $telefony );

a w szablonie wykorzystujemy zmienną $this->telefony.

Taka moja rada... jeśli nie jesteś pewien w jaki sposób się odwoływać do zmiennych w szablonie bo np. przekazałeś do szablonu tablicę najlepiej jest na początku na chwile wyświetlić sobie strukturę zmiennej poprzez print_r($nazwa_zmiennej). np.:

print_r($this);

lub

print_r($this->telefony);

To by było na tyle w tym artykule zapisywanie informacji w bazie danych opiszę w kolejnym artykule! Jeśli jesteś zainteresowany kontynuacją tej serii artykułów weź udział w sondzie!

p.s. Nie przejmuj się jeśli w tekstach odczytywanych z bazy danych będziesz miał krzaczki. Kiedy dane będą wprowadzane poprzez Joomla wszystko będzie ok;)

Odsłony: 17473