PHP-Projekte: Erstellen Sie eine Meinungsumfrageanwendung
In diesem PHP-Projekt, Wir werden eine Meinungsumfrageanwendung erstellen.
Die Meinungsumfrage besteht aus drei Hauptkomponenten;
Front-Controller โ Dies ist die Indexseite, die den zu ladenden HTML-Code bestimmt. Dadurch wird sichergestellt, dass unsere Anwendung einen einzigen Einstiegspunkt hat. Dadurch erhalten wir mehr Kontrolle รผber die Anwendung.
Geschรคftslogik โ Dies enthรคlt den PHP-Code fรผr die Interaktion mit der Datenbank. Dies ermรถglicht es uns, die Geschรคftslogik von der Prรคsentation zu trennen, wodurch unsere Anwendung einfacher zu warten ist
Aufrufe โ Dies wird den HTML-Code enthalten. Wir werden nรคmlich zwei Seiten haben;
- 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 Ihre Lieblings JavaSkript Bibliothek?
Antworten wรคren
- JQuery
- MooTools
- YUI-Bibliothek
- Glรผhen
Hier sind die Schritte zum Erstellen der Anwendung:
Schritt 1) โโDatenbankkonnektivitรคt
In diesem Abschnitt werden Kenntnisse รผber Folgendes vorausgesetzt MySQL und wie Sie es anwenden, falls Sie damit nicht vertraut sind MySQL, รผberprรผfen Sie unsere SQL-Tutorials .
Unsere Anwendung wird nur eine Tabelle mit 3 Feldern haben, nรคmlich;
- id โ Nummer automatisch als Primรคrschlรผssel generieren
- Wahl โ die Zahl, die einen Prรคsidentschaftskandidaten reprรคsentiert
- ts โ der Zeitstempel fรผr die Abstimmung
Das folgende Skript erstellt unsere js_libraries-Tabelle.
<?php 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
Lassen Sie uns nun unsere Geschรคftslogikschicht erstellen, die die Datenbankkonnektivitรคt รผbernimmt. 'opinion_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_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 statement
return !$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()โ ist die Klassenkonstruktormethode, die zum Herstellen der Datenbankverbindung verwendet wird
- โpublic functionexecute_query(โฆ)โ ist die Methode zum Ausfรผhren von Abfragen wie Einfรผgen, Aktualisieren und Lรถschen
- โpublic function selectโ ist die Methode zum Abrufen von Daten aus dem Datenbank und Rรผckgabe eines numerischen Arrays.
- โpublic function insert(โฆ)โ ist die Einfรผgemethode, die die Methode โexecute_queryโ aufruft.
- โpublic function __destruct()โ ist der Klassendestruktor, der die Datenbankverbindung schlieรt.
Lassen Sie uns nun den Front-Controller erstellen index.php
<?php
require 'opinion_poll_model.php';
$model = new Opinion_poll_model();
if (count($_POST) == 1) {
echo "<script>alert('You did not vote!');</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,'$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 .= "<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 zum Anzeigen eines Meldungsfelds, wenn fรผr den Kandidaten nicht gestimmt wurde.
- โif (count($_POST) > 1)โฆโ prรผft, ob eine Stimme ausgewรคhlt wurde, indem die Anzahl der Elemente im $_POST-Array gezรคhlt wird. Wenn kein Element ausgewรคhlt wurde, enthรคlt $_POST nur das Submit-Element. Wenn ein Kandidat ausgewรคhlt wurde, besteht das Array $_POST aus zwei Elementen, dem Submit- und dem Vote-Element. Dieser Code wird auch verwendet, um einen neuen Abstimmungsdatensatz einzufรผgen und dann die Ergebnisseite anzuzeigen
- Mit โexit;โ wird die Skriptausfรผhrung nach der Ergebnisanzeige beendet, so dass das Meinungsumfrage-Formular nicht angezeigt wird.
- โerforderlich โopinion.html.phpโ;โ Zeigt das Meinungsumfrageformular an, wenn nichts ausgewรคhlt wurde.
Lassen Sie 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" />MooToolsl
<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 Opinionpoll-Ordner gespeichert, navigieren Sie zur URL http://localhost/opinionpoll/
Wenn Sie auf die Schaltflรคche โOKโ klicken, ohne eine JS-Bibliothek auszuwรคhlen, wird das folgende Meldungsfeld angezeigt.
Wรคhlen Sie eine JS-Bibliothek aus und klicken Sie dann auf die Schaltflรคche โOKโ. Sie erhalten eine Ergebnisseite รคhnlich der unten gezeigten.
Zusammenfassung
- Die Unterteilung Ihrer Anwendung in Geschรคftslogik und Front-Controller-Ansichtsebenen ist eine gute Vorgehensweise beim Anwendungsdesign
- JavaDas Skript ist nรผtzlich fรผr die Durchfรผhrung einer clientseitigen Validierung
- Es ist eine gute Programmierpraxis, file.html.php fรผr Dateien zu verwenden, die sowohl HTML als auch HTML enthalten PHP-Codes
- Die Meinungsumfrageanwendung zeigt, wie das in den vorherigen Lektionen erworbene Wissen zur Entwicklung einer funktionierenden Anwendung mit einem Datenbank-Backend kombiniert werden kann.



