Vodič je stariji od 2 godine i možda nije u potpunosti aktualan. Za provjeru, koristite “pitaj učitelja”.

Kako napraviti PHP Blog 3.dio – Prikazivanje postova

Kako napraviti PHP Blog 3.dio – Prikazivanje postova
Autor članka: Igor Benić
Kategorije: Programiranje
Datum objave: 14.04.2014

U prošlim tutorijalima unijeli smo 2 ili 3 posta odnosno članaka. Ovaj tutorijal pokazati će vam kako koristiti ActiveRecord iz prethodnog tutorijala te pomoću njega prikazati naše članke.

Pogledaj sve tutorijale iz ovog serijala:
Kako napraviti PHP Blog – 1.dio
Kako napraviti PHP Blog – 2.dio
Kako napraviti PHP Blog – 3.dio

Struktura našeg bloga

Struktura bloga biti će sljedeća:

  1. ActiveRecord folder gdje će se nalaziti sve datoteke potrebne za funkcioniranje activerecord-a
  2. index.php koji će prikazivati naše članke
  3. config.php koji će sadržavati sve potrebno za konekciju
  4. blog.php će sadržavati klasu našeg blog-a

ActiveRecord folder možete pronaći u prošlom tutorijalu odnosno možete koristiti isti taj folder. Sada bi vaša struktura bloga, koju spremamo u xampp/htdocs/blog/, trebala izgledati ovako otprilike kao na sljedećoj slici.

Struktura bloga

Struktura bloga

Konfiguracija

Prvo što je potrebno napraviti jeste spojiti se na bazu. To ćemo napraviti putem naše datoteke config.php.

<?php
require_once dirname(__FILE__) . '/activeRecord/ActiveRecord.php';

$connections = array(
    'development' => 'mysql://root:@localhost/blog',
    'production' => 'mysql://root: @localhost/blog'
);

// initialize ActiveRecord
ActiveRecord\Config::initialize(function($cfg) use ($connections)
{
    $cfg->set_model_directory('.');
    $cfg->set_connections($connections);
});

?>

Sve što ova datoteka sadrži jeste spajanje na bazu podataka. U prošlom tutorijalu smo naučili što koji dio znači, ali u slučaju da niste pogledali prošli tutorijal evo vam kratke upute:

  1. Pozivamo datoteku koja sadrži sve informacije vezane uz activeRecord i koja nam daje pristup svim klasama, varijablama i sl.
  2. Određujemo varijablu koju ćemo koristiti za spajanje na server, u njoj su dvije konfiguracije koje sadrže iste informacije, koje bi u stvarnom primjeru bile drugačije. Te informacije jesu driver odnosno vrsta baze podataka (mysql), username kojim se spajamo, lozinka koja je u ovom primjeru prazna (kod vas možda nije, ona se nalazi između znaka :@), zatim server na koji se spajamo te baza podataka koju koristimo.
  3. Nakon toga vrši se spajanje na server odnosno bazu podataka

Klasa Blog

Klasa Blog koristiti će nam za spajanje na samu bazu i dohvaćanje potrebnih podataka. Nju ćemo definirati u datoteci blog.php. Sadržaj te datoteke je sljedeći:

<?php 
require_once("config.php");

class Blog extends ActiveRecord\Model
{
    // explicit table name since our table is not "books"
    static $table_name = 'posts';

    // explicit pk since our pk is not "id"
    static $primary_key = 'id';

    // explicit connection name since we always want production with this model
    static $connection = 'development';

    // explicit database name will generate sql like so => db.table_name
    static $db = 'blog';
}

?>

Što se sada ovdje događa? Ukratko ovo:

  1. Pozivamo našu datoteku config.php koja sadrži sve potrebne informacije za korištenje activerecord-a te baze podataka
  2. definiramo klasu Blog
  3. definiramo statične varijable koje služi za upućivanje activeRecord-a koju bazu i tablicu da koristi te koju vrstu konekcije. Uz to još smo definirali i primarni ključ tako da kod nekih funkcija, sam activeRecord može znati što je naš primarni ključ i prema čemu da se ravna

Prikaz članaka

Članke ćemo prikazati koristeći datoteku index.php. Potrebno je upotrijebiti klasu koju smo upravo napravili tako da u nju spremimo sve članke te zatim ih i ispišemo. Prvo pogledajmo cijeli sadržaj datoteke pa ćemo je polako objasniti u koracima.

<?php 

require_once("blog.php");

$posts = Blog::all();

 ?>
<!DOCTYPE HTML>
<html>
    <head>
        <title>Učionica Blog</title>
    </head>
    <body>
        <?php 

            foreach ($posts as $post) {
                ?>
                <article>
                    <header>
                        <h1><?php echo $post->naslov; ?></h1>
                    </header>
                    <p><?php echo $post->sazetak; ?></p>
                </article>

                <?php
            }

         ?>
    </body>
</html>

Sada kada ste vidjeli cjelokupni kod, pretpostavljam da ako ne sve, razumijete barem nešto. Kako bi svi mogli pratiti kako treba u sljedećim natuknicama objasniti ću ukratko što se ovdje događa:

  1. zovemo datoteku blog.php koja ima definiciju naše klase koja se spaja na našu bazu podataka
  2. definiramo varijablu $posts i zatim joj dajemo sve članke iz naše tablice tako da sa klasom Blog zovemo statičnu funkciju all() koja uzima sve podatke iz te tablice
  3. u običnoj html strukturi, u elementu body pravimo dodatne php naredbe
  4. naredba foreach nam kaže: za svaki zapis u $posts, gledaj zasebno i nazovi ga $post (time možemo pristupiti svakom članku zasebno)
  5. za svaki zapis odnosno članak ispiši par HTML5 elemenata te naslov i sažetak članka. Primjetite ovdje da koristimo nazive naših polja u tablici kako bi pristupili njihovim vrijednostima.

Sada kada odemo na adresu localhost/blog/ (ukoliko ste Mac korisnik to će ići malo drugačije npr. Users/tvoj_username/folder_gdje_spremaš_projekte/blog/), trebalo bi to izgledati približno ovako:

Prikaz članaka

Prikaz članaka

Zaključak

Koristeći activeRecord i malo organizacije projekta, napravili smo jednostavnu strukturu koju može svatko pratiti i koristiti. Sada kada smo uspjeli ispisati članke, potrebno je napraviti i ispis svakog pojedinog članka. To će nas čekati u sljedećem tutorijalu gdje ćemo naučiti kako ispisati svaki članak posebno.

Nadamo se da vam je ovaj vodič pomogao. Ako imate pitanja slobodno se obratite preko komentara ili rubrike pitaj učitelja.

Komentirajte prvi!

Pratite komentare na članak 'Kako napraviti PHP Blog 3.dio – Prikazivanje postova' putem RSS feeda.

Ostavite komentar na ovaj članak

Uvredljivi i spam komentari biti će obrisani. Ukoliko se Vaš komentar ne pojavi odmah, pričekajte da ga odobrimo ;-). Odgovore na pitanje brže ćete dobiti ukoliko nas kontaktirate putem forme pitajte učitelja.