PHP Projeleri: Bir Kamuoyu Anketi Uygulaması Oluşturun

Bu PHP projesinde, Bir kamuoyu yoklaması uygulaması oluşturacağız.

Kamuoyu yoklaması 3 ana bileşenden oluşacak;

Ön denetleyici – yüklenecek HTML kodunu belirleyecek dizin sayfasıdır. Bu, uygulamamızın tek bir giriş noktasına sahip olmasını sağlayacaktır. Bu bize uygulama üzerinde daha fazla kontrol sağlayacak.

İş mantığı – bu, veritabanıyla etkileşime geçmek için PHP kodunu içerecektir. Bu, iş mantığını sunumdan ayırmamıza olanak tanıyacak ve uygulamamızın bakımını kolaylaştıracaktır.

Görünümler – bu HTML kodunu içerecektir. İki sayfamız olacak;

  • idea.html.php – bu soru ve seçeneklerin bulunduğu HTML kodunu içerecektir
  • results.html.php – bu, kamuoyu yoklaması sonuçlarını görüntüleyen HTML kodunu içerecektir

Yapılan varsayımlar

Kamuoyu yoklaması şu soruyu soracak:

Favorin ne JavaSenaryo Kütüphane?

Cevaplar şöyle olurdu

  • JQuery
  • mooTools
  • YUI Kitaplığı
  • Parıltı

İşte uygulamayı oluşturma adımları:

Adım 1) Veritabanı Bağlantısı

Bu bölüm aşağıdaki konularda bilgi sahibi olduğunuzu varsayar: MySQL ve eğer bunlara aşina değilseniz, nasıl yönetileceği MySQL, kontrol edin SQL eğitimleri Bölüm.

Uygulamamız sadece 3 alanlı bir tabloya sahip olacak;

  • id – numarayı birincil anahtar olarak otomatik olarak oluştur
  • seçim – bir başkan adayını temsil eden sayı
  • ts – oylamanın zaman damgası

Aşağıdaki script js_libraries tablomuzu oluşturur.

<?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`)

);
?>

Adım 2) Uygulamamızı kodlamak

Şimdi veritabanı bağlantısını yönetecek iş mantığı katmanımızı oluşturalım. 'opinion_anket_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);

    }

}

?>

İŞTE,

  • “public function __construct()”, veritabanı bağlantısını kurmak için kullanılan sınıf yapıcı yöntemidir
  • “genel işlev çalıştır_sorgu(…)” ekleme, güncelleme ve silme gibi sorguları yürütme yöntemidir
  • “genel işlev seçimi”, veriyi bilgisayardan alma yöntemidir. veritabanı ve sayısal bir dizi döndürme.
  • “public function insert(…)”, executive_query yöntemini çağıran ekleme yöntemidir.
  • “public function __destruct()” veritabanı bağlantısını kapatan sınıf yıkıcıdır.

Şimdi ön denetleyiciyi oluşturalım 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';

?>

İŞTE,

  • “'opinion_poll_model.php' gerektir;” iş mantığı sınıfını yükler
  • “$model = yeni Opinion_poll_model();” iş mantığı sınıfının bir örneğini oluşturur
  • “if (count($_POST) == 1)…” veri doğrulamayı gerçekleştirir ve kullanır JavaHerhangi bir adaya oy verilmediğinde bir mesaj kutusu görüntüleyen komut dosyası.
  • “if (count($_POST) > 1)…” $_POST dizisindeki öğelerin sayısını sayarak bir oy seçilip seçilmediğini kontrol eder. Hiçbir öğe seçilmemişse $_POST yalnızca gönderilen öğeyi içerecektir. Bir aday seçilmişse, $_POST dizisi iki öğeye sahip olacaktır: gönder ve oy ver öğesi. Bu kod aynı zamanda yeni bir oy kaydı eklemek ve ardından sonuçlar sayfasını görüntülemek için de kullanılır.
  • "çıkış;" Sonuçlar görüntülendikten sonra fikir anketi formunun görüntülenmemesi için komut dosyasının yürütülmesini sonlandırmak için kullanılır.
  • “'opinion.html.php' gerektir;” Hiçbir şey seçilmemişse kamuoyu yoklaması formunu görüntüler.

Şimdi view’ları oluşturalım. görüş.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>

sonuçlar.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>

Adım 3) Uygulamamızı test etme

Dosyaları görüş anketi klasörüne kaydettiğinizi varsayarak http://localhost/opinionpoll/ URL'sine göz atın.

Bir Kamuoyu Anketi Uygulamasını Test Etme

Herhangi bir JS kütüphanesi seçmeden Tamam butonuna tıklarsanız aşağıdaki mesaj kutusunu alırsınız.

Bir Kamuoyu Anketi Uygulamasını Test Etme

Bir JS kütüphanesi seçin ve ardından Tamam düğmesine tıklayın. Aşağıda gösterilene benzer bir sonuç sayfası alacaksınız.

Bir Kamuoyu Anketi Uygulamasını Test Etme

ÖZET

  • Uygulamanızı iş mantığına (ön denetleyici görünüm katmanlarına) bölmek iyi bir uygulama tasarımı uygulamasıdır
  • JavaKomut dosyası, istemci tarafında doğrulama gerçekleştirmek için yararlıdır
  • Hem HTML hem de HTML içeren dosyalar için file.html.php kullanmak iyi bir programlama uygulamasıdır. PHP kodları
  • Kamuoyu yoklaması uygulaması, önceki derslerde öğrenilen bilgilerin, veritabanı arka ucuyla çalışan bir uygulama geliştirmek için nasıl bir araya getirilebileceğini gösterir.