У цьому проекті 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.
Крок 2) Кодування нашого додатку
Давайте тепер створимо наш рівень бізнес-логіки, який буде обробляти підключення до бази даних. 'opinion_poll_model.php'
db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL serverif (!$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 statementreturn !$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 ()” - це метод конструктора класу, який використовується для встановлення підключення до бази даних
- “Public function execute_query (...)” - це метод для виконання таких запитів, як вставка, оновлення та видалення
- “Public function select” - це метод отримання даних із бази даних та повернення числового масиву.
- “Вставка публічної функції (...)” - це метод вставки, який викликає метод execute_query.
- “Public function __destruct ()” - це деструктор класу, який закриває підключення до бази даних.
Давайте тепер створимо фронт-контролер index.php
alert('You did not vote!');";}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 .= "";}require 'results.html.php';exit;}require 'opinion.html.php';?> " . $ libraries [$i] . " Got: " . $result[0] . " votes
ТУТ,
- “Вимагати 'opinion_poll_model.php';" завантажує клас бізнес-логіки
- “$ Model = new Opinion_poll_model ();” створює екземпляр класу бізнес-логіки
- “If (count ($ _ POST) == 1) ...” виконує перевірку даних та використовує JavaScript для відображення вікна повідомлення, якщо за кандидата не було проголосовано.
- “If (count ($ _ POST)> 1) ...“ перевіряє, чи було обрано голос, підраховуючи кількість елементів у масиві $ _POST. Якщо не вибрано жодного елемента, файл $ _POST міститиме лише елемент подання. Якщо обрано кандидата, масив $ _POST складатиме два елементи - елемент подання та голосування. Цей код також використовується для вставки нового запису про голосування, а потім відображення сторінки результатів
- "вихід;" використовується для завершення виконання сценарію після відображення результатів, щоб форма опитування думки не відображалася.
- “Вимагати 'opinion.html.php';” відображає форму опитування, якщо нічого не було обрано.
Давайте тепер створимо подання. opinion.html.php
JavaScript Libraries - Opinion Poll JavaScript Libraries - Opinion Poll
What is your favorite JavaScript?
results.html.php
JavaScript Libraries Poll Results Opinion Poll Results
What is your favorite JavaScript Library?
people have thus far taken part in this poll:
Крок 3) Тестування нашої програми
Якщо припустити, що ви зберегли файли в папці огляду, перейдіть за URL-адресою http: // localhost / opinionpoll /
Якщо натиснути кнопку Ok, не вибравши бібліотеку JS, ви отримаєте таке вікно повідомлення.
Виберіть бібліотеку JS, потім натисніть кнопку OK. Ви отримаєте сторінку результатів, подібну до наведеної нижче.
Резюме
- Поділ вашого додатка на бізнес-логіку, шари подання фронтального контролера є гарною практикою проектування додатків
- JavaScript корисний для здійснення перевірки на стороні клієнта
- Хорошою практикою програмування є використання file.html.php для файлів, що містять як HTML, так і PHP-коди
- Додаток для опитування громадської думки демонструє, як знання, отримані на попередніх уроках, можна об'єднати для розробки працюючого додатка з базою даних.