Projek PHP: Buat Aplikasi Polling Pendapat

Isi kandungan:

Anonim

Dalam projek PHP ini , kami akan membuat aplikasi tinjauan pendapat.

Tinjauan pendapat akan terdiri daripada 3 komponen utama;

Pengawal depan - ini adalah halaman indeks yang akan menentukan kod HTML yang akan dimuat. Ini akan memastikan bahawa aplikasi kita mempunyai satu titik masuk. Ini akan memberi kita lebih banyak kawalan terhadap aplikasi tersebut.

Logik Perniagaan - ini akan mengandungi kod PHP untuk berinteraksi dengan pangkalan data. Ini akan membolehkan kita memisahkan logik perniagaan dari pembentangan menjadikan aplikasi kita mudah dijaga

Paparan - ini akan mengandungi kod HTML. Kami akan mempunyai dua halaman iaitu;

  • pendapat.html.php - ini akan mengandungi kod HTML dengan soalan dan pilihan
  • results.html.php - ini akan mengandungi kod HTML yang memaparkan hasil tinjauan pendapat

Andaian dibuat

Tinjauan pendapat akan mengemukakan soalan -

Apakah Perpustakaan JavaScript kegemaran anda?

Jawapannya pasti

  • JQuery
  • MooTools
  • Perpustakaan YUI
  • Bersinar

Berikut adalah langkah-langkah untuk membuat aplikasi -

Langkah 1) Kesambungan Pangkalan Data

Bahagian ini mengandaikan pengetahuan tentang MySQL dan cara mentadbirnya, jika anda tidak biasa dengan MySQL ini, periksa bahagian tutorial SQL kami.

Aplikasi kami akan mempunyai satu jadual hanya dengan 3 bidang iaitu;

  • id - menghasilkan nombor secara automatik sebagai kunci utama
  • pilihan - nombor yang mewakili calon presiden
  • ts - cap waktu untuk mengundi

Skrip di bawah membuat jadual js_libraries kami.

Langkah 2) Pengekodan aplikasi kami

Sekarang mari kita buat lapisan logik perniagaan kita yang akan menangani penyambungan pangkalan data. 'pendapat_poll_model.php'

db_handle = mysqli_connect($this->host, $this->uid, $this->pwd); //connect to MySQL serverif (!$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 statementreturn !$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);}}?>

DI SINI,

  • "Fungsi awam __construct ()" adalah kaedah pembina kelas yang digunakan untuk mewujudkan sambungan pangkalan data
  • "Public function execute_query (...)" adalah kaedah untuk melaksanakan pertanyaan seperti memasukkan, mengemas kini dan menghapus
  • "Fungsi publik pilih" adalah metode untuk mengambil data dari pangkalan data dan mengembalikan array angka.
  • “Public function insert (…)” adalah kaedah sisipan yang memanggil kaedah execute_query.
  • "Fungsi awam __destruct ()" adalah pemusnah kelas yang menutup sambungan pangkalan data.

Mari sekarang buat index.php pengawal depan

alert('You did not vote!');";}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 .= "
" . $ libraries [$i] . " Got:" . $result[0] . " votes

";}require 'results.html.php';exit;}require 'opinion.html.php';?>

DI SINI,

  • "Memerlukan 'pendapat_poll_model.php';" memuatkan kelas logik perniagaan
  • "$ Model = Opini_poll_model baru ();" mencipta contoh kelas logik perniagaan
  • "If (count ($ _ POST) == 1) ..." melakukan pengesahan data dan menggunakan JavaScript untuk memaparkan kotak pesan jika bukan calon telah dipilih.
  • "If (hitung ($ _ POST)> 1) ..." memeriksa apakah suara telah dipilih dengan menghitung jumlah item dalam array $ _POST. Sekiranya tidak ada item yang dipilih, $ _POST hanya akan mengandungi item hantar. Sekiranya calon telah dipilih, susunan $ _POST akan terdiri daripada dua elemen, iaitu item hantar dan undi. Kod ini juga digunakan untuk memasukkan catatan suara baru dan kemudian memaparkan halaman hasil
  • "Keluar;" digunakan untuk menghentikan pelaksanaan skrip setelah hasilnya dipaparkan sehingga bentuk tinjauan pendapat tidak ditampilkan.
  • "Memerlukan 'pendapat.html.php';" memaparkan borang tinjauan pendapat sekiranya tidak ada yang dipilih.

Mari sekarang buat pandangan. pendapat.html.php

JavaScript Libraries - Opinion Poll

JavaScript Libraries - Opinion Poll

What is your favorite JavaScript?

JQuery
MooToolsl
YUI Library
Glow

hasil.html.php

JavaScript Libraries Poll Results

Opinion Poll Results

What is your favorite JavaScript Library?

people have thus far taken part in this poll:

Langkah 3) Menguji aplikasi kami

Dengan andaian anda telah menyimpan fail-fail tersebut di folder pollpolling, layari URL http: // localhost / opinipoll

Sekiranya anda mengklik butang Ok tanpa memilih perpustakaan JS, anda akan mendapat kotak mesej berikut.

Pilih perpustakaan JS kemudian klik pada butang OK. Anda akan mendapat halaman hasil yang serupa dengan yang ditunjukkan di bawah.

Ringkasan

  • Membahagi aplikasi anda menjadi logik perniagaan, lapisan pandangan pengawal depan adalah amalan reka bentuk aplikasi yang baik
  • JavaScript berguna untuk melakukan pengesahan di sisi pelanggan
  • Merupakan amalan pengaturcaraan yang baik untuk menggunakan file.html.php untuk fail yang mengandungi kod HTML dan PHP
  • Aplikasi tinjauan pendapat menunjukkan bagaimana pengetahuan yang dipelajari dalam pelajaran sebelumnya dapat disatukan untuk mengembangkan aplikasi yang berfungsi dengan pangkalan data.