PHP 프로젝트: 여론 조사 애플리케이션 만들기
이 PHP 프로젝트에서는, 우리는 여론조사 애플리케이션을 만들 예정입니다.
여론조사는 3가지 주요 구성요소로 구성됩니다.
전면 컨트롤러 – 이것은 로드할 HTML 코드를 결정하는 인덱스 페이지입니다. 이렇게 하면 애플리케이션에 단일 진입점이 있게 됩니다. 이를 통해 우리는 애플리케이션을 더욱 효과적으로 제어할 수 있습니다.
비즈니스 로직 – 여기에는 데이터베이스와 상호 작용하기 위한 PHP 코드가 포함됩니다. 이를 통해 프레젠테이션에서 비즈니스 로직을 분리하여 애플리케이션을 쉽게 유지 관리할 수 있습니다.
조회수 – 여기에는 HTML 코드가 포함됩니다. 즉, 두 페이지가 있습니다.
- 의견.html.php - 여기에는 질문과 옵션이 포함된 HTML 코드가 포함됩니다.
- results.html.php – 여기에는 여론 조사 결과를 표시하는 HTML 코드가 포함됩니다.
가정된 내용
여론조사에서는 다음과 같은 질문을 할 것입니다.
너 좋아 하는게 뭐니? JavaScript 도서관?
대답은 다음과 같습니다
- 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단계) 애플리케이션 코딩
이제 데이터베이스 연결을 처리할 비즈니스 논리 계층을 만들어 보겠습니다. '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)..."는 데이터 유효성 검사를 수행하고 다음을 사용합니다. 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>
결과.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 라이브러리를 선택하지 않고 확인 버튼을 클릭하면 다음과 같은 메시지 상자가 나타납니다.
JS 라이브러리를 선택한 다음 확인 버튼을 클릭합니다. 아래 표시된 것과 유사한 결과 페이지가 표시됩니다.
제품 개요
- 애플리케이션을 비즈니스 로직, 전면 컨트롤러 뷰 레이어로 나누는 것은 좋은 애플리케이션 설계 방식입니다.
- Java스크립트는 클라이언트 측 검증을 수행하는 데 유용합니다.
- HTML과 HTML을 모두 포함하는 파일에는 file.html.php를 사용하는 것이 좋은 프로그래밍 습관입니다. PHP 코드
- 여론 조사 애플리케이션은 이전 수업에서 배운 지식을 활용하여 데이터베이스 백엔드를 사용하여 작동하는 애플리케이션을 개발하는 방법을 보여줍니다.



