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/

Thử nghiệm một ứng dụng thăm dò ý kiến

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.

Thử nghiệm một ứng dụng thăm dò ý kiến

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.

Thử nghiệm một ứng dụng thăm dò ý kiến

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.