Proiecte PHP: Creați o aplicație pentru sondaj de opinie

În acest proiect PHP, vom crea o aplicație de sondaj de opinie.

Sondajul de opinie va consta din 3 componente majore;

Controler frontal – aceasta este pagina de index care va determina codul HTML care va fi încărcat. Acest lucru va asigura că aplicația noastră are un singur punct de intrare. Acest lucru ne va oferi mai mult control asupra aplicației.

Lociga afacerii – acesta va conține codul PHP pentru interacțiunea cu baza de date. Acest lucru ne va permite să separăm logica de afaceri de prezentare, făcând aplicația noastră ușor de întreținut

Vizualizări – acesta va conține codul HTML. Vom avea două pagini și anume;

  • opinion.html.php – acesta va conține codul HTML cu întrebarea și opțiunile
  • results.html.php – acesta va conține codul HTML care afișează rezultatele sondajului de opinie

Ipoteze făcute

Sondajul de opinie va pune întrebarea -

Care este preferata ta JavaScenariu Bibliotecă?

Răspunsurile ar fi

  • JQuery
  • MooTools
  • Biblioteca YUI
  • Strălucire

Iată pașii pentru a crea aplicația –

Pasul 1) Conectivitate la baza de date

Această secțiune presupune cunoștințe despre MySQL și cum să-l administrezi, dacă nu ești familiarizat cu acestea MySQL, verificați-ne Tutoriale SQL secţiune.

Aplicația noastră va avea un singur tabel cu 3 câmpuri și anume;

  • id – număr generat automat ca cheie primară
  • alegere – numărul care reprezintă un candidat la președinție
  • ts – marcajul de timp pentru vot

Scriptul de mai jos creează tabelul nostru 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`)

);
?>

Pasul 2) Codarea aplicației noastre

Să creăm acum stratul nostru de logică de afaceri care se va ocupa de conectivitatea bazei de date. „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);

    }

}

?>

AICI,

  • „Funcția publică __construct()” este metoda constructorului de clasă care este utilizată pentru a stabili conexiunea la baza de date
  • „funcția publică execute_query(…)” este metoda de executare a interogărilor precum inserarea, actualizarea și ștergerea
  • „Selectarea funcției publice” este metoda de preluare a datelor din Baza de date și returnând o matrice numerică.
  • „public function insert(…)” este metoda de inserare care apelează metoda execute_query.
  • „public function __destruct()” este destructorul de clasă care închide conexiunea la baza de date.

Acum să creăm controlerul frontal 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';

?>

AICI,

  • „necesită „opinion_poll_model.php”;” încarcă clasa de logică de afaceri
  • „$model = new Opinion_poll_model();” creează o instanță a clasei de logică de afaceri
  • „if (count($_POST) == 1)…” realizează validarea datelor și utilizează JavaScript pentru a afișa o casetă de mesaj dacă nu a fost votat un candidat.
  • „if (count($_POST) > 1)…” verifică dacă un vot a fost selectat prin numărarea numărului de articole din matricea $_POST. Dacă nu a fost selectat niciun articol, $_POST va conține doar articolul trimis. Dacă a fost ales un candidat, matricea $_POST va avea două elemente, elementul de trimitere și de vot. Acest cod este folosit și pentru a insera o nouă înregistrare de vot și apoi pentru a afișa pagina de rezultate
  • "Ieșire;" este utilizat pentru a termina execuția scriptului după ce rezultatele au fost afișate, astfel încât formularul de sondaj de opinie să nu fie afișat.
  • „necesită „opinion.html.php”;” afișează formularul sondajului de opinie dacă nu a fost selectat nimic.

Să creăm acum vederile. parere.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>

rezultate.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>

Pasul 3) Testarea aplicației noastre

Presupunând că ați salvat fișierele în folderul opinionpoll, navigați la adresa URL http://localhost/opinionpoll/

Testarea unei aplicații pentru sondaj de opinie

Dacă faceți clic pe butonul Ok fără a selecta o bibliotecă JS, veți primi următoarea casetă de mesaj.

Testarea unei aplicații pentru sondaj de opinie

Selectați o bibliotecă JS apoi faceți clic pe butonul OK. Veți obține o pagină de rezultate similară cu cea afișată mai jos.

Testarea unei aplicații pentru sondaj de opinie

Rezumat

  • Împărțirea aplicației în logica de afaceri, straturile de vizualizare a controlerului frontal este o practică bună de proiectare a aplicației
  • JavaScriptul este util pentru efectuarea validării clientului
  • Este o practică bună de programare să folosiți file.html.php pentru fișierele care conțin atât HTML, cât și coduri PHP
  • Aplicația sondajului de opinie demonstrează modul în care cunoștințele învățate în lecțiile anterioare pot fi combinate pentru a dezvolta o aplicație de lucru cu o bază de date back-end.

Rezumați această postare cu: