PHP projekti: Napravite aplikaciju za ispitivanje mišljenja
U ovom PHP projektu, napravit ćemo aplikaciju za ispitivanje javnog mnijenja.
Anketa će se sastojati od 3 glavne komponente;
Prednji upravljač – ovo je indeksna stranica koja će odrediti koji HTML kod treba učitati. Ovo će osigurati da naša aplikacija ima jednu ulaznu točku. To će nam dati veću kontrolu nad aplikacijom.
Poslovna logika – ovo će sadržavati PHP kod za interakciju s bazom podataka. To će nam omogućiti da odvojimo poslovnu logiku od prezentacije čineći našu aplikaciju jednostavnom za održavanje
Posjeta – ovo će sadržavati HTML kod. Imat ćemo dvije stranice naime;
- opinion.html.php – ovo će sadržavati HTML kod s pitanjem i opcijama
- results.html.php – ovo će sadržavati HTML kod koji prikazuje rezultate ankete
Pretpostavke napravljene
Anketa će postaviti pitanje –
Koji je tvoj omiljeni JavaScript Knjižnica?
Odgovori bi bili
- JQuery
- Mootools
- YUI knjižnica
- Sjaj
Evo koraka za izradu aplikacije –
Korak 1) Povezivanje baze podataka
Ovaj dio pretpostavlja poznavanje MySQL i kako ga primijeniti, ako niste upoznati s tim MySQL, provjerite naše SQL tutoriali odjeljak.
Naša aplikacija će imati samo jednu tablicu sa 3 polja, naime;
- id – automatski generiraj broj kao primarni ključ
- izbor – broj koji predstavlja predsjedničkog kandidata
- ts – vremenska oznaka za glasovanje
Skripta ispod stvara našu tablicu js_libraries.
<?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`) ); ?>
Korak 2) Kodiranje naše aplikacije
Kreirajmo sada naš sloj poslovne logike koji će upravljati povezivanjem baze podataka. '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); } } ?>
OVDJE,
- “javna funkcija __construct()” je metoda konstruktora klase koja se koristi za uspostavljanje veze s bazom podataka
- “javna funkcija execute_query(…)” je metoda za izvršavanje upita kao što su umetanje, ažuriranje i brisanje
- “javna funkcija odabira” je metoda za dohvaćanje podataka iz baza podataka i vraćanje numeričkog niza.
- “javna funkcija insert(…)” je metoda umetanja koja poziva metodu execute_query.
- “javna funkcija __destruct()” je destruktor klase koji zatvara vezu s bazom podataka.
Kreirajmo sada prednji kontroler 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'; ?>
OVDJE,
- “zahtijevaj 'opinion_poll_model.php';” učitava klasu poslovne logike
- “$model = novi Opinion_poll_model();” stvara instancu klase poslovne logike
- “if (count($_POST) == 1)…” izvodi provjeru valjanosti podataka i koristi JavaSkripta za prikaz okvira s porukom ako se nije glasalo za kandidata.
- “if (count($_POST) > 1)…” provjerava je li glas odabran prebrojavanjem broja stavki u nizu $_POST. Ako nijedna stavka nije odabrana, $_POST će sadržavati samo stavku za slanje. Ako je kandidat odabran, niz $_POST će imati dva elementa, stavku podnošenja i glasanja. Ovaj se kod također koristi za umetanje novog glasačkog zapisa i zatim za prikaz stranice s rezultatima
- "Izlaz;" koristi se za prekid izvršavanja skripte nakon što su rezultati prikazani tako da se obrazac za anketu ne prikazuje.
- “zahtijevaj 'opinion.html.php';” prikazuje obrazac za anketu ako ništa nije odabrano.
Kreirajmo sada poglede. mišljenje.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>
rezultati.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>
Korak 3) Testiranje naše aplikacije
Pod pretpostavkom da ste spremili datoteke u mapu za ispitivanje mišljenja, potražite URL http://localhost/opinionpoll/
Ako kliknete na gumb U redu bez odabira JS biblioteke, dobit ćete sljedeći okvir s porukom.
Odaberite JS biblioteku, a zatim kliknite gumb U redu. Dobit ćete stranicu s rezultatima sličnu onoj prikazanoj u nastavku.
rezime
- Dijeljenje vaše aplikacije na poslovnu logiku, slojeve prikaza prednjeg kontrolera dobra je praksa dizajna aplikacije
- JavaSkripta je korisna za izvođenje provjere valjanosti na strani klijenta
- Dobra je programska praksa koristiti file.html.php za datoteke koje sadrže i HTML i PHP kodovi
- Aplikacija za ispitivanje javnog mnijenja pokazuje kako se znanje stečeno u prethodnim lekcijama može spojiti u razvoj radne aplikacije sa pozadinskom bazom podataka.