الدوال الجديدة بكائن A-db الأصدارة 1.3
بسم الله
مازلت آمل في أن أنتهي من توثيق (بالعربي) document كامل للكائن!! .. ولكن أنجازاً في الوقت سأقوم بشرح الدوال الجديدة فقط في الكائن.
نظام تعدد الصفحات
قمت بأنتاج نظام تعدد صفحات في عام 2004 وأعتمدت عليه طيلة هذه الفترة وطورت عليه تطورات تكاد لا تذكر ولكن الفرق الأن أنه أصبح دالة مدمجة داخل الكائن ... ويتم أستدعائها تلقائياً بمجرد أدخالك المدخلات الخاصة بها أثناء أستخدامك دالة get_rows
الخاصة بأستخراج عدة صفوف من قاعدة البيانات.
من أمكانيات كائن تعدد الصفحات المدمج داخل الكائن
تعدد شكل الكلاس (الوضع المختصر أو المفصل)
عرض / أخفاء الصفحة التالية
عرض / أخفاء الصفحة السابقة
عرض / أخفاء الصفحة الأولى
عرض / أخفاء الصفحة الأخيرة
سهولة الأستخدام.
طريقة أستخدامتعدد الصفحات بشكل منفصل عن دالة
get_rows
وعن الكائن.
############### page config ##############
$perpage = 2; // عدد النتائج في كل صفحة
$mode = 2; // طريقة العرض : 1= مختصرة , 2= تفصيلية
$next = 1; // لعرض زر التالى
$prev = 1; // لعرض زر السابق
$end = 1; // لعرض زر أخر صفحة
$start = 1; // لعرض زر أول صفحة
$tools = ''; // هنا المتغيرات المراد أضافتها مع تعدد الصفحات
$total = 123; // عدد كل المخرجات من قاعدة البيانات
$pager = MySql :: full_pager($perpage, $total, $mode, $next, $prev, $end, $start, $link='');
##########################################
وبعدها أضف في أخر الأستعلام
($pager->page-1)*$perpage,$perpage
مثلاُ
mysql_query("select * from `table` where `co1` = 'value' order by `co2` LIMIT ".($_GET['page']-1)*$perpage.','.$perpage);
اما بالنسبة للطريقة الثانية في أستخدامه مع أستخدام الكائن عن طريق دالة get_rows
هذا مثال عن دالة أستخدمتها في برنامج تحميل صور
############### page config ##############
function admin_show_ftps($html_pager='',$link='')
{
return $this->db->get_rows(array('co1' , 'co2'),'table','','','', &$html_pager,$link);
}
##########################################
يلاحظ طبعاً تواجد التعامل عن طريق pass reference في متغير $html_pager
وعند أستدعاء دالة مثل هذه بهذ الشكل
$html_pager = true;
admin_show_up($html_pager);
فإني محتاج أن أنشئ متغير بنفس الأسم وأضع به أي قيمة أفتراضية لأن الكائن يسأل عن أحتواء المتغير بأي قيمة أفتراضية أم لا
وفي حالة عدم أحتوائه فإنه لا يقوم بعمل أي من العمليات الخاصة بنظام تعدد الصفحات
وبالنسبة للقيمة النهائية فإنه يقوم في النهاية بإرجاع الصفحات في المتغير المدخل له.
Preface
كل ما أضيف بهذه الخاصية هو أضافة مدخل أخر لدالة البناء Constructor لأمكانية أضافة بادئة أو مقدمة (على حسب أقرب ترجمة عربية للمصطلح) لأسماء الجدوال.
كانت مخلات الـConstructor
MySql($dbhost, $dbuser, $dbpass, $dbname, [$table]);
الأن أصبحت
MySql($dbhost, $dbuser, $dbpass, $dbname, [$preface, [$table=]]);
ويمكن عدم وضعها ووضع قيمة أفتراضية من داخل الكائن.
Close()
هذه الدالةلا يوجد لها وظيفة أكثر من أغلاش الأتصال المفتوح مع القاعدة
وفائدتها هو التأكد من أنها تغلق الأتصال المفتوح مع هذا الكائن ليس أي أتصال أخر
مثال
$db->close();
فقط
وإن كنت تستخدم PHP5 فعليك وضعها في دالة الهدم مباشرتاً لأغلاق الأتصال بمجرد أنتهاء الصفحة.
Count()
هي تقوم بأرجاع عدد السجلات بالجدول المدخل
$this->count([$table, [$con, [$limit]]]);
المدخلات
الأول : أسم الجدول المراد معرفة عدد سجلاته
الثاني : شرط أحتساب السجل في العداد
الثالث : أقصى رقم مراد الحصول عليه
مثال "لجلب عدد الموظفين من جدول emp والذي رواتبهم sal أقل من 1000":-
print $db->count('emp', '`sal` > 1000', 10);
مع ملاحظة أن المثال السابق سيكون ناتجه 10 سجلات على الأكثر لأننا قمنا بتحديد أقصى عدد. ولعرض المثال السابق بدون حد أقصى ولكنه بنفس الشرط وهو أن الراتب أقل من 1000:-
print $db->count('emp', '`sal` > 1000');
Sum()
هي تقوم بأرجاع مجموع سمة (حقل) واحدة في مجموعة سجلات مختلفة
$this->sum($field, [$table, [$con, [$limit]]]);
المدخلات
الأول : أسم السمة (الحقل) المراد جمع محتواه
الثاني : أسم الجدول الثابع له الحقل السابق
الثالث : شرط أحتساب قيمة السجل في المجموع
الثالث : عدد السجلات المراد جمعها
مثال"لجلب مجموع رواتب sal الموظفين emp على الذي رواتبهم أقل من 1000":-
print $db->sum('sal', 'emp', '`sal` > 1000', 10);
مع ملاحظة أن المثال السابق سيقوم بجمع 10 سجلات على الأكثر لأننا قمنا بتحديد أقصى عدد.
Operator()
هي تقوم بأرجاع مجموع سمة (حقل) واحدة في مجموعة سجلات مختلفة
$this->operator($field, [$table, [$con, [$limit]]]);
المدخلات
الأول : أسم السمة (الحقل) المراد جمع محتواه
الثاني : أسم الجدول الثابع له الحقل السابق
الثالث : شرط أحتساب قيمة السجل في المجموع
الثالث : عدد السجلات المراد جمعها
مثال"لجلب مجموع رواتب sal الموظفين emp على الذي رواتبهم أقل من 1000":-
print $db->operator('sal', 'emp', '`sal` > 1000', 10);
مع ملاحظة أن المثال السابق سيقوم بجمع 10 سجلات على الأكثر لأننا قمنا بتحديد أقصى عدد.