Dự án PHP: Tạo ứng dụng thăm dò ý kiến
Trong dự án PHP này, chúng ta sẽ tạo một ứng dụng thăm dò ý kiến.
Cuộc thăm dò ý kiến sẽ bao gồm 3 thành phần chính;
Bộ điều khiển phía trước – đây là trang chỉ mục sẽ xác định mã HTML sẽ được tải. Điều này sẽ đảm bảo rằng ứng dụng của chúng tôi có một điểm vào duy nhất. Điều này sẽ giúp chúng ta kiểm soát ứng dụng nhiều hơn.
Logic kinh doanh – cái này sẽ chứa mã PHP để tương tác với cơ sở dữ liệu. Điều này sẽ cho phép chúng tôi tách logic nghiệp vụ khỏi bản trình bày, giúp ứng dụng của chúng tôi dễ bảo trì
Lượt xem – cái này sẽ chứa mã HTML. Chúng tôi sẽ có hai trang cụ thể là;
- ý kiến.html.php – phần này sẽ chứa mã HTML với câu hỏi và các tùy chọn
- results.html.php – phần này sẽ chứa mã HTML hiển thị kết quả thăm dò ý kiến
Các giả định được đưa ra
Cuộc thăm dò ý kiến sẽ đặt câu hỏi –
Sở thích của bạn là gì JavaScript Thư viện?
Câu trả lời sẽ là
- JQuery
- MooCông cụ
- Thư viện YUI
- Glow
Dưới đây là các bước để tạo ứng dụng–
Bước 1) Kết nối cơ sở dữ liệu
Phần này giả định kiến thức về MySQL và cách quản lý nó, nếu bạn không quen với những điều này MySQL, kiểm tra của chúng tôi hướng dẫn SQL phần.
Ứng dụng của chúng tôi sẽ chỉ có một bảng với 3 trường cụ thể là;
- id – số tự động tạo làm khóa chính
- sự lựa chọn - con số đại diện cho một ứng cử viên tổng thống
- ts – dấu thời gian bỏ phiếu
Đoạn script bên dưới tạo bảng js_libraries của chúng tôi.
<?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`) ); ?>
Bước 2) Mã hóa ứng dụng của chúng tôi
Bây giờ chúng ta hãy tạo lớp logic nghiệp vụ để xử lý kết nối cơ sở dữ liệu. '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); } } ?>
ĐÂY,
- “hàm công khai __construct()” là phương thức xây dựng lớp được sử dụng để thiết lập kết nối cơ sở dữ liệu
- “public function exec_query(…)” là phương thức thực hiện các truy vấn như chèn, cập nhật và xóa
- “chọn chức năng công cộng” là phương thức lấy dữ liệu từ cơ sở dữ liệu và trả về một mảng số.
- “chèn hàm công khai (…)” là phương thức chèn gọi phương thức exec_query.
- “hàm công khai __struct()” là hàm hủy lớp đóng kết nối cơ sở dữ liệu.
Bây giờ hãy tạo bộ điều khiển phía trước 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'; ?>
ĐÂY,
- “yêu cầu 'opinion_poll_model.php';” tải lớp logic nghiệp vụ
- “$model = ý kiến mới_poll_model();” tạo một thể hiện của lớp logic nghiệp vụ
- “if (count($_POST) == 1)…” thực hiện việc xác thực dữ liệu và sử dụng JavaTập lệnh hiển thị hộp thông báo nếu chưa có ứng cử viên nào được bầu chọn.
- “if (count($_POST) > 1)…” kiểm tra xem phiếu bầu đã được chọn hay chưa bằng cách đếm số mục trong mảng $_POST. Nếu không có mục nào được chọn, $_POST sẽ chỉ chứa mục gửi. Nếu một ứng cử viên đã được chọn, mảng $_POST sẽ có hai phần tử, mục gửi và biểu quyết. Mã này cũng được sử dụng để chèn bản ghi phiếu bầu mới và sau đó hiển thị trang kết quả
- "lối ra;" được sử dụng để chấm dứt việc thực thi tập lệnh sau khi kết quả đã được hiển thị để biểu mẫu thăm dò ý kiến không được hiển thị.
- “yêu cầu 'opinion.html.php';” hiển thị biểu mẫu thăm dò ý kiến nếu không có gì được chọn.
Bây giờ chúng ta hãy tạo các khung nhìn. ý kiến.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>
kết quả.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>
Bước 3) Kiểm tra ứng dụng của chúng tôi
Giả sử bạn đã lưu các tập tin trong thư mục thăm dò ý kiến, hãy duyệt đến URL http://localhost/opinionpoll/
Nếu bạn nhấp vào nút Ok mà không chọn thư viện JS, bạn sẽ nhận được hộp thông báo sau.
Chọn thư viện JS sau đó nhấp vào nút OK. Bạn sẽ nhận được trang kết quả tương tự như trang hiển thị bên dưới.
Tổng kết
- Chia ứng dụng của bạn thành logic nghiệp vụ, các lớp xem bộ điều khiển phía trước là một phương pháp thiết kế ứng dụng tốt
- JavaScript hữu ích cho việc thực hiện xác thực phía máy khách
- Cách lập trình tốt nhất là sử dụng file.html.php cho các tệp chứa cả HTML và Mã PHP
- Ứng dụng thăm dò ý kiến cho thấy cách kết hợp kiến thức đã học trong các bài học trước để phát triển một ứng dụng hoạt động có cơ sở dữ liệu phía sau.