Projekty PHP: Vytvořte aplikaci pro průzkum veřejného mínění

V tomto projektu PHP, vytvoříme aplikaci pro průzkum veřejného mínění.

Průzkum veřejného mínění se bude skládat ze 3 hlavních složek;

Přední ovladač – toto je stránka indexu, která určí kód HTML, který se má načíst. To zajistí, že naše aplikace bude mít jeden vstupní bod. To nám poskytne větší kontrolu nad aplikací.

Obchodní logika – bude obsahovat PHP kód pro interakci s databází. To nám umožní oddělit obchodní logiku od prezentace a zjednodušit údržbu naší aplikace

Zobrazení – bude obsahovat HTML kód. Budeme mít dvě stránky, jmenovitě;

  • názor.html.php – bude obsahovat HTML kód s otázkou a možnostmi
  • results.html.php – bude obsahovat HTML kód, který zobrazí výsledky průzkumu veřejného mínění

Vytvořené předpoklady

Průzkum veřejného mínění položí otázku –

Jaký je tvůj oblíbený JavaScénář Knihovna?

Odpovědi by byly

  • JQuery
  • MooTools
  • Knihovna YUI
  • Záře

Zde jsou kroky k vytvoření aplikace –

Krok 1) Připojení k databázi

Tato část předpokládá znalost MySQL a jak jej spravovat, pokud s nimi nejste obeznámeni MySQL, zkontrolujte naše SQL tutoriály sekce.

Naše aplikace bude mít jednu tabulku pouze se 3 poli, a to;

  • id – automaticky vygenerované číslo jako primární klíč
  • volba – číslo představující kandidáta na prezidenta
  • ts – časové razítko pro hlasování

Skript níže vytvoří naši tabulku 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`)

);
?>

Krok 2) Kódování naší aplikace

Pojďme nyní vytvořit naši vrstvu obchodní logiky, která se bude starat o konektivitu databáze. '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);

    }

}

?>

TADY,

  • “veřejná funkce __construct()” je metoda konstruktoru třídy, která se používá k navázání připojení k databázi
  • „veřejná funkce execute_query(…)“ je metoda pro provádění dotazů, jako je vložení, aktualizace a odstranění
  • „výběr veřejné funkce“ je metoda pro získávání dat z databáze a vrací číselné pole.
  • “public function insert(…)” je metoda insert, která volá metodu execute_query.
  • „veřejná funkce __destruct()“ je destruktor třídy, který uzavírá připojení k databázi.

Nyní vytvoříme přední ovladač 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';

?>

TADY,

  • “vyžadovat 'opinion_poll_model.php';” načte třídu obchodní logiky
  • “$model = new Opinion_poll_model();” vytvoří instanci třídy obchodní logiky
  • „if (count($_POST) == 1)…“ provede ověření a použití dat JavaSkript pro zobrazení okna se zprávou, pokud nebyl zvolen žádný kandidát.
  • „if (count($_POST) > 1)…“ zkontroluje, zda byl vybrán hlas, spočítáním počtu položek v poli $_POST. Pokud nebyla vybrána žádná položka, $_POST bude obsahovat pouze položku pro odeslání. Pokud byl vybrán kandidát, pole $_POST bude obsahovat dva prvky, položku odeslat a hlasovat. Tento kód se také používá k vložení nového záznamu o hlasování a zobrazení stránky s výsledky
  • "výstup;" se používá k ukončení provádění skriptu po zobrazení výsledků, aby se nezobrazoval formulář pro průzkum veřejného mínění.
  • “vyžadovat 'opinion.html.php';” zobrazí formulář pro průzkum veřejného mínění, pokud nebylo nic vybráno.

Nyní vytvoříme pohledy. názor.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>

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

Krok 3) Testování naší aplikace

Za předpokladu, že jste soubory uložili do složky pro průzkum veřejného mínění, přejděte na adresu URL http://localhost/opinionpoll/

Testování aplikace pro průzkum veřejného mínění

Pokud kliknete na tlačítko OK bez výběru knihovny JS, zobrazí se následující okno se zprávou.

Testování aplikace pro průzkum veřejného mínění

Vyberte knihovnu JS a klikněte na tlačítko OK. Získáte stránku s výsledky podobnou té, která je zobrazena níže.

Testování aplikace pro průzkum veřejného mínění

Shrnutí

  • Rozdělení vaší aplikace na obchodní logiku a vrstvy zobrazení předního ovladače je dobrou praxí při návrhu aplikací
  • JavaSkript je užitečný pro provádění ověřování na straně klienta
  • Je dobrou programátorskou praxí používat soubor.html.php pro soubory, které obsahují jak HTML, tak i PHP kódy
  • Aplikace pro průzkum veřejného mínění demonstruje, jak lze znalosti získané v předchozích lekcích spojit a vytvořit funkční aplikaci s databázovým back-endem.

Shrňte tento příspěvek takto: