04. Datu bāze

Bloga ierakstus nepieciešamas attēlot no datu bāzes, tāpēc to nepieciešams uztaisīt, kā arī atgūt kādreizējo kodu, kas ļāva izveidot savienojumu ar datu bāzi!

Datu bāzes izveide

  1. Izveido datu bāzi blogpp
  2. Izveido tabulu posts, kurai ir kolonnas:
    • id - unikāls identifikators, kurš automātiski palielinās un nevar būt nulle,
    • content - bloga tekstuāls saturs līdz 1000 rakstzīmēm, nevar būt nulle
  3. Tā kā sākam ar datu attēlošanu, ievieto 3 datu ierakstus

Datu bāzes klase

  1. Projektā izveido datni Database.php
  2. Datnē ievieto saturu:
    
    <?php
    
    class Database {
        private $config = [
                "host" => "localhost",
                "port" => 3306,
                "dbname" => "blogpp",
                "charset" => "utf8mb4",
                "user" => "root",
                "password" => ""
        ];
    
        private $pdo;
    
        // Konstruktors - pieslēdzas datu bāzei
        public function __construct() {
            $dsn = "mysql:" . http_build_query($this->config, "", ";");
            $this->pdo = new PDO($dsn);
            $this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        }
    
        // Metode, kas izpilda vaicājumus
        public function query($sql, $params = []) {
    
            // 1. Sagatavot vaicājumu
            $statement = $this->pdo->prepare($sql);
            // 2. Izpildīt vaicājumu
            $statement->execute($params);
            return $statement;
        }
    }        
                  
  3. Atceries, ko katra rindiņa darīja

Jāatzīst, ka šeit citādi nekā mācījāmies tiek iegūta datu bāzes konfigurācijas informācija - tā tiek glabāta lokālā klases īpašībā $config. Šis noteikti nav labs veids, bet tika izvēlēts, lai atvieglotu tālāku klases izmantošanu.

Bloga ierakstu iegūšana

  1. Dodies uz BlogController klasi
  2. 2. rindiņā pieprasi, importē datni Database.php
  3. Metodē index izveido datu bāzes klases instanti un iegūsti no tās bloga ierakstus:
    
    $db = new Database();
    $posts = $db->query("SELECT * FROM posts")->fetchAll();
                   
  4. Ievieto var_dump($posts); un interneta pārlūkprogrammā pārliecinies, ka bloga ieraksti tiek iegūti
  5. Patstāvīgi papildini views/blog/index.view.php, lai, izmantojot nenumurētu sarakstu, bloga ieraksti tiktu attēloti
  6. Tad izdzēs var_dump($posts);