PHP-projecten: maak een opiniepeilingtoepassing

Inhoudsopgave:

Anonim

In dit PHP-project , gaan we een opiniepeiling applicatie te maken.

De opiniepeiling zal bestaan ​​uit 3 hoofdcomponenten;

Voorste controller - dit is de indexpagina die bepaalt welke HTML-code moet worden geladen. Dit zorgt ervoor dat onze applicatie één toegangspunt heeft. Dit geeft ons meer controle over de applicatie.

Bedrijfslogica - deze bevat de PHP-code voor interactie met de database. Hierdoor kunnen we de bedrijfslogica scheiden van de presentatie, waardoor onze applicatie gemakkelijk te onderhouden is

Weergaven - dit bevat de HTML-code. We zullen namelijk twee pagina's hebben;

  • opinion.html.php - dit bevat de HTML-code met de vraag en opties
  • results.html.php - dit bevat de HTML-code die de resultaten van de opiniepeiling weergeeft

Aannames gemaakt

De opiniepeiling stelt de vraag:

Wat is je favoriete JavaScript-bibliotheek?

Antwoorden zouden zijn

  • JQuery
  • MooTools
  • YUI-bibliotheek
  • Gloed

Hier zijn de stappen om de applicatie te maken -

Stap 1) Database-connectiviteit

Deze sectie veronderstelt kennis van MySQL en hoe u deze beheert. Als u niet bekend bent met deze MySQL, bekijk dan onze sectie SQL-tutorials.

Onze applicatie heeft slechts één tabel met 3 velden namelijk;

  • id - nummer automatisch genereren als de primaire sleutel
  • keuze - het nummer dat een presidentskandidaat vertegenwoordigt
  • ts - het tijdstempel voor de stemming

Het onderstaande script maakt onze js_libraries-tabel.

Stap 2) Codering van onze applicatie

Laten we nu onze bedrijfslogica-laag maken die de databaseconnectiviteit zal afhandelen. '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);}}?>

HIER,

  • "Public function __construct ()" is de klasseconstructormethode die wordt gebruikt om de databaseverbinding tot stand te brengen
  • "Openbare functie execute_query (...)" is de methode voor het uitvoeren van query's zoals invoegen, bijwerken en verwijderen
  • "Public function select" is de methode voor het ophalen van gegevens uit de database en het retourneren van een numerieke array.
  • "Public function insert (…)" is de insert-methode die de execute_query-methode aanroept.
  • "Public function __destruct ()" is de class destructor die de databaseverbinding verbreekt.

Laten we nu de voorste controller index.php maken

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';?>

HIER,

  • "Vereisen 'opinion_poll_model.php';" laadt de bedrijfslogica-klasse
  • "$ Model = new Opinion_poll_model ();" maakt een instantie van de klasse business logic
  • "If (count ($ _ POST) == 1)…" voert de gegevensvalidatie uit en gebruikt JavaScript om een ​​berichtvenster weer te geven als er niet op een kandidaat is gestemd.
  • "If (count ($ _ POST)> 1)…" controleert of een stem is geselecteerd door het aantal items in de $ _POST-array te tellen. Als er geen item is geselecteerd, bevat de $ _POST alleen het item dat is ingediend. Als een kandidaat is gekozen, bevat de array $ _POST twee elementen, het item voor verzenden en stemmen. Deze code wordt ook gebruikt om een ​​nieuw stemrecord in te voegen en vervolgens de resultatenpagina weer te geven
  • "Uitgang;" wordt gebruikt om de uitvoering van het script te beëindigen nadat de resultaten zijn weergegeven, zodat het opiniepeilingformulier niet wordt weergegeven.
  • "Vereisen 'opinion.html.php';" geeft het opiniepeilingformulier weer als er niets is geselecteerd.

Laten we nu de weergaven maken. 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:

Stap 3) Testen van onze applicatie

Ervan uitgaande dat u de bestanden in de opinionpoll-map hebt opgeslagen, bladert u naar de URL http: // localhost / opinionpoll /

Als u op de knop Ok klikt zonder een JS-bibliotheek te selecteren, krijgt u het volgende berichtvenster.

Selecteer een JS-bibliotheek en klik op de knop OK. U krijgt de resultatenpagina te zien die lijkt op de pagina die hieronder wordt weergegeven.

Overzicht

  • Het verdelen van uw applicatie in bedrijfslogica, front-controller view-lagen is een goede praktijk voor het ontwerpen van applicaties
  • JavaScript is handig voor het uitvoeren van validatie aan de clientzijde
  • Het is een goede programmeerpraktijk om file.html.php te gebruiken voor bestanden die zowel HTML- als PHP-codes bevatten
  • De opiniepeiling-applicatie laat zien hoe de opgedane kennis in de voorgaande lessen kan worden gecombineerd om een ​​werkende applicatie te ontwikkelen met een database-backend.