مشاريع PHP: إنشاء تطبيق لاستطلاع الرأي
في مشروع PHP هذا, سنقوم بإنشاء تطبيق لاستطلاع الرأي.
وسيتكون استطلاع الرأي من 3 مكونات رئيسية؛
وحدة تحكم أمامية - هذه هي صفحة الفهرس التي ستحدد كود HTML الذي سيتم تحميله. سيضمن هذا أن تطبيقنا لديه نقطة دخول واحدة. وهذا سيمنحنا المزيد من السيطرة على التطبيق.
منطق الأعمال - سيحتوي هذا على كود PHP للتفاعل مع قاعدة البيانات. سيسمح لنا ذلك بفصل منطق العمل عن العرض التقديمي مما يسهل صيانة تطبيقنا
المشاهدات - سيحتوي هذا على كود HTML. سيكون لدينا صفحتين وهما؛
- الرأي.html.php – سيحتوي هذا على كود HTML مع السؤال والخيارات
- results.html.php – سيحتوي هذا على كود HTML الذي يعرض نتائج استطلاع الرأي
الافتراضات المقدمة
استطلاع الرأي سيطرح السؤال –
ما هو المفضل لديك Javaسيناريو مكتبة؟
الإجابات ستكون
- مسج
- موتولز
- مكتبة YUI
- توهج
فيما يلي خطوات إنشاء التطبيق –
الخطوة 1) الاتصال بقاعدة البيانات
هذا القسم يفترض المعرفة MySQL وكيفية إدارتها، إذا لم تكن على دراية بها MySQL، تحقق لدينا دروس SQL والقسم الخاص به.
سيحتوي تطبيقنا على جدول واحد فقط يحتوي على 3 حقول وهي؛
- المعرف - رقم الإنشاء التلقائي كمفتاح أساسي
- الاختيار – الرقم الذي يمثل المرشح الرئاسي
- 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.
- "الوظيفة العامة __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();" إنشاء مثيل لفئة منطق الأعمال
- "إذا (العدد($_POST) == 1)..." يقوم بالتحقق من صحة البيانات واستخدامها Javaبرنامج نصي لعرض مربع رسالة إذا لم يتم التصويت لأي مرشح.
- "if (count($_POST) > 1)..." يتحقق مما إذا تم تحديد التصويت عن طريق حساب عدد العناصر في المصفوفة $_POST. إذا لم يتم تحديد أي عنصر، فسيحتوي $_POST على عنصر الإرسال فقط. إذا تم اختيار مرشح، فستحتوي المصفوفة $_POST على عنصرين، عنصر الإرسال والتصويت. يُستخدم هذا الرمز أيضًا لإدراج سجل تصويت جديد ثم عرض صفحة النتائج
- يتم استخدام "exit;" لإنهاء تنفيذ البرنامج النصي بعد عرض النتائج بحيث لا يتم عرض نموذج استطلاع الرأي.
- "تتطلب 'opinion.html.php'؛" يعرض نموذج استطلاع الرأي إذا لم يتم تحديد أي شيء.
دعونا الآن إنشاء وجهات النظر. الرأي.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) اختبار تطبيقنا
بافتراض أنك قمت بحفظ الملفات في مجلد استطلاع الرأي، انتقل إلى عنوان URL http://localhost/opinionpoll/
إذا قمت بالنقر فوق زر موافق دون تحديد مكتبة JS، فستحصل على مربع الرسالة التالي.
حدد مكتبة JS ثم انقر فوق زر موافق. سوف تحصل على صفحة النتائج مشابهة لتلك الموضحة أدناه.
الملخص
- يعد تقسيم التطبيق الخاص بك إلى منطق الأعمال وطبقات عرض وحدة التحكم الأمامية ممارسة جيدة لتصميم التطبيق
- Javaيعد البرنامج النصي مفيدًا لإجراء التحقق من جانب العميل
- من الممارسات البرمجية الجيدة استخدام file.html.php للملفات التي تحتوي على كلٍ من HTML و رموز PHP
- يوضح تطبيق استطلاع الرأي كيف يمكن تجميع المعرفة المستفادة في الدروس السابقة معًا لتطوير تطبيق عملي مع قاعدة بيانات خلفية.