السلام عليكم
هدف هذا المقال هو تصميم طبقة لتجريد البيانات لاستخدامها مع قواعد البيانات ، (Data Abstraction Layer (DAL)،،، لكي نتفادي تعقيدات الـMySQL ونركز على برنامجنا الأساسي ،، أيضا لنجعل شفرة (كود) برنامجنا مرتبا ونظيف واحترافي.
لمن هذا الدرس:
لكل من يحسن التعامل مع لغة الـPHP و الـMySQL.
لديك إلمام بالـOOP "البرمجة الكائنية التوجه"(المام بسيط)
الغرض من هذا المقال
غرضنا هو كما أسلفنا إنشاء بريمج يريحنا من تعقيدات الـMySQL ، كالاتصال والاستعلام ، مع وضع خوارزمية مثالية في الاتصال والاغلاق لكي نحصل على أفضل أداء لبرنامجنا ولنتصيد الأخطاء بكل سهولة ويسر ونحافظ على ترتيب ونظافة كود برنامجنا.
تعريف الكائنات (Object)
الكائن التعريفي الخاص بقاعدة البيانات الخاصة بنا سيشمل المتغيرات المحلية local variable والبنية constructor.
اولاً المتغيرات المحلية Local Variables:
نحن سنحتاج المتغيرات المحلية لمراقبة معلومات اتصالاتنا و استعلاماتنا بالإضافة لتتبع اي اتصلات مفتوحة تركناها.
سوف نبداء بالفئة "class" الخاصة بقواعد البيانات ،،، نحتاج فقط الى تعريف الفئة "class" و المتغيرات:
الآن سوف ننتقل الى البنيةكود PHP:class Database
{
var $database_host;
var $database_name;
var $database_user;
var $database_pass;
var $database_link;
}
سوف نقم باعطاء قيم متغيرات معلومات الاتصال الخاصة بناء بقاعدة البيانات.
كود PHP:function Database()
{
$this->database_user = "root";
$this->database_pass = "";
$this->database_host = "localhost";
$this->database_name = "phpsd";
}
حان وقت كتابة دوال التحكم بمعلومات الاتصال
حقيقةً لقد أمسكنا بالكرة الآنكود PHP:function changeUser($user)
{
$this->database_user = $user;
}
function changePass($pass)
{
$this->database_pass = $pass;
}
function changeHost($host)
{
$this->database_host = $host;
}
function changeName($name)
{
$this->databse_name = $name;
}
function changeAll($user, $pass, $host, $name)
{
$this->database_user = $user;
$this->database_pass = $pass;
$this->database_host = $host;
$this->database_name = $name;
}
![]()
الآن يجب ان نبدا بتأسيس الاتصال :
لإغلاق الاتصال :كود PHP:function connect()
{
$this->database_link = mysql_connect($this->database_host, $this->database_user, $this->database_pass) or die("غير قادر على الاتصال ");
mysql_select_db($this->database_name) or die ("غير قادر على فتح قاعدة البيانات التس اسمها ". $this->database_name);
}
قبل أن نبدا بالاستعلام يجب أولا أن نتاكد من أن اتصالنا تم بنجاح مع قاعدة البياناتكود PHP:function disconnect()
{
if(isset($this->database_link)) mysql_close($this->database_link);
else mysql_close();
}
والآنكود PHP:function query_chk($qry)
{
if(!isset($this->database_link)) $this->connect();
$temp = mysql_query($qry, $this->database_link) or die("خطأ: ". mysql_error());
}
الان اصبح لدينا البريمج جاهز للعملكود PHP:function query($qry)
{
if(!isset($this->database_link)) $this->connect();
$result = mysql_query($qry, $this->database_link) or die("Error: ". mysql_error());
$returnArray = array();
$i=0;
while ($row = mysql_fetch_array($result, MYSQL_BOTH))
if ($row)
$returnArray[$i++]=$row;
mysql_free_result($result);
return $returnArray;
}
}
وهذا مثال له :
أتمنى أكن قد أفدتكمكود PHP:<?php
// مكان ملف البريمج
include("database_class.php");
// التعريف الابتدائي
$db = new Database();
// الاستعلام
$q = $db->query("SELECT * FROM users WHERE email= mail@php.sd");
echo '<table><tr><th>UserID</th><th>UserName</th>';
echo '<th>RealName</th><th>E-mail</th></tr>';
foreach($q as $user)
{
echo '<tr><td>'.$user['userid'].'</td><td>'.$user['username'].'</td>';
echo '<td>'.$user['realname'].'</td><td>'.$user['email'].'</td></tr>';
}
echo "</table>";
// by M.Aljaaly
// mail@php.sd
?>
المصدر :
http://www.php.sd/portal/content/view/19/1/


)
رد مع اقتباس
