PHP-Projekte: Erstellen Sie eine Meinungsumfrageanwendung
⚡ Intelligente Zusammenfassung
Dieses PHP-Projekt entwickelt eine Umfrageanwendung von Grund auf und verknüpft dabei frühere Lektionen zu einem praktischen Beispiel. Die Anwendung ist in einen Front-Controller, ein Geschäftslogikmodell und Ansichtsdateien unterteilt und speichert und zählt anschließend die Stimmen für einen Favoriten. JavaSkriptbibliothek in einem MySQL Datenbank.

Wie man eine Meinungsumfrage-Anwendung mit PHP erstellt
In diesem PHP-Projekt werden wir eine Anwendung zur Durchführung von Meinungsumfragen erstellen.
Die Meinungsumfrage wird aus 3 Hauptkomponenten bestehen:
Front-Controller Dies ist die Indexseite, die den zu ladenden HTML-Code bestimmt. Dadurch hat unsere Anwendung einen einzigen Einstiegspunkt, was uns mehr Kontrolle über die Anwendung ermöglicht.
Geschäftslogik – Dieser Abschnitt enthält den PHP-Code für die Datenbankinteraktion. Dadurch können wir die Geschäftslogik von der Präsentation trennen, was die Wartung unserer Anwendung vereinfacht.
Aufrufe – Dies enthält den HTML-Code. Wir werden zwei Seiten haben, nämlich:
- meinung.html.php – diese enthält den HTML-Code mit der Frage und den Optionen
- results.html.php – enthält den HTML-Code, der die Ergebnisse der Meinungsumfrage anzeigt
Annahmen getroffen
Die Meinungsumfrage wird die Frage stellen: Was ist Ihr Favorit? JavaSkript Bibliothek?
Die Antworten wären:
- JQuery
- MooTools
- YUI-Bibliothek
- Glühen
Hier sind die Schritte zur Erstellung der Anwendung.
Schritt 1) Datenbankkonnektivität
In diesem Abschnitt werden Kenntnisse über Folgendes vorausgesetzt MySQL und wie man es verabreicht. Wenn Sie damit nicht vertraut sind MySQL, überprüfen Sie unsere SQL-Tutorials .
Unsere Anwendung wird nur eine Tabelle mit drei Feldern enthalten, nämlich:
- ID – automatisch generierte Nummer als Primärschlüssel
- Auswahl – die Zahl, die die gewählte Auswahl darstellt JavaSkriptbibliothek
- ts – der Zeitstempel für die Abstimmung
Das folgende Skript erstellt unsere js_libraries-Tabelle.
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`) );
Schritt 2) Codierung unserer Anwendung
Nun erstellen wir unsere Geschäftslogikschicht, die die Datenbankanbindung übernimmt. meinung_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_connect_error()); if (!mysqli_select_db($this->db_handle, $this->db)) die("Unable to select database: " . mysqli_error($this->db_handle)); } private function execute_query($sql_stmt) { $result = mysqli_query($this->db_handle, $sql_stmt); // execute SQL statement return !$result ? FALSE : TRUE; } public function select($sql_stmt) { $result = mysqli_query($this->db_handle, $sql_stmt); if (!$result) die("Database access failed: " . mysqli_error($this->db_handle)); $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()“ ist die Klassenkonstruktormethode, die zum Herstellen der Datenbankverbindung verwendet wird
- Die Methode „public function execute_query(…)“ dient zum Ausführen von Abfragen wie INSERT, UPDATE und DELETE.
- „public function select(…)“ ist die Methode zum Abrufen von Daten aus der Datenbank und gibt ein Array zurück.
- „public function insert(…)“ ist die Einfügemethode, die die Methode „execute_query“ aufruft.
- „public function __destruct()“ ist der Klassendestruktor, der die Datenbankverbindung schließt.
Erstellen wir nun den Frontcontroller. index.php
<?php require 'opinion_poll_model.php'; $model = new Opinion_poll_model(); if (count($_POST) == 1) { echo "<script>alert(1);</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,3)"; $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'; ?>
HIER,
- „erfordere ‚opinion_poll_model.php‘;“ lädt die Geschäftslogikklasse
- „$model = new Opinion_poll_model();“ Erstellt eine Instanz der Geschäftslogikklasse
- „if (count($_POST) == 1)…“ führt die Datenvalidierung durch und verwendet JavaSkript zur Anzeige einer Meldungsbox, falls kein Kandidat gewählt wurde.
- Die Zeile „if (count($_POST) > 1)…“ prüft, ob eine Stimme abgegeben wurde, indem die Anzahl der Elemente im Array $_POST gezählt wird. Wurde keine Stimme abgegeben, enthält $_POST nur das Element „Absenden“. Wurde eine Bibliothek ausgewählt, enthält das Array $_POST zwei Elemente: „Absenden“ und „Stimme abgeben“. Dieser Code fügt außerdem einen neuen Stimmeintrag ein und zeigt anschließend die Ergebnisseite an.
- Mit „exit;“ wird die Skriptausführung beendet, nachdem die Ergebnisse angezeigt wurden, sodass das Formular für die Meinungsumfrage nicht angezeigt wird.
- „erforderlich ‚opinion.html.php‘;“ Zeigt das Meinungsumfrageformular an, wenn nichts ausgewählt wurde.
Lasst uns nun die Ansichten erstellen. meinung.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" />MooTools <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>
results.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>
Schritt 3) Testen unserer Anwendung
Vorausgesetzt, Sie haben die Dateien im Ordner „opinionpoll“ gespeichert, navigieren Sie zu folgendem Pfad: URL http://localhost/opinionpoll/
Wenn Sie auf die Schaltfläche „OK“ klicken, ohne eine JS-Bibliothek auszuwählen, erhalten Sie die folgende Meldung.
Wählen Sie eine JS-Bibliothek aus und klicken Sie anschließend auf die Schaltfläche „OK“. Sie erhalten eine Ergebnisseite, die der unten gezeigten ähnelt.
Möglichkeiten zur Verbesserung der Meinungsumfrage-App
Dieses Projekt bildet eine solide Grundlage. Um es produktionsreif zu machen, sollten Sie folgende Verbesserungen in Betracht ziehen:
- Verwenden vorbereiteter Anweisungen im Modell, um das Risiko von SQL-Injection durch die verketteten Abfragen zu eliminieren.
- Doppelte Stimmabgabe verhindern mit einem Cookie, einem Session-Flag oder durch Aufzeichnung der IP-Adresse des Wählers zusammen mit dem Zeitstempel.
- Prozentsätze und ein Balkendiagramm anzeigen auf der Ergebnisseite anstelle der Rohdaten, um einen besseren Überblick über das Ergebnis zu ermöglichen.
- Gestalten Sie die Umfrage dynamisch Indem die Frage und die Antwortmöglichkeiten in der Datenbank gespeichert werden, kann der Code für beliebige Umfragen wiederverwendet werden.



