سجل 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 بإدراج السجل النشط

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 حدد السجل النشط

تحديث 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 للسجل النشط

دعونا الآن نعرض سجلات قاعدة البيانات ونرى ما إذا كانت التغييرات قد تأثرت.

تحديث CodeIgniter للسجل النشط

كما ترون من الصورة المذكورة أعلاه، تم تحديث السجل الأول من جو توماس إلى جو.

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

الملخص

في هذا البرنامج التعليمي، تعلمت كيفية العمل مع سجل نشط لإدراج السجلات وتحديثها وحذفها وتحديدها من قاعدة البيانات. لقد عملنا مع القيم الثابتة لإنشاء السجلات وتحديثها وحذفها. في البرنامج التعليمي التالي، سنقوم بإنشاء واجهة مستخدم يمكن للمستخدم استخدامها لإنشاء السجلات ديناميكيًا في قاعدة البيانات.