PHP Projeleri: Bir Kamuoyu Anketi Uygulaması Oluşturun
⚡ Akıllı Özet
Bu PHP projesi, önceki dersleri bir araya getirerek sıfırdan bir kamuoyu yoklama uygulaması oluşturuyor ve çalışan bir örnek haline getiriyor. Uygulamayı bir ön kontrolcü, bir iş mantığı modeli ve görünüm dosyalarına ayırıyor, ardından favori için verilen oyları saklıyor ve sayıyor. JavaKomut dosyası kütüphanesi MySQL veri tabanı.

PHP Kullanarak Kamuoyu Anketi Uygulaması Nasıl Oluşturulur?
Bu PHP projesinde, bir kamuoyu yoklama uygulaması oluşturacağız.
Kamuoyu yoklaması 3 ana bileşenden oluşacaktır:
Ön denetleyici – Bu, yüklenecek HTML kodunu belirleyecek olan indeks sayfasıdır. Bu, uygulamamızın tek bir giriş noktasına sahip olmasını sağlar ve bu da uygulama üzerinde daha fazla kontrol sahibi olmamıza olanak tanır.
İş mantığı – Bu kısım, veritabanıyla etkileşim kurmak için kullanılan PHP kodunu içerecektir. Bu sayede iş mantığını sunumdan ayırarak uygulamamızın bakımını kolaylaştırabiliriz.
Görünümler – Bu, HTML kodunu içerecektir. İki sayfamız olacak, bunlar şunlardır:
- 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ında şu soru sorulacak: En sevdiğiniz nedir? JavaSenaryo Kütüphane?
Cevaplar şöyle olurdu:
- JQuery
- mooTools
- YUI Kitaplığı
- Parıltı
Başvuruyu oluşturmak için izlenecek adımlar şunlardır.
Adım 1) Veritabanı Bağlantısı
Bu bölüm aşağıdaki konularda bilgi sahibi olduğunuzu varsayar: MySQL ve nasıl uygulanacağı. Eğer bu konuda bilgi sahibi değilseniz MySQL, kontrol edin SQL eğitimleri Bölüm.
Uygulamamızda yalnızca 3 alandan oluşan tek bir tablo olacaktır:
- id – birincil anahtar olarak otomatik olarak oluşturulan sayı
- seçim – seçileni temsil eden sayı JavaKomut dosyası kütüphanesi
- ts – oylamanın zaman damgası
Aşağıdaki script js_libraries tablomuzu oluşturur.
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 olan iş mantığı katmanımızı oluşturalım. idea_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_connect_error()); if (!mysqli_select_db($this->db_handle, $this->db)) die("Unable to select database: " . mysqli_error($this->db_handle)); } private function execute_query($sql_stmt) { $result = mysqli_query($this->db_handle, $sql_stmt); // execute SQL statement return !$result ? FALSE : TRUE; } public function select($sql_stmt) { $result = mysqli_query($this->db_handle, $sql_stmt); if (!$result) die("Database access failed: " . mysqli_error($this->db_handle)); $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
- “public function execute_query(…)” metodu, ekleme, güncelleme ve silme gibi sorguları çalıştırmak için kullanılır.
- “public function select(…)” ifadesi, verileri almak için kullanılan yöntemdir. veritabanı ve bir dizi döndürüyor.
- “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 kontrol ünitesini oluşturalım. index.php
<?php require 'opinion_poll_model.php'; $model = new Opinion_poll_model(); if (count($_POST) == 1) { echo "<script>alert(1);</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,3)"; $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 JavaOy verilmeyen adaylar için bir mesaj kutusu görüntüleyen komut dosyası.
- “if (count($_POST) > 1)…” ifadesi, $_POST dizisindeki öğe sayısını sayarak bir oy seçilip seçilmediğini kontrol eder. Hiçbir öğe seçilmemişse, $_POST yalnızca gönder öğesini içerecektir. Bir kütüphane seçilmişse, $_POST dizisi iki öğe içerecektir: gönder ve oy öğeleri. Bu kod ayrıca yeni bir oy kaydı ekler ve ardından sonuç sayfasını görüntüler.
- Sonuçlar görüntülendikten sonra komut dosyasının yürütülmesini sonlandırmak için "exit;" komutu kullanılır, böylece anket formu görüntülenmez.
- “'opinion.html.php' gerektir;” Hiçbir şey seçilmemişse kamuoyu yoklaması formunu görüntüler.
Şimdi görünümleri 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" />MooTools <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ı opinionpoll klasörüne kaydettiğinizi varsayarak, aşağıdaki klasöre göz atın: URL http://localhost/opinionpoll/
Bir JS kütüphanesi seçmeden Tamam düğmesine tıklarsanız, aşağıdaki mesaj kutusunu göreceksiniz.
Bir JavaScript kütüphanesi seçin, ardından Tamam düğmesine tıklayın. Aşağıda gösterilene benzer bir sonuç sayfası elde edeceksiniz.
Kamuoyu yoklama uygulamasını iyileştirmenin yolları
Bu proje sağlam bir temel oluşturuyor. Üretime hazır hale getirmek için aşağıdaki iyileştirmeleri göz önünde bulundurun:
- Hazırlanmış ifadeleri kullanın Modelde, birleştirilmiş sorgulardan kaynaklanan SQL enjeksiyonu riskini ortadan kaldırmak amaçlanmıştır.
- Çifte oy kullanmayı önleyin Çerez, oturum bayrağı veya seçmenin IP adresinin zaman damgasıyla birlikte kaydedilmesi yoluyla.
- Yüzde oranlarını ve bir çubuk grafiği gösterin. Sonuç sayfasında ham sayılar yerine, sonucu daha net görebilmek için veriler yer alır.
- Anketi dinamik hale getirin Soruyu ve seçenekleri veritabanında saklayarak, anket kodunu istediğiniz zaman yeniden kullanabilirsiniz.



