โครงการ PHP: สร้างแอปพลิเคชันโพลความคิดเห็น
ในโครงการ PHP นี้, เราจะสร้างแอปพลิเคชั่นสำรวจความคิดเห็น
แบบสำรวจความคิดเห็นจะประกอบด้วย 3 องค์ประกอบหลัก ได้แก่
ตัวควบคุมด้านหน้า – นี่คือหน้าดัชนีที่จะกำหนดโค้ด HTML ที่จะโหลด เพื่อให้แน่ใจว่าใบสมัครของเรามีจุดเริ่มต้นเพียงจุดเดียว สิ่งนี้จะทำให้เราควบคุมแอปพลิเคชันได้มากขึ้น
ตรรกะทางธุรกิจ – จะมีโค้ด PHP สำหรับการโต้ตอบกับฐานข้อมูล สิ่งนี้จะช่วยให้เราสามารถแยกตรรกะทางธุรกิจออกจากการนำเสนอ ทำให้แอปพลิเคชันของเราบำรุงรักษาง่าย
เข้าชม – ซึ่งจะมีโค้ด HTML เราจะมีสองหน้าคือ;
- comment.html.php – จะมีโค้ด HTML พร้อมคำถามและตัวเลือก
- results.html.php – จะมีโค้ด HTML ที่แสดงผลการสำรวจความคิดเห็น
สมมติฐานที่เกิดขึ้น
แบบสำรวจความคิดเห็นจะถามคำถาม –
คุณชอบอะไร Javaต้นฉบับ ห้องสมุด?
คำตอบก็จะเป็น
- JQuery
- มูทูลส์
- ห้องสมุด YUI
- เรืองแสง
นี่คือขั้นตอนในการสร้างแอปพลิเคชัน–
ขั้นตอนที่ 1) การเชื่อมต่อฐานข้อมูล
ส่วนนี้จะถือว่ามีความรู้เกี่ยวกับ MySQL และวิธีการจัดการหากคุณไม่คุ้นเคยกับสิ่งเหล่านี้ MySQL, ตรวจสอบของเรา บทช่วยสอน SQL มาตรา.
แอปพลิเคชันของเราจะมีตารางเดียวเท่านั้น โดยมี 3 ฟิลด์ ได้แก่
- id – สร้างหมายเลขอัตโนมัติเป็นคีย์หลัก
- ตัวเลือก – หมายเลขที่แสดงถึงผู้สมัครชิงตำแหน่งประธานาธิบดี
- ts – เวลาประทับสำหรับการลงคะแนนเสียง
สคริปต์ด้านล่างสร้างตาราง js_libraries ของเรา
<?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) การเข้ารหัสแอปพลิเคชันของเรา
ตอนนี้เรามาสร้างเลเยอร์ตรรกะทางธุรกิจที่จะจัดการการเชื่อมต่อฐานข้อมูลกันดีกว่า 'ความคิดเห็น_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); } } ?>
ที่นี่
- “ฟังก์ชั่นสาธารณะ __construct()” เป็นวิธีการสร้างคลาสที่ใช้ในการสร้างการเชื่อมต่อฐานข้อมูล
- “ฟังก์ชันสาธารณะดำเนินการ_query(…)” เป็นวิธีการดำเนินการแบบสอบถาม เช่น แทรก อัปเดต และลบ
- “เลือกฟังก์ชั่นสาธารณะ” เป็นวิธีดึงข้อมูลจาก ฐานข้อมูล และส่งคืนอาร์เรย์ตัวเลข
- “public function insert(…)” เป็นวิธีการแทรกที่เรียกใช้เมธอดExecute_query
- “public function __destruct()” คือคลาส destructor ที่ปิดการเชื่อมต่อฐานข้อมูล
ตอนนี้เรามาสร้างตัวควบคุมด้านหน้ากันดีกว่า 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'; ?>
ที่นี่
- “ต้องการ 'opinion_poll_model.php';” โหลดคลาสตรรกะทางธุรกิจ
- “$model = ความคิดเห็นใหม่_poll_model();” สร้างอินสแตนซ์ของคลาสตรรกะทางธุรกิจ
- “if (count($_POST) == 1)…” ดำเนินการตรวจสอบข้อมูลและใช้งาน Javaสคริปต์ที่จะแสดงกล่องข้อความหากยังไม่มีการโหวตให้ผู้สมัคร
- “if (count($_POST) > 1)…” ตรวจสอบว่าได้เลือกการลงคะแนนหรือไม่ โดยการนับจำนวนรายการในอาร์เรย์ $_POST หากไม่มีการเลือกรายการ $_POST จะมีเฉพาะรายการที่ส่งเท่านั้น หากมีการเลือกผู้สมัคร อาร์เรย์ $_POST จะมีสององค์ประกอบ ได้แก่ รายการส่งและโหวต รหัสนี้ยังใช้เพื่อแทรกบันทึกการลงคะแนนใหม่แล้วแสดงหน้าผลลัพธ์
- “exit” ใช้เพื่อยุติการทำงานของสคริปต์หลังจากแสดงผลลัพธ์แล้ว เพื่อไม่ให้แสดงแบบฟอร์มสำรวจความคิดเห็น
- “ต้องการ 'opinion.html.php';” แสดงแบบฟอร์มสำรวจความคิดเห็นหากไม่มีการเลือกสิ่งใด
ตอนนี้เรามาสร้างมุมมองกันดีกว่า ความคิดเห็น.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>
result.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) ทดสอบแอปพลิเคชันของเรา
สมมติว่าคุณได้บันทึกไฟล์ไว้ในโฟลเดอร์ commentpoll ให้เรียกดู URL http://localhost/opinionpoll/
หากคุณคลิกปุ่มตกลงโดยไม่ได้เลือกไลบรารี JS คุณจะได้รับกล่องข้อความต่อไปนี้
เลือกไลบรารี JS จากนั้นคลิกที่ปุ่มตกลง คุณจะได้หน้าผลลัพธ์คล้ายกับที่แสดงด้านล่าง
สรุป
- การแบ่งแอปพลิเคชันของคุณออกเป็นตรรกะทางธุรกิจ เลเยอร์มุมมองตัวควบคุมด้านหน้าถือเป็นแนวปฏิบัติที่ดีในการออกแบบแอปพลิเคชัน
- Javaสคริปต์มีประโยชน์สำหรับการดำเนินการตรวจสอบด้านไคลเอนต์
- แนวทางปฏิบัติในการเขียนโปรแกรมที่ดีคือการใช้ file.html.php สำหรับไฟล์ที่มีทั้ง HTML และ รหัส PHP
- แอปพลิเคชันการสำรวจความคิดเห็นแสดงให้เห็นว่าความรู้ที่เรียนรู้ในบทเรียนก่อนหน้านี้สามารถนำมารวมกันเพื่อพัฒนาแอปพลิเคชันที่ใช้งานได้กับแบ็คเอนด์ฐานข้อมูลได้อย่างไร