I dette PHP-projekt skal vi oprette en meningsmåling-applikation.
Meningsmåling vil bestå af 3 hovedkomponenter;
Frontcontroller - dette er den indeksside, der bestemmer den HTML-kode, der skal indlæses. Dette vil sikre, at vores ansøgning har et enkelt indgangspunkt. Dette giver os mere kontrol over applikationen.
Forretningslogik - denne indeholder PHP-koden til interaktion med databasen. Dette giver os mulighed for at adskille forretningslogikken fra præsentationen, hvilket gør vores applikation let at vedligeholde
Visninger - dette vil indeholde HTML-koden. Vi har to sider, nemlig;
- opinion.html.php - dette indeholder HTML-koden med spørgsmålet og mulighederne
- results.html.php - dette indeholder HTML-koden, der viser meningsmålingens resultater
Antagelser
Meningsmåling vil stille spørgsmålet -
Hvad er dit foretrukne JavaScript-bibliotek?
Svar ville være
- JQuery
- MooTools
- YUI-bibliotek
- Glød
Her er trinene til oprettelse af applikationen -
Trin 1) Databaseforbindelse
Dette afsnit antager kendskab til MySQL, og hvordan man administrerer det, hvis du ikke er fortrolig med disse MySQL, skal du tjekke vores SQL-tutorials-sektion.
Vores ansøgning vil kun have en tabel med 3 felter, nemlig;
- id - generer automatisk nummer som den primære nøgle
- valg - antallet, der repræsenterer en præsidentkandidat
- ts - tidsstemplet for afstemningen
Nedenstående script opretter vores js_libraries-tabel.
Trin 2) Kodning af vores ansøgning
Lad os nu oprette vores forretningslogiklag, der håndterer databaseforbindelsen. 'opinion_poll_model.php'
db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL serverif (!$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 statementreturn !$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);}}?>
HER,
- “Public function __construct ()” er klassekonstruktormetoden, der bruges til at etablere databaseforbindelsen
- “Public function execute_query (…)” er metoden til udførelse af forespørgsler såsom indsættelse, opdatering og sletning
- “Offentlig funktionsvalg” er metoden til at hente data fra databasen og returnere et numerisk array.
- “Public function insert (…)” er den insert-metode, der kalder metoden execute_query.
- “Offentlig funktion __destruct ()” er den klasse destruktor, der lukker databaseforbindelsen.
Lad os nu oprette den forreste controller index.php
alert('You did not vote!');";}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 .= "";}require 'results.html.php';exit;}require 'opinion.html.php';?> " . $ libraries [$i] . " Got: " . $result[0] . " votes
HER,
- “Kræve 'opinion_poll_model.php';” indlæser klassen for forretningslogik
- “$ Model = ny Opinion_poll_model ();” opretter en forekomst af virksomhedslogikklassen
- “If (count ($ _ POST) == 1) ...” udfører datavalidering og bruger JavaScript til at vise et meddelelsesfelt, hvis der ikke er stemt på kandidat.
- “If (count ($ _ POST)> 1)…” kontrollerer, om der er valgt en stemme ved at tælle antallet af poster i $ _POST-arrayet. Hvis der ikke er valgt noget element, vil $ _POST kun indeholde det indsendte element. Hvis en kandidat er valgt, vil $ _POST-arrayet have to elementer, indsendelses- og afstemningsposten. Denne kode bruges også til at indsætte en ny stemmepost og derefter vise resultatsiden
- "Afslut;" bruges til at afslutte udførelsen af scriptet, efter at resultaterne er blevet vist, så formularen til meningsmåling ikke vises.
- “Kræv 'opinion.html.php';” viser meningsmålingens formular, hvis intet er valgt.
Lad os nu oprette visningerne. opinion.html.php
JavaScript Libraries - Opinion Poll JavaScript Libraries - Opinion Poll
What is your favorite JavaScript?
results.html.php
JavaScript Libraries Poll Results Opinion Poll Results
What is your favorite JavaScript Library?
people have thus far taken part in this poll:
Trin 3) Test af vores ansøgning
Forudsat at du har gemt filerne i opinionpoll-mappen, skal du gå til URL'en http: // localhost / opinionpoll /
Hvis du klikker på knappen Ok uden at vælge et JS-bibliotek, får du følgende meddelelsesfelt.
Vælg et JS-bibliotek, og klik derefter på knappen OK. Du får resultatsiden svarende til den nedenfor vist.
Resumé
- At opdele din applikation i forretningslogik er frontcontroller-visningslag en god applikationsdesignpraksis
- JavaScript er nyttigt til udførelse af validering på klientsiden
- Det er en god programmeringspraksis at bruge file.html.php til filer, der indeholder både HTML- og PHP-koder
- Undersøgelsesapplikationsapplikationen viser, hvordan den viden, der er lært i de foregående lektioner, kan sammensættes til at udvikle en arbejdsapplikation med en database-backend.