PHP-projektit: Luo mielipidekyselysovellus
Tässä PHP-projektissa, aiomme luoda mielipidekyselysovelluksen.
Mielipidekysely koostuu kolmesta pääkomponentista;
Etuohjain – Tämä on hakemistosivu, joka määrittää ladattavan HTML-koodin. Tämä varmistaa, että sovelluksellamme on yksi sisääntulopiste. Tämä antaa meille enemmän hallintaa sovelluksessa.
Liiketoiminnan logiikka – Tämä sisältää PHP-koodin tietokannan kanssa vuorovaikutusta varten. Näin voimme erottaa liiketoimintalogiikan esityksestä, mikä tekee sovelluksemme ylläpidosta helppoa
Näyttökerrat – Tämä sisältää HTML-koodin. Meillä on nimittäin kaksi sivua;
- mielipide.html.php – tämä sisältää HTML-koodin, jossa on kysymys ja vaihtoehtoja
- results.html.php – tämä sisältää HTML-koodin, joka näyttää mielipidekyselyn tulokset
Tehty oletuksia
Mielipidekyselyssä kysytään -
Mikä on suosikkisi JavaKäsikirjoitus Kirjasto?
Vastaukset olisivat
- JQuery
- MooTools
- YUI-kirjasto
- Hehku
Tässä on vaiheet sovelluksen luomiseen -
Vaihe 1) Tietokantayhteys
Tämä osio edellyttää tietämystä MySQL ja miten sitä annetaan, jos et ole perehtynyt näihin MySQL, tarkista meidän SQL opetusohjelmat osiossa.
Sovelluksessamme on vain yksi taulukko, jossa on 3 kenttää;
- id – luo numero automaattisesti ensisijaiseksi avaimeksi
- valinta – presidenttiehdokasta edustava numero
- ts – äänestyksen aikaleima
Alla oleva komentosarja luo js_libraries-taulukon.
<?php CREATE TABLE `js_libraries` ( `id` int(11) NOT NULL AUTO_INCREMENT, `choice` tinyint(4) NOT NULL DEFAULT '0', `ts` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ); ?>
Vaihe 2) Koodaa sovelluksemme
Luodaan nyt liiketoimintalogiikkakerros, joka hoitaa tietokantayhteyden. 'opinion_poll_model.php'
<?php class Opinion_poll_model { private $db_handle; private $host = 'localhost'; private $db = 'opinion_poll';private $uid = 'root'; private $pwd = 'melody'; public function __construct() { $this->db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL server if (!$this->db_handle) die("Unable to connect to MySQL: " . mysqli_error()); if (!mysqli_select_db($this->db_handle,$this->db)) die("Unable to select database: " . mysqli_error()); } private function execute_query($sql_stmt) { $result = mysqli_query($db_handle,$sql_stmt); //execute SQL statement return !$result ? FALSE : TRUE; } public function select($sql_stmt) { $result = mysqli_query($db_handle,$sql_stmt); if (!$result) die("Database access failed: " . mysqli_error()); $rows = mysqli_num_rows($result); $data = array(); if ($rows) { while ($row = mysqli_fetch_array($result)) { $data = $row; } } return $data; } public function insert($sql_stmt) { return $this->execute_query($sql_stmt); } public function __destruct(){ mysqli_close($this->db_handle); } } ?>
TÄSSÄ,
- "julkinen funktio __construct()" on luokan rakentajamenetelmä, jota käytetään tietokantayhteyden muodostamiseen
- "julkinen toiminto execute_query(…)" on tapa suorittaa kyselyitä, kuten lisää, päivitä ja poista
- "julkisen toiminnon valinta" on menetelmä tietojen hakemiseen tietokanta ja palauttaa numeerisen taulukon.
- "public function insert(…)" on lisäysmenetelmä, joka kutsuu execute_query-menetelmää.
- "julkinen funktio __destruct()" on luokan tuhoaja, joka sulkee tietokantayhteyden.
Luodaan nyt etuohjain index.php
<?php require 'opinion_poll_model.php'; $model = new Opinion_poll_model(); if (count($_POST) == 1) { echo "<script>alert('You did not vote!');</script>"; } if (count($_POST) > 1) { $ts = date("Y-m-d H:i:s"); $option = $_POST['vote'][0]; $sql_stmt = "INSERT INTO js_libraries (`choice`,`ts`) VALUES ($option,'$ts')"; $model->insert($sql_stmt); $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries;"; $choices_count = $model->select($sql_stmt); $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model->select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } require 'results.html.php'; exit; } require 'opinion.html.php'; ?>
TÄSSÄ,
- "require 'opinion_poll_model.php';" lataa bisneslogiikkaluokan
- "$malli = new Opinion_poll_model();" luo bisneslogiikkaluokan esiintymän
- "if (count($_POST) == 1)…" suorittaa tietojen validoinnin ja käyttää JavaKäsikirjoitus näyttää viestiruutu, jos ehdokasta ei ole äänestetty.
- “if (count($_POST) > 1)…” tarkistaa, onko ääni valittu laskemalla $_POST-taulukon kohteiden lukumäärän. Jos yhtään kohdetta ei ole valittu, $_POST sisältää vain lähetettävän kohteen. Jos ehdokas on valittu, $_POST-taulukossa on kaksi elementtiä, lähetys- ja äänestyskohde. Tätä koodia käytetään myös uuden äänestystietueen lisäämiseen ja tulossivun näyttämiseen
- "poistu"; käytetään lopettamaan komentosarjan suorittaminen tulosten näyttämisen jälkeen, jolloin mielipidekyselylomaketta ei näytetä.
- "require 'opinion.html.php';" näyttää mielipidekyselylomakkeen, jos mitään ei ole valittu.
Luodaan nyt näkymät. mielipide.html.php
<html> <head> <title>JavaScript Libraries - Opinion Poll</title> </head> <body> <h2>JavaScript Libraries - Opinion Poll</h2> <p><b>What is your favorite JavaScript?</b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" />JQuery <br /><input type="radio" name="vote" value="2" />MooToolsl <br /><input type="radio" name="vote" value="3" />YUI Library <br /><input type="radio" name="vote" value="4" />Glow </p> <p><input type="submit" name="submitbutton" value="OK" /></p> </form> </body> </html>
tulokset.html.php
<html> <head> <title>JavaScript Libraries Poll Results</title> </head> <body> <h2>Opinion Poll Results</h2> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $choices_count[0]; ?></b> people have thus far taken part in this poll:</p> <p> <table> <?php echo($table_rows); ?> </table> </body> </html>
Vaihe 3) Testaa sovellustamme
Jos olet tallentanut tiedostot mielipidekyselykansioon, siirry URL-osoitteeseen http://localhost/opinionpoll/
Jos napsautat Ok-painiketta valitsematta JS-kirjastoa, saat seuraavan viestiruudun.
Valitse JS-kirjasto ja napsauta sitten OK-painiketta. Saat alla olevan kaltaisen tulossivun.
Yhteenveto
- Sovelluksesi jakaminen liiketoimintalogiikkaan, etuohjaimen näkymäkerroksiin on hyvä sovellussuunnittelukäytäntö
- JavaKomentosarja on hyödyllinen asiakaspuolen validoinnin suorittamisessa
- On hyvä ohjelmointikäytäntö käyttää file.html.php:tä tiedostoille, jotka sisältävät sekä HTML- että PHP koodit
- Mielipidekyselysovellus osoittaa, kuinka edellisillä tunneilla opittua tietoa voidaan yhdistää toimivan sovelluksen kehittämiseksi tietokantapohjaisella taustalla.