PHP projektid: looge arvamusküsitluse rakendus

Selles PHP projektis, hakkame looma arvamusküsitluse rakenduse.

Arvamusküsitlus koosneb kolmest põhikomponendist;

Eesmine kontroller – see on registrileht, mis määrab laaditava HTML-koodi. See tagab, et meie rakendusel on üks sisenemispunkt. See annab meile rakenduse üle suurema kontrolli.

Äriloogika – see sisaldab PHP-koodi andmebaasiga suhtlemiseks. See võimaldab meil äriloogikat esitlusest eraldada, muutes meie rakenduse hõlpsaks hooldamiseks

views – see sisaldab HTML-koodi. Meil on kaks lehekülge nimelt;

  • vélemény.html.php – see sisaldab HTML-koodi koos küsimuse ja valikutega
  • results.html.php – see sisaldab HTML-koodi, mis kuvab arvamusküsitluse tulemused

Tehtud oletused

Arvamusküsitluses esitatakse küsimus –

Mis on su lemmik JavaScript Raamatukogu?

Vastused oleksid

  • JQuery
  • MooTools
  • YUI raamatukogu
  • Kuma

Siin on rakenduse loomise sammud -

1. samm) Andmebaasi ühenduvus

See jaotis eeldab teadmisi MySQL ja kuidas seda manustada, kui te pole nendega tuttav MySQL, kontrollige meie SQL õpetused sektsiooni.

Meie rakenduses on ainult üks tabel, milles on kolm välja;

  • id – primaarvõtmena numbri automaatne genereerimine
  • valik – presidendikandidaati tähistav number
  • ts – hääletuse ajatempel

Allolev skript loob meie tabeli 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`)

);
?>

2. samm) meie rakenduse kodeerimine

Loome nüüd oma äriloogikakihi, mis haldab andmebaasi ühenduvust. 'arvamus_küsitlus_mudel.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);

    }

}

?>

SIIN,

  • "avalik funktsioon __construct()" on klassikonstruktori meetod, mida kasutatakse andmebaasiühenduse loomiseks
  • "avalik funktsioon execute_query(…)" on meetod selliste päringute täitmiseks nagu lisamine, värskendamine ja kustutamine
  • "Avaliku funktsiooni valimine" on meetod andmete hankimiseks rakendusest andmebaas ja numbrimassiivi tagastamine.
  • "avalik funktsioon insert (…)" on lisamismeetod, mis kutsub välja execute_query meetodi.
  • "avalik funktsioon __destruct()" on klasside hävitaja, mis sulgeb andmebaasiühenduse.

Loome nüüd eesmise kontrolleri 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';

?>

SIIN,

  • "nõua 'arvamus_küsitluse_mudel.php';" laadib äriloogika klassi
  • "$mudel = new Opinion_poll_model();" loob äriloogikaklassi eksemplari
  • "if (count($_POST) == 1)…" teostab andmete valideerimise ja kasutab JavaSkript sõnumikasti kuvamiseks, kui kandidaadi poolt pole hääletatud.
  • “if (count($_POST) > 1)…” kontrollib, kas hääl on valitud, loendades massiivi $_POST üksuste arvu. Kui ühtegi üksust pole valitud, sisaldab $_POST ainult esitatavat üksust. Kui kandidaat on valitud, koosneb massiivi $_POST kaks elementi, esitamise ja hääletamise üksus. Seda koodi kasutatakse ka uue hääletuskirje sisestamiseks ja seejärel tulemuste lehe kuvamiseks
  • "Välju"; kasutatakse skripti täitmise lõpetamiseks pärast tulemuste kuvamist, nii et arvamusküsitluse vormi ei kuvata.
  • "nõua arvamust.html.php";" kuvab arvamusküsitluse vormi, kui midagi pole valitud.

Loome nüüd vaated. arvamus.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>

3. samm) meie rakenduse testimine

Eeldades, et olete failid salvestanud arvamusküsitluse kausta, sirvige kausta URL http://localhost/opinionpoll/

Arvamusküsitluse rakenduse testimine

Kui klõpsate nuppu OK ilma JS-i teeki valimata, kuvatakse järgmine teatekast.

Arvamusküsitluse rakenduse testimine

Valige JS-teek ja klõpsake nuppu OK. Saate tulemuste lehe, mis sarnaneb allpool näidatud leheküljega.

Arvamusküsitluse rakenduse testimine

kokkuvõte

  • Rakenduse jagamine äriloogikaks, esikontrolleri vaatekihtideks on hea rakenduse kujundamise tava
  • JavaSkript on kasulik kliendipoolseks valideerimiseks
  • Hea programmeerimise tava on kasutada faili.html.php failide jaoks, mis sisaldavad nii HTML-i kui ka PHP koodid
  • Arvamusküsitluse rakendus näitab, kuidas eelmistes tundides omandatud teadmisi saab arendamiseks kokku panna.ping toimiv rakendus andmebaasi taustsüsteemiga.

Võta see postitus kokku järgmiselt: