W tym projekcie PHP , mamy zamiar utworzyć aplikację sondażu.
Badanie opinii publicznej składać się będzie z 3 głównych elementów;
Kontroler frontowy - jest to strona indeksu, która określi kod HTML do załadowania. Zapewni to, że nasza aplikacja będzie miała jeden punkt wejścia. To da nam większą kontrolę nad aplikacją.
Logika biznesowa - będzie zawierała kod PHP do interakcji z bazą danych. Pozwoli nam to oddzielić logikę biznesową od prezentacji, dzięki czemu nasza aplikacja będzie łatwa w utrzymaniu
Widoki - będzie zawierał kod HTML. Będziemy mieć dwie strony, a mianowicie;
- opinia.html.php - będzie zawierała kod HTML z pytaniem i opcjami
- results.html.php - będzie zawierała kod HTML, który wyświetla wyniki ankiety
Przyjęte założenia
Badanie opinii zadaje pytanie -
Jaka jest Twoja ulubiona biblioteka JavaScript?
Odpowiedzi byłyby
- JQuery
- MooTools
- Biblioteka YUI
- Poświata
Oto kroki, aby utworzyć aplikację -
Krok 1) Łączność z bazą danych
Ta sekcja zakłada znajomość MySQL i tego, jak nią zarządzać, jeśli nie znasz tych MySQL, sprawdź naszą sekcję samouczków SQL.
Nasza aplikacja będzie miała tylko jedną tabelę z 3 polami, a mianowicie;
- id - automatycznie generuje numer jako klucz podstawowy
- wybór - liczba reprezentująca kandydata na prezydenta
- ts - sygnatura czasowa głosowania
Poniższy skrypt tworzy naszą tabelę js_libraries.
Krok 2) Zakodowanie naszej aplikacji
Utwórzmy teraz naszą warstwę logiki biznesowej, która będzie obsługiwać łączność z bazą danych. „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);}}?>
TUTAJ,
- „Funkcja publiczna __construct ()” to metoda konstruktora klasy używana do nawiązywania połączenia z bazą danych
- „Funkcja publiczna execute_query (…)” to metoda wykonywania zapytań, takich jak wstawianie, aktualizowanie i usuwanie
- „Wybór funkcji publicznej” to metoda pobierania danych z bazy danych i zwracania tablicy liczbowej.
- „Funkcja publiczna insert (…)” to metoda insert, która wywołuje metodę execute_query.
- „Funkcja publiczna __destruct ()” to destruktor klas, który zamyka połączenie z bazą danych.
Stwórzmy teraz front controller 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
TUTAJ,
- „Require '' opinii_poll_model.php ';” ładuje klasę logiki biznesowej
- „$ Model = new Opinion_poll_model ();” tworzy instancję klasy logiki biznesowej
- „If (count ($ _ POST) == 1)…” przeprowadza walidację danych i używa JavaScript do wyświetlenia okna komunikatu, jeśli nie został wybrany kandydat.
- „If (count ($ _ POST)> 1)…” sprawdza, czy głos został wybrany, zliczając liczbę elementów w tablicy $ _POST. Jeśli żaden element nie został wybrany, $ _POST będzie zawierał tylko przesyłany element. Jeśli kandydat został wybrany, tablica $ _POST będzie zawierać dwa elementy, element przesyłania i głosowania. Ten kod służy również do wstawiania nowego rekordu głosowania, a następnie wyświetlania strony wyników
- "Wyjście;" służy do przerwania wykonywania skryptu po wyświetleniu wyników, dzięki czemu ankieta nie jest wyświetlana.
- „Require 'opinii.html.php';” wyświetla formularz ankiety, jeśli nic nie zostało wybrane.
Stwórzmy teraz widoki. opinia.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:
Krok 3) Testowanie naszej aplikacji
Zakładając, że zapisałeś pliki w folderze opinii, przejdź do adresu URL http: // localhost / Opinionpoll /
Jeśli klikniesz przycisk OK bez wybierania biblioteki JS, pojawi się następujące okno komunikatu.
Wybierz bibliotekę JS, a następnie kliknij przycisk OK. Otrzymasz stronę wyników podobną do pokazanej poniżej.
Podsumowanie
- Dzieląc aplikację na logikę biznesową, warstwy widoku kontrolera frontowego to dobra praktyka projektowania aplikacji
- JavaScript jest przydatny do przeprowadzania walidacji po stronie klienta
- Dobrą praktyką programistyczną jest używanie file.html.php w przypadku plików zawierających zarówno kody HTML, jak i PHP
- Aplikacja do badania opinii publicznej pokazuje, w jaki sposób wiedzę zdobytą podczas poprzednich lekcji można wykorzystać w celu opracowania działającej aplikacji z zapleczem bazy danych.