PHP 프로젝트: 여론 조사 애플리케이션 만들기

이 PHP 프로젝트에서는, 우리는 여론조사 애플리케이션을 만들 예정입니다.

여론조사는 3가지 주요 구성요소로 구성됩니다.

전면 컨트롤러 – 이것은 로드할 HTML 코드를 결정하는 인덱스 페이지입니다. 이렇게 하면 애플리케이션에 단일 진입점이 있게 됩니다. 이를 통해 우리는 애플리케이션을 더욱 효과적으로 제어할 수 있습니다.

비즈니스 로직 – 여기에는 데이터베이스와 상호 작용하기 위한 PHP 코드가 포함됩니다. 이를 통해 프레젠테이션에서 비즈니스 로직을 분리하여 애플리케이션을 쉽게 유지 관리할 수 있습니다.

조회수 – 여기에는 HTML 코드가 포함됩니다. 즉, 두 페이지가 있습니다.

  • 의견.html.php - 여기에는 질문과 옵션이 포함된 HTML 코드가 포함됩니다.
  • results.html.php – 여기에는 여론 조사 결과를 표시하는 HTML 코드가 포함됩니다.

가정된 내용

여론조사에서는 다음과 같은 질문을 할 것입니다.

너 좋아 하는게 뭐니? 자바 스크립트 도서관?

대답은 다음과 같습니다

  • JQuery와
  • 무도구
  • YUI 라이브러리
  • 발광

애플리케이션을 생성하는 단계는 다음과 같습니다.

1단계) 데이터베이스 연결

이 섹션에서는 MySQL과 이를 관리하는 방법에 대한 지식이 있다고 가정합니다. 이러한 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단계) 애플리케이션 코딩

이제 데이터베이스 연결을 처리할 비즈니스 논리 계층을 만들어 보겠습니다. '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);

    }

}

?>

이리,

  • "공용 함수 __construct()"는 데이터베이스 연결을 설정하는 데 사용되는 클래스 생성자 메서드입니다.
  • “공용 함수 실행_쿼리(…)”는 삽입, 업데이트, 삭제 등의 쿼리를 실행하는 방법입니다.
  • "공개 함수 선택"은 다음에서 데이터를 검색하는 방법입니다. 데이터베이스 숫자 배열을 반환합니다.
  • "공용 함수 삽입(...)"은 Execute_query 메서드를 호출하는 삽입 메서드입니다.
  • "공용 함수 __destruct()"는 데이터베이스 연결을 닫는 클래스 소멸자입니다.

이제 전면 컨트롤러를 만들어 보겠습니다. 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 = 새로운 Opinion_poll_model();" 비즈니스 로직 클래스의 인스턴스를 생성합니다.
  • "if (count($_POST) == 1)..."는 데이터 유효성 검사를 수행하고 JavaScript를 사용하여 메시지를 표시합니다. box 그렇지 않은 경우 후보자가 투표되었습니다.
  • "if (count($_POST) > 1)..."는 $_POST 배열의 항목 수를 세어 투표가 선택되었는지 확인합니다. 항목을 선택하지 않은 경우 $_POST에는 제출 항목만 포함됩니다. 후보자가 선택된 경우 $_POST 배열은 제출 및 투표 항목이라는 두 가지 요소를 갖습니다. 이 코드는 새 투표 기록을 삽입한 다음 결과 페이지를 표시하는 데에도 사용됩니다.
  • "출구;" 결과가 표시된 후 스크립트 실행을 종료하여 여론 조사 양식이 표시되지 않도록 하는 데 사용됩니다.
  • "'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>

결과.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단계) ​​애플리케이션 테스트

Opinionpoll 폴더에 파일을 저장했다고 가정하고 URL http://localhost/opinionpoll/로 이동합니다.

여론조사 애플리케이션 테스트

JS 라이브러리를 선택하지 않고 확인 버튼을 클릭하면 다음과 같은 결과가 나옵니다.wing 메시지 box.

여론조사 애플리케이션 테스트

JS 라이브러리를 선택한 다음 확인 버튼을 클릭합니다. 아래 표시된 것과 유사한 결과 페이지가 표시됩니다.

여론조사 애플리케이션 테스트

요약

  • 애플리케이션을 비즈니스 로직, 전면 컨트롤러 뷰 레이어로 나누는 것은 좋은 애플리케이션 설계 방식입니다.
  • JavaScript는 클라이언트 측 유효성 검사를 수행하는 데 유용합니다.
  • HTML과 HTML을 모두 포함하는 파일에는 file.html.php를 사용하는 것이 좋은 프로그래밍 습관입니다. PHP 코드
  • 여론 조사 애플리케이션은 이전 수업에서 배운 지식을 활용하여 데이터베이스 백엔드를 사용하여 작동하는 애플리케이션을 개발하는 방법을 보여줍니다.