سجل Codeigniter النشط: إدراج، تحديد، تحديث، حذف
البيانات هي السلالة لمعظم التطبيقات. يجب تخزين البيانات بطريقة يمكن تحليلها بشكل أكبر لتوفير رؤى وتسهيل قرارات العمل. عادة ما يتم تخزين البيانات في قاعدة البيانات. من بين الاهتمامات الرئيسية عند التفاعل مع قاعدة البيانات هو الأمان وسهولة الوصول والتطبيقات الخاصة بمورد قاعدة البيانات للغة الاستعلام الهيكلية (SQL).
السجل النشط هو نمط تصميمي يجعل من السهل التفاعل مع قاعدة البيانات بطريقة سهلة وآمنة وبليغة.
يتمتع السجل النشط بالمزايا التالية
- قم بإدراج وتحديث وحذف السجلات باستخدام سلاسل طريقة بسيطة للسجل النشط
- يرسل مدخلات المستخدم بطريقة آمنة باستخدام المعلمات
- يسمح لك بالعمل مع محركات قواعد بيانات متعددة مثل MySQLو SQL Server وما إلى ذلك دون إعادة كتابة رمز التطبيق
- يستخدم CodeIgniter برامج تشغيل خاصة بكل محرك قاعدة بيانات في الخلفية.
كيفية استخدام السجل النشط: مثال
في هذا البرنامج التعليمي، سنناقش قاعدة بيانات البرنامج التعليمي. سيكون لدينا جدولين، أحدهما يحتوي على الطلبات والآخر يحتوي على التفاصيل.
يفترض هذا البرنامج التعليمي أن لديك MySQL تم تثبيت قاعدة البيانات وتشغيلها.
قم بتشغيل البرامج النصية التالية لإنشاء قاعدة بيانات تعليمية:
CREATE SCHEMA ci_active_record; USE ci_active_record; CREATE TABLE `order_details` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) DEFAULT NULL, `item` varchar(245) DEFAULT NULL, `quantity` int(11) DEFAULT '0', `price` decimal(10,2) DEFAULT '0.00', `sub_total` decimal(10,2) DEFAULT '0.00', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1; CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` timestamp NULL DEFAULT NULL, `customer_name` varchar(245) DEFAULT NULL, `customer_address` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1;
يقوم الكود أعلاه بإنشاء قاعدة بيانات تسمى ci_active_record ويقوم بإنشاء جدولين هما orders وorder_details. يتم تحديد العلاقة بين الجدولين من خلال معرف العمود في orders وorder_id في جدول order_details.
تكوين قاعدة بيانات CodeIgniter
سنقوم الآن بتهيئة تطبيقنا ليكون قادرًا على التواصل مع قاعدة البيانات هذه.
افتح ملف تكوين قاعدة البيانات الموجود في application/config/database.php
حدد الأسطر التالية في ملف التكوين
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
قم بتحديث الكود أعلاه إلى التالي
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
ملحوظة: ستحتاج إلى استبدال اسم المستخدم وكلمة المرور بتلك التي تتوافق مع تكوينك MySQL.
بالإضافة إلى تفاصيل تكوين قاعدة البيانات، نحتاج أيضًا إلى إخبار CodeIgniter بتحميل مكتبة قاعدة البيانات عند تحميلها
الخطوة 1) افتح الملف التالي application/config/autoload.php
الخطوة 2) حدد موقع مكتبات مفاتيح صفيف $autoload وقم بتحميل مكتبة قاعدة البيانات كما هو موضح أدناه
$autoload['libraries'] = array('database');
هنا،
- يقوم الكود أعلاه بتحميل مكتبة قاعدة البيانات عند بدء تشغيل التطبيق
يقوم CodeIgniter بإدراج السجل النشط
لأغراض الاختبار، سنقوم بإنشاء وحدة تحكم ومسارات محددة سنستخدمها للتفاعل مع تطبيقنا عبر السجل النشط.
قم بإنشاء ملف application/controllers/ActiveRecordController.php جديد
أضف الكود التالي إلى ActiveRecordController.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class ActiveRecordController extends CI_Controller { public function store_order(){ $data = [ 'date' => '2018-12-19', 'customer_name' => 'Joe Thomas', 'customer_address' => 'US' ]; $this->db->insert('orders', $data); echo 'order has successfully been created'; } }
هنا،
- $data = […] يحدد بيانات متغير الصفيف الذي يستخدم أسماء جداول قاعدة البيانات كمفاتيح صفيف ويقوم بتعيين قيم لها
- $this->db->insert('orders', $data); يستدعي طريقة الإدراج لمكتبة قاعدة البيانات، ويمرر أوامر اسم الجدول ومتغير الصفيف $data كمعلمة. يقوم هذا السطر بإنشاء عبارة SQL INSERT باستخدام مفاتيح الصفيف كأسماء الحقول وقيم الصفيف كالقيم التي سيتم إدراجها في قاعدة البيانات.
الآن بعد أن نجحنا في إنشاء طريقة وحدة التحكم للسجل النشط، سنحتاج الآن إلى إنشاء مسار سنستدعيه لتنفيذ طريقة وحدة التحكم.
افتح الآنways.php في application/config/routes.php
أضف السطر التالي إلى المسارات
$route['ar/insert'] = 'activerecordcontroller/store_order';
هنا،
- نحدد مسارًا ar/insert يستدعي أمر store_order الخاص بـ ActiveRecordController.
لنبدأ الآن خادم الويب لاختبار طريقتنا.
قم بتشغيل الأمر التالي لبدء تشغيل الخادم المدمج لـ PHP
cd C:\Sites\ci-app php -S localhost:3000
هنا،
- انتقل متصفح الأوامر أعلاه إلى سطر الأوامر وابدأ تشغيل الخادم المدمج في المنفذ 3000.
قم بتحميل عنوان URL التالي إلى متصفحك
http://localhost:3000/ar/insert
سوف تحصل على النتائج التالية
order has successfully been created
فتح MySQL قاعدة بيانات البرنامج التعليمي والتحقق من جدول الطلبات
ستتمكن من إنشاء الصف حديثًا كما هو موضح في الصورة أدناه
CodeIgniter حدد السجل النشط
سنرى في هذا القسم كيفية قراءة السجلات الموجودة لدينا في قاعدة البيانات وعرضها في متصفح الويب كقائمة غير مرتبة
أضف الطريقة التالية إلى ActiveRecordController
public function index() { $query = $this->db->get('orders'); echo "<h3>Orders Listing</h3>"; echo "<ul>"; foreach ($query->result() as $row) { echo "<li>$row->customer_name</li>"; } echo "</ul>"; }
هنا،
- $query = $this->db->get('orders'); يقوم بتشغيل استعلام التحديد مقابل جدول الطلبات مع تحديد كافة الحقول
- صدى صوت " قائمة الطلبات "؛ يعرض عنوان HTML بالحجم 4
- صدى صوت " "؛ يطبع العلامة الافتتاحية لقائمة HTML غير المرتبة
- foreach ($query->result() as $row) {...} استخدم حلقة for للتنقل خلال النتائج التي تم إرجاعها من قاعدة البيانات. صدى صوت " $row->customer_name "؛ يطبع اسم العميل من قاعدة البيانات
قبل تحميل عنوان URL التالي، يمكنك تحميل بضعة سجلات أخرى إلى قاعدة البيانات.
يتيح الآن تحديد مسار لاستعلام SELECT
افتح جدول application/config/routes.php
أضف المسار التالي
$route['ar'] = 'activerecordcontroller';
هنا،
- يشير المسار إلى طريقة الفهرس لفئة ActiveRecordController. هذا افتراضيًا، ولهذا السبب لم نحدد طريقة الفهرس كما فعلت للمسار الذي يقوم بإدراج السجلات
بافتراض أن خادم الويب قيد التشغيل بالفعل، قم بتحميل عنوان URL التالي
http://localhost:3000/ar
يجب أن تكون قادرًا على رؤية نتائج مشابهة جدًا لما يلي في متصفح الويب الخاص بك
تحديث CodeIgniter للسجل النشط
في هذا القسم، سنتحدث عن كيفية استخدام السجل النشط لتحديث قاعدة البيانات. لنفترض أننا نريد تحديث اسم العميل Joe Thomas إلى Joe.
أضف الطريقة التالية إلى فئة ActiveRecordController
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
هنا،
- $data = […] يحدد الحقول والقيم التي نرغب في تحديثها في جدول قاعدة البيانات
- $this->db->where('id', 1); يعين جملة حيث لاستعلام التحديث
- $this->db->update('orders', $data); يقوم بإنشاء استعلام تحديث SQL وتنفيذه على قاعدة البيانات الخاصة بنا.
سيؤدي الكود أعلاه إلى إنتاج عبارة SQL التالية
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
لنقم الآن بتحديث تطبيق Routes.php/config/routes.php
أضف المسار التالي
$route['ar/update'] = 'activerecordcontroller/update_order';
احفظ التغييرات
قم بتحميل عنوان URL التالي في متصفح الويب
دعونا الآن نعرض سجلات قاعدة البيانات ونرى ما إذا كانت التغييرات قد تأثرت.
كما ترون من الصورة المذكورة أعلاه، تم تحديث السجل الأول من جو توماس إلى جو.
CodeIgniter حذف السجل النشط
سنقوم الآن بحذف سجل من قاعدة البيانات. سنقوم بحذف السجل بالمعرف 3.
أضف الطريقة التالية إلى ActiveRecordController
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
هنا،
- $this->db->where('id', 1); يحدد جملة حيث
- $this->db->delete('orders'); يحذف صف قاعدة البيانات في جدول الطلبات بناءً على المعايير المحددة باستخدام جملة المكان.
لتنفيذ الكود أعلاه، قم بتحميل عنوان URL التالي في متصفح الويب الخاص بنا
http://localhost:3000/ar/delete
الملخص
في هذا البرنامج التعليمي، تعلمت كيفية العمل مع سجل نشط لإدراج السجلات وتحديثها وحذفها وتحديدها من قاعدة البيانات. لقد عملنا مع القيم الثابتة لإنشاء السجلات وتحديثها وحذفها. في البرنامج التعليمي التالي، سنقوم بإنشاء واجهة مستخدم يمكن للمستخدم استخدامها لإنشاء السجلات ديناميكيًا في قاعدة البيانات.