Проекти PHP: Створення програми для опитування громадської думки
У цьому проекті PHP, ми збираємося створити додаток для опитування громадської думки.
Опитування складатиметься з 3 основних компонентів;
Передній контролер – це індексна сторінка, яка визначатиме HTML-код для завантаження. Це гарантує, що наш додаток матиме єдину точку входу. Це дасть нам більше контролю над програмою.
Бізнес-логіка – тут буде PHP-код для взаємодії з базою даних. Це дозволить нам відокремити бізнес-логіку від презентації, що полегшить обслуговування нашої програми
думки – це міститиме HTML-код. У нас буде дві сторінки, а саме;
- opinion.html.php – тут міститиметься HTML-код із запитанням і параметрами
- results.html.php – тут буде містити HTML-код, який відображає результати опитування громадської думки
Зроблені припущення
Опитування громадської думки поставить питання –
Який твій улюблений JavaScript Бібліотека?
Відповіді були б
- JQuery
- MooTools
- Бібліотека 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); } } ?>
ТУТ,
- “public function __construct()” – це метод конструктора класу, який використовується для встановлення з’єднання з базою даних
- «відкрита функція execute_query(…)» — це метод для виконання таких запитів, як вставка, оновлення та видалення
- «вибір загальнодоступної функції» — це метод отримання даних із база даних і повернення числового масиву.
- «Публічна функція insert(…)» — це метод вставки, який викликає метод 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 = new Opinion_poll_model();” створює екземпляр класу бізнес-логіки
- «if (count($_POST) == 1)…» виконує перевірку даних і використовує JavaСценарій для відображення вікна повідомлення, якщо за кандидата не було проголосовано.
- «if (count($_POST) > 1)…» перевіряє, чи було вибрано голосування, підраховуючи кількість елементів у масиві $_POST. Якщо жоден елемент не вибрано, $_POST міститиме лише надісланий елемент. Якщо кандидата було обрано, масив $_POST буде складатися з двох елементів: подання та голосування. Цей код також використовується для вставки нового запису про голосування та відображення сторінки результатів
- "вихід;" використовується для припинення виконання сценарію після відображення результатів, щоб форма опитування не відображалася.
- “вимагати 'opinion.html.php';” відображає форму опитування, якщо нічого не вибрано.
Давайте тепер створимо перегляди. opinion.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 і натисніть кнопку OK. Ви отримаєте сторінку результатів, схожу на наведену нижче.
Підсумки
- Поділ вашої програми на бізнес-логіку, передні рівні перегляду контролера є хорошою практикою розробки програми
- JavaСценарій корисний для виконання перевірки на стороні клієнта
- Рекомендовано використовувати file.html.php для файлів, які містять і HTML, і PHP коди
- Додаток для опитування громадської думки демонструє, як знання, отримані на попередніх уроках, можна об’єднати для розробки робочої програми з серверною частиною бази даних.