PHP Projects: Δημιουργήστε μια εφαρμογή δημοσκόπησης

Σε αυτό το έργο PHP, πρόκειται να δημιουργήσουμε μια εφαρμογή δημοσκόπησης.

Η δημοσκόπηση θα αποτελείται από 3 βασικά στοιχεία.

Μπροστινό χειριστήριο – αυτή είναι η σελίδα ευρετηρίου που θα καθορίσει τον κώδικα HTML που θα φορτωθεί. Αυτό θα διασφαλίσει ότι η εφαρμογή μας έχει ένα μόνο σημείο εισόδου. Αυτό θα μας δώσει περισσότερο έλεγχο στην εφαρμογή.

Επαγγελματική λογική – θα περιέχει τον κώδικα PHP για την αλληλεπίδραση με τη βάση δεδομένων. Αυτό θα μας επιτρέψει να διαχωρίσουμε την επιχειρηματική λογική από την παρουσίαση κάνοντας την εφαρμογή μας εύκολη στη συντήρηση

Προβολές – θα περιέχει τον κώδικα HTML. Θα έχουμε δύο σελίδες δηλαδή?

  • opinion.html.php – θα περιέχει τον κώδικα HTML με την ερώτηση και τις επιλογές
  • results.html.php – θα περιέχει τον κώδικα HTML που εμφανίζει τα αποτελέσματα της δημοσκόπησης

Υποθέσεις που έγιναν

Η δημοσκόπηση θα θέσει το ερώτημα -

Ποιό είναι το αγαπημένο σου το JavaScript Βιβλιοθήκη?

Οι απαντήσεις θα ήταν

  • JQuery
  • MooTools
  • Βιβλιοθήκη YUI
  • Λάμψη

Ακολουθούν τα βήματα για τη δημιουργία της εφαρμογής –

Βήμα 1) Συνδεσιμότητα βάσης δεδομένων

Αυτή η ενότητα προϋποθέτει τη γνώση MySQL και πώς να το χορηγήσετε, εάν δεν είστε εξοικειωμένοι με αυτά MySQL, ελέγξτε μας Εκμάθηση SQL τμήμα.

Η εφαρμογή μας θα έχει μόνο έναν πίνακα με 3 πεδία και συγκεκριμένα.

  • id – αυτόματη δημιουργία αριθμού ως πρωτεύον κλειδί
  • επιλογή – ο αριθμός που αντιπροσωπεύει έναν προεδρικό υποψήφιο
  • ts – η χρονική σήμανση για την ψηφοφορία

Το παρακάτω σενάριο δημιουργεί τον πίνακα 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) Κωδικοποίηση της εφαρμογής μας

Ας δημιουργήσουμε τώρα το επιχειρηματικό μας επίπεδο λογικής που θα χειρίζεται τη συνδεσιμότητα της βάσης δεδομένων. '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);

    }

}

?>

ΕΔΩ,

  • Η "δημόσια συνάρτηση __construct()" είναι η μέθοδος κατασκευής κλάσης που χρησιμοποιείται για τη δημιουργία της σύνδεσης της βάσης δεδομένων
  • Η "δημόσια συνάρτηση execute_query(...)" είναι η μέθοδος για την εκτέλεση ερωτημάτων όπως εισαγωγή, ενημέρωση και διαγραφή
  • Η "επιλογή δημόσιας συνάρτησης" είναι η μέθοδος για την ανάκτηση δεδομένων από το βάσεις δεδομένων και επιστρέφοντας έναν αριθμητικό πίνακα.
  • Η "δημόσια συνάρτηση insert(…)" είναι η μέθοδος εισαγωγής που καλεί τη μέθοδο execute_query.
  • Η "δημόσια συνάρτηση __destruct()" είναι ο καταστροφέας κλάσης που κλείνει τη σύνδεση της βάσης δεδομένων.

Ας δημιουργήσουμε τώρα το μπροστινό χειριστήριο 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';

?>

ΕΔΩ,

  • "απαιτείται 'opinion_poll_model.php';" φορτώνει την κλάση επιχειρηματικής λογικής
  • "$model = new Opinion_poll_model();" δημιουργεί ένα παράδειγμα της κατηγορίας επιχειρηματικής λογικής
  • "if (count($_POST) == 1)..." εκτελεί την επικύρωση δεδομένων και χρησιμοποιεί JavaScript για να εμφανίσει ένα μήνυμα box αν δεν έχει ψηφιστεί υποψήφιος.
  • Το "if (count($_POST) > 1)..." ελέγχει εάν έχει επιλεγεί μια ψήφος μετρώντας τον αριθμό των στοιχείων στον πίνακα $_POST. Εάν δεν έχει επιλεγεί κανένα στοιχείο, το $_POST θα περιέχει μόνο το αντικείμενο υποβολής. Εάν έχει επιλεγεί ένας υποψήφιος, ο πίνακας $_POST θα έχει δύο στοιχεία, το στοιχείο υποβολής και ψήφου. Αυτός ο κωδικός χρησιμοποιείται επίσης για την εισαγωγή ενός νέου αρχείου ψήφου και στη συνέχεια για την εμφάνιση της σελίδας αποτελεσμάτων
  • "έξοδος;" χρησιμοποιείται για τον τερματισμό της εκτέλεσης του σεναρίου μετά την εμφάνιση των αποτελεσμάτωνyed έτσι ώστε το έντυπο της δημοσκόπησης να μην εμφανίζεταιyed.
  • "απαιτείται "opinion.html.php";" εμφανίζει τη φόρμα δημοσκόπησης εάν δεν έχει επιλεγεί τίποτα.

Ας δημιουργήσουμε τώρα τις προβολές. opinion.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) Δοκιμή της εφαρμογής μας

Υποθέτοντας ότι έχετε αποθηκεύσει τα αρχεία στο φάκελο opinionpoll, περιηγηθείτε στη διεύθυνση URL http://localhost/opinionpoll/

Δοκιμή μιας εφαρμογής δημοσκόπησης

Εάν κάνετε κλικ στο κουμπί Ok χωρίς να επιλέξετε βιβλιοθήκη JS, θα λάβετε το ακόλουθοwing μήνυμα box.

Δοκιμή μιας εφαρμογής δημοσκόπησης

Επιλέξτε μια βιβλιοθήκη JS και, στη συνέχεια, κάντε κλικ στο κουμπί OK. Θα λάβετε τη σελίδα αποτελεσμάτων παρόμοια με αυτή που φαίνεται παρακάτω.

Δοκιμή μιας εφαρμογής δημοσκόπησης

Χαρακτηριστικά

  • Η διαίρεση της εφαρμογής σας σε επιχειρηματική λογική, τα επίπεδα προβολής μπροστινού ελεγκτή είναι μια καλή πρακτική σχεδιασμού εφαρμογής
  • Η JavaScript είναι χρήσιμη για την εκτέλεση επικύρωσης από την πλευρά του πελάτη
  • Είναι μια καλή πρακτική προγραμματισμού να χρησιμοποιείτε το file.html.php για αρχεία που περιέχουν τόσο HTML όσο και Κώδικες PHP
  • Η εφαρμογή δημοσκόπησης δείχνει πώς οι γνώσεις που αποκτήθηκαν στα προηγούμενα μαθήματα μπορούν να συνδυαστούν για την ανάπτυξη μιας εφαρμογής που λειτουργεί με μια βάση δεδομένων.