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ı opinionpoll klasörüne kaydettiğinizi varsayarak, aşağıdaki klasöre göz atın: URL http://localhost/opinionpoll/
Herhangi bir JS kütüphanesi seçmeden Tamam butonuna tıklarsanız aşağıdaki mesaj kutusunu alırsınız.
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.
Ö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 nasıl bir araya getirilerek geliştirilebileceğini göstermektedir.ping Veritabanı tabanlı çalışan bir uygulama.



