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 .= "";}require 'results.html.php';exit;}require 'opinion.html.php';?> " . $ libraries [$i] . " Got: " . $result[0] . " votes
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?
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.