PHP-projektek: Hozzon létre egy közvélemény-kutatási alkalmazást
Ebben a PHP projektben, közvélemény-kutató alkalmazást készítünk.
A közvélemény-kutatás 3 fő összetevőből fog állni;
Elülső vezérlő – ez az indexoldal, amely meghatározza a betöltendő HTML kódot. Ez biztosítja, hogy az alkalmazásunk egyetlen belépési ponttal rendelkezzen. Ez nagyobb irányítást biztosít az alkalmazás felett.
Üzleti logika – ez tartalmazza az adatbázissal való interakcióhoz szükséges PHP kódot. Ez lehetővé teszi számunkra, hogy elkülönítsük az üzleti logikát a prezentációtól, így alkalmazásunk könnyen karbantartható
Nézetek – ez tartalmazza a HTML kódot. Két oldalunk lesz mégpedig;
- vélemény.html.php – ez tartalmazza a HTML kódot a kérdéssel és a beállításokkal
- results.html.php – ez tartalmazza a közvélemény-kutatás eredményeit megjelenítő HTML-kódot
Feltételezések
A közvélemény-kutatás felteszi a kérdést:
Mi a kedvenc JavaForgatókönyv Könyvtár?
A válaszok lennének
- JQuery
- MooTools
- YUI könyvtár
- Izzás
Itt vannak az alkalmazás létrehozásának lépései -
1. lépés: Adatbázis-kapcsolat
Ez a rész feltételezi az ismereteket MySQL és hogyan kell beadni, ha nem ismeri ezeket MySQL, ellenőrizze nálunk SQL oktatóanyagok szakasz.
Alkalmazásunknak csak egy táblája lesz 3 mezővel, nevezetesen;
- id – szám automatikus generálása elsődleges kulcsként
- választás – az elnökjelöltet jelképező szám
- ts – a szavazás időbélyege
Az alábbi szkript létrehozza a js_libraries táblánkat.
<?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`) ); ?>
2. lépés) Alkalmazásunk kódolása
Most hozzuk létre az üzleti logikai rétegünket, amely kezeli az adatbázis-kapcsolatot. '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);
}
}
?>
ITT,
- A „nyilvános függvény __construct()” az adatbázis-kapcsolat létrehozásához használt osztálykonstruktor metódus
- A „nyilvános függvény execute_query(…)” az olyan lekérdezések végrehajtásának módja, mint a beszúrás, frissítés és törlés
- A „nyilvános funkció kiválasztása” az adatok lekérésének módja a adatbázis és egy numerikus tömb visszaadása.
- A „public function insert(…)” az a beszúrási metódus, amely meghívja az execute_query metódust.
- A „nyilvános függvény __destruct()” az az osztálydestruktor, amely lezárja az adatbázis-kapcsolatot.
Most hozzuk létre az elülső vezérlőt 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';
?>
ITT,
- "require 'opinion_poll_model.php';" betölti az üzleti logikai osztályt
- "$model = new Opinion_poll_model();" létrehozza az üzleti logikai osztály egy példányát
- Az „if (count($_POST) == 1)…” elvégzi az adatellenőrzést és használja JavaSzkript az üzenetdoboz megjelenítéséhez, ha nem szavaztak a jelöltre.
- Az „if (count($_POST) > 1)…” a $_POST tömb elemeinek megszámlálásával ellenőrzi, hogy kiválasztottak-e egy szavazatot. Ha egyetlen elem sem került kiválasztásra, a $_POST csak a küldendő elemet tartalmazza. Ha kiválasztottak egy jelöltet, a $_POST tömb két elemből áll, a benyújtás és a szavazás elemből. Ez a kód egy új szavazatrekord beszúrására, majd az eredményoldal megjelenítésére is használható
- "kijárat;" A szkript végrehajtásának leállítására szolgál az eredmények megjelenítése után, így a közvélemény-kutatási űrlap nem jelenik meg.
- "require 'opinion.html.php';" megjeleníti a közvélemény-kutatási űrlapot, ha nincs kiválasztva.
Most hozzuk létre a nézeteket. vélemény.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>
3. lépés) Alkalmazásunk tesztelése
Feltéve, hogy a fájlokat a véleménykutatás mappájába mentette, keresse meg a http://localhost/opinionpoll/ URL-t.
Ha az OK gombra kattint a JS könyvtár kiválasztása nélkül, a következő üzenetablak jelenik meg.
Válasszon ki egy JS könyvtárat, majd kattintson az OK gombra. Az alábbihoz hasonló eredményoldalt fog kapni.
Összegzésként
- Alkalmazásának üzleti logikára, elülső vezérlőnézeti rétegekre való felosztása jó alkalmazástervezési gyakorlat
- JavaA szkript hasznos az ügyféloldali ellenőrzés végrehajtásához
- Jó programozási gyakorlat a file.html.php használata olyan fájlokhoz, amelyek HTML és formátumot is tartalmaznak PHP kódok
- A közvélemény-kutatási alkalmazás bemutatja, hogyan lehet az előző leckéken tanult ismereteket összerakni egy működő, adatbázis-háttérrel rendelkező alkalmazás fejlesztéséhez.



