MVC-malli
MVC-malli (Model - View - Controller) on tapa jäsentää sovellus eri osiin tarkoituksensa mukaisiin osiin. Kun sovelluksen koko kasvaa muuttuu tarve ohjelman hallinnalle ja ylläpidolle. Koodi pitää jäsentää selkeästi jotta sitä on yksinkertaisempi lukea ja ymmärtää. Ohjelmistoarkkitehtuurissa erotetaan kolme osaa:
- Model: tiedon käsittely (malli, tietokanta)
- View: käyttöliittymä (näkymä)
- Controller: edellisten linkitys ohjaimella joka käsittelee käyttöliittymältä tulleet komennot ja hakee tiedot tietokannasta.
Linkkejä
news 2021
Käytetään pohjana tälle demolle otredun news_2021-pohjaa. Kloonaa repo itsellesi oman reposi sisälle.
Tietokanta
Tee samariumille database_dump-kansiosta löytyvän tietokannan mukaiset taulut. Päivitä database / connection.php funktioon connect() oikeat tunnukset.
Testaaminen
Siirry terminal-kehotteessa public-kansioon, käynnistä täällä php
php -S localhost:8888
Kokeile sovelluksen käyttämistä
- luo uusi käyttäjä rekisteröitymällä
- tarkista tietokannasta menikö käyttäjä tauluun users
- kirjaudu järjestelmään
- kirjoita uusi uutinen, varmista että uutinen tallennettu tietokantaan ja että uutisen userid oikein.
- testaa uutisen muokkaamista ja poistamista
Muutokset
1. Käyttäjän syntymäpäivä
- Lisää tietokantaan user-tauluun uusi date-tyyppinen kenttä birthday
- Lisää register.view-tiedostoon uusi date-kenttä, nimeä birthday.
- Lisää users.php:n addUser-funktioon mukaan birthday parametriksi, data-taulukkoon sekä SQL-lauseeseen.
- Lisää birthday mukaan userManagement.php:n registerController()-funktioon.
2. Uutisen osasto
- Lisää article-taululle uusi kenttä section (varchar 50)
- Lisää newArticle.view.php:ssa kovakoodattu select-ohjain uutisosaston valinnalle.
- Lisää uusi muuttuja $section mukaan article.php:n addArticle-funktiolle.
- Lisää articleManagement.php:ssa addArticleController()-funktiolle uusi kenttäsi.
3. Artikkelien hakeminen osaston mukaan
- Kopioi select-ohjaimesi articles.view.php:lle. Lisää submit-painike sekä näiden ympärille form.
- Muutetaan articleManagement.php:ssa viewArticlesController()-funktiota
function viewArticlesController(){ $allnews = null; if (isset($_POST['section'])) { $section = cleanUpInput($_POST['section']); $allnews = getSectionArticles($section); } else { $allnews = getAllArticles(); } require "views/articles.view.php"; } -
Lisätään article.php:lle funktio getSectionArticles:
function getSectionArticles($section){ $pdo =connectDB(); $sql = "SELECT * FROM articles WHERE section = ?"; $stm=$pdo->prepare($sql); $stm->execute(array($section)); $all = $stm->fetchAll(PDO::FETCH_ASSOC); return $all; }
4. Ulkoasu
- Kokeile muuttaa ylä- ja alatunnisteen tekstit.
- Muuta hieman CSS-tyylitiedostoa haluamallasi tavalla. Voit käyttää myös Google Fonts-fontteja