المشاركة الأصلية كتبت بواسطة ncE بارع Pri
السلام عليكم ورحمة الله وبركاته ..
هذا كائن صلحته بناءً على اللي فهمت .. وهو >> لو لدينا مثلا الابن عبدالله ونريد سلسلة ابائه وأجداده حتى نصل للجد اللي هو بيشوو
.. شاهد الصورة للتوضيح ..
بحيث نريد الناتج يكون : ( عبدالله بن خالد بن علي بن أحمد بن بيشوو ) ..
أولا أنشأ قاعدة بيانات وضع فيها :
كود PHP:
CREATE TABLE `beshoo` (
`BRb` int(10) unsigned NOT NULL auto_increment,
`name` varchar(50) default NULL,
`number_father` int(5) NOT NULL default '0',
PRIMARY KEY (`BRb`))
INSERT INTO `beshoo` VALUES (1, 'بيشوو', 0);
INSERT INTO `beshoo` VALUES (2, 'أحمد', 1);
INSERT INTO `beshoo` VALUES (3, 'عمر', 1);
INSERT INTO `beshoo` VALUES (4, 'علي', 2);
INSERT INTO `beshoo` VALUES (5, 'صالح', 2);
INSERT INTO `beshoo` VALUES (6, 'ماجد', 2);
INSERT INTO `beshoo` VALUES (7, 'محمد', 4);
INSERT INTO `beshoo` VALUES (8, 'خالد', 4);
INSERT INTO `beshoo` VALUES (9, 'عبدالله', 8);
حيث أن BRb هو الرقم التسلسلي .. و name هو الاسم .. و number_father رقم ابوه ..
ثم أنشأ صفحة باسم config.php .. وضع فيها :
كود PHP:
<?php
// === خاص بقاعدة البيانات === //
$dbserver = "localhost"; // اسم السيرفر //
$dbname = "beshoo"; // اسم قاعدة البيانات //
$dbuser = "root"; // اسم المستخدم لقاعدة البيانات //
$dbpss = ""; // كلمة المرور لقاعدة البيانات //
// === هذه البرمجه هي طريقة الدخول لقاعدة البيانات === //
$DBC = @mysql_connect("$dbserver", "$dbuser", "$dbpss");
if (!$DBC) {
echo "يوجد خطأ في سيرفر الموقع !!";
exit();
}
$DBS = @mysql_select_db("$dbname");
if (!$DBS) {
echo "يوجد خطأ في قاعدة البيانات !!";
exit();
}
?>
ثم أنشأ صفحة باسم class.php .. وضع فيها :
كود PHP:
<?php
class Father {
// متغيرات داخلية
var $number_father;
var $to;
var $count;
// الدالة الرئيسية
function Father($number_father = '1',$to = '1') {
$this->i += intval(0);
$this->to = intval($to);
// طلب دالة تسجيل الأباء برقم أبيه
$this->number_father = intval($number_father);
$this->Sql_fetch_array();
}
// دالة لتسجيل الأباء
function Sql_fetch_array() {
// تسجيل اسم كل أب ورقم أبيه
$result = @mysql_query("Select * From beshoo WHERE BRb=".$this->number_father);
$row = @mysql_fetch_array($result);
$this->row[2] = $row[2];
$this->_name[$this->i] = $row[1];
// عدد فروع الأباء
$this->count = count($this->_name);
// يدخل هنا إذا كان العدد المدخل أكثر من فروع الأباء
if ($this->row[2] == 0) $this->to = $this->count-1;
// يدخل هنا إذا كان العدد المطلوب لا يساوي رقم الأب
if ($this->i != $this->to) {
$this->i++;
// طلب دالة فروع الأباء حسب العدد المطلوب
$this->Father($this->row[2],$this->to);
}
}
// الدالة النهائية لاسماء الأباء
function viewers(){
// عملية تكرار لطباعة لتعريف اسماء الأباء
for ($i=0 ; $i<$this->count;$i++) {
$_name .= " بن ".$this->_name[$i];
}
// الناتج النهائي للأباء
return $_name;
}
}
class Son extends Father {
// متغيرات داخلية
var $name;
// دالة للإتصال بالأباء
function Son($name,$number_father,$to){
// اسم الابن
$this->name = $name;
// طلب الأباء بحسب العدد المطلوب
$to = intval($to) - 1;
$this->Father($number_father,$to);
}
// الدالة النهائية
function result(){
return $this->name." ".$this->viewers();
}
}
?>
ثم أنشأ صفحة باسم index.php .. وضع فيها :
كود PHP:
<html dir="rtl">
<head>
<META http-equiv=Content-Type content='text/html; charset=windows-1256'>
<META http-equiv=Content-Language content=ar-ae>
<title>تجربة</title>
</head>
<div align="center">
<?php
include ("config.php");
include ("class.php");
// حدد رقم السجل الذي تريد
$result = @mysql_query("Select * From beshoo WHERE BRb=9");
$row = @mysql_fetch_array($result);
/* استدعاء الكائن
الخانة 1 : اسم الابن
الخانة 2 : رقم الأب
الخانة الثالث : تحديد الأب الذي تريد التوقف عليه
*/
$Bar3 = new Son($row[1],$row[2],0);
// طباعة النتيجة النهائية
echo $Bar3->result();
?>
</div>
وهذه تجربة بسيطه على الكائن .. تجد في الرابط BRb=9 غير الرقم 9 بأي رقم بناءً على الموجود في الصورة أعلاه ..
للــتــجــربــة إضــغــط هــنــا
وتقبل تحياتي
محبكم عبدالعزيز