PHP-projekter: Opret en meningsmålingeapplikation

Indholdsfortegnelse:

Anonim

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 .= "
" . $ libraries [$i] . " Got:" . $result[0] . " votes

";}require 'results.html.php';exit;}require 'opinion.html.php';?>

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?

JQuery
MooToolsl
YUI Library
Glow

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.