Dans ce projet PHP , nous allons créer une application de sondage d'opinion.
Le sondage d'opinion comprendra 3 éléments principaux;
Contrôleur frontal - c'est la page d'index qui déterminera le code HTML à charger. Cela garantira que notre application dispose d'un point d'entrée unique. Cela nous donnera plus de contrôle sur l'application.
Business Logic - il contiendra le code PHP pour interagir avec la base de données. Cela nous permettra de séparer la logique métier de la présentation, ce qui rend notre application facile à maintenir
Vues - cela contiendra le code HTML. Nous aurons deux pages à savoir;
- opinion.html.php - cela contiendra le code HTML avec la question et les options
- results.html.php - il contiendra le code HTML qui affiche les résultats du sondage d'opinion
Hypothèses faites
Le sondage d'opinion posera la question -
Quelle est votre bibliothèque JavaScript préférée?
Les réponses seraient
- JQuery
- MooTools
- Bibliothèque YUI
- Briller
Voici les étapes pour créer l'application -
Étape 1) Connectivité de la base de données
Cette section suppose une connaissance de MySQL et comment l'administrer, si vous n'êtes pas familier avec ces MySQL, consultez notre section tutoriels SQL.
Notre application n'aura qu'une seule table avec 3 champs à savoir;
- id - numéro généré automatiquement comme clé primaire
- choix - le nombre représentant un candidat à la présidentielle
- ts - l'horodatage du vote
Le script ci-dessous crée notre table js_libraries.
Étape 2) Codage de notre application
Créons maintenant notre couche de logique métier qui gérera la connectivité de la base de données. '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);}}?>
ICI,
- «Public function __construct ()» est la méthode du constructeur de classe utilisée pour établir la connexion à la base de données
- «Public function execute_query (…)» est la méthode pour exécuter des requêtes telles que l'insertion, la mise à jour et la suppression
- «Public function select» est la méthode pour récupérer des données de la base de données et renvoyer un tableau numérique.
- «Public function insert (…)» est la méthode d'insertion qui appelle la méthode execute_query.
- «Public function __destruct ()» est le destructeur de classe qui ferme la connexion à la base de données.
Créons maintenant le contrôleur frontal 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
ICI,
- "Require 'opinion_poll_model.php';" charge la classe de logique métier
- "$ Model = new Opinion_poll_model ();" crée une instance de la classe de logique métier
- «If (count ($ _ POST) == 1)…» effectue la validation des données et utilise JavaScript pour afficher une boîte de message si aucun candidat n'a été voté.
- «If (count ($ _ POST)> 1)…» vérifie si un vote a été sélectionné en comptant le nombre d'éléments dans le tableau $ _POST. Si aucun élément n'a été sélectionné, le $ _POST ne contiendra que l'élément de soumission. Si un candidat a été choisi, le tableau $ _POST comprendra deux éléments, l'élément de soumission et de vote. Ce code est également utilisé pour insérer un nouvel enregistrement de vote puis afficher la page de résultats
- "sortir;" permet de terminer l'exécution du script après l'affichage des résultats afin que le formulaire de sondage d'opinion ne soit pas affiché.
- "Require 'opinion.html.php';" affiche le formulaire du sondage d'opinion si rien n'a été sélectionné.
Créons maintenant les vues. 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:
Étape 3) Test de notre application
En supposant que vous avez enregistré les fichiers dans le dossier opinionpoll, accédez à l'URL http: // localhost / opinionpoll /
Si vous cliquez sur le bouton OK sans sélectionner une bibliothèque JS, vous obtiendrez la boîte de message suivante.
Sélectionnez une bibliothèque JS puis cliquez sur le bouton OK. Vous obtiendrez la page de résultats similaire à celle illustrée ci-dessous.
Résumé
- Diviser votre application en logique métier, les couches de vue du contrôleur avant est une bonne pratique de conception d'application
- JavaScript est utile pour effectuer la validation côté client
- C'est une bonne pratique de programmation d'utiliser file.html.php pour les fichiers contenant à la fois des codes HTML et PHP
- L'application de sondage d'opinion montre comment les connaissances acquises dans les leçons précédentes peuvent être rassemblées pour développer une application fonctionnelle avec un back-end de base de données.