احدى الطرق (غير عملية كثيراً بسبب تخزين الآباء لكل شخص) :
كود PHP:
<?php
/*
SQL Code:
CREATE TABLE beshoo (
id int UNSIGNED NOT NULL AUTO_INCREMENT,
name text NOT NULL,
fathers longblob NOT NULL,
PRIMARY KEY(id)
) type=MyIsAm;
*/
$beshoo =& new beshoo;
// اضافة قيم افتراضية
$beshoo->add('beshoo0', 0);
$beshoo->add('beshoo1', 1);
$beshoo->add('beshoo2', 1);
$beshoo->add('beshoo3', 2);
$beshoo->add('beshoo4', 2);
$beshoo->add('beshoo5', 4);
$beshoo->add('beshoo6', 6);
// هل صاحب الرقم 6 أب لصاحب الرقم 7 ?
echo $beshoo->getFather(7, 6);
echo "\n";
// طباعة الأب الرابع لصاحب الـ id 7
echo $beshoo->getFather(7, 4, 1);
// الكائن
class beshoo
{
function beshoo()
{
$this->sql_connect();
return true;
}
function sql_connect()
{
MySQL_PConnect('localhost', 'root', '')
Or Die(MySQL_Error());
MySQL_Select_DB('beshoo')
Or Die(MySQL_Error());
return true;
}
function sql_query($query)
{
return MySQL_Query($query);
}
function sql_fetch_object($query)
{
return mysql_fetch_object($query);
}
function sql_free_result($query)
{
return mysql_free_result($query);
}
function add($name, $father)
{
$father = (int) $father;
if($father == 0)
{
$FATHERS = '0';
}
else
{
$query = $this->sql_query("SELECT fathers FROM beshoo WHERE id='$father'");
if(!$query)
Die(MySQL_Error());
$result = $this->sql_fetch_object($query);
$this->sql_free_result($query);
$FATHERS = Stripslashes($result->fathers).'+'.$father;
unset($result);
}
if(!($this->sql_query("INSERT INTO beshoo (name,fathers) VALUES ('".Addslashes($name)."', '".Addslashes($FATHERS)."')")))
{
Die(MySQL_Error());
exit;
}
return true;
}
function getFather($id, $father_num, $order=0)
{
$id = (int) $id;
$father_num = (int) $father_num;
if($id < 1 || $father_num < 1)
{
return false;
exit;
}
$query = $this->sql_query("SELECT fathers FROM beshoo WHERE id='$id'");
$result = $this->sql_fetch_object($query);
$this->sql_free_result($query);
$FATHERS = Stripslashes($result->fathers);
unset($result);
$FATHERS = explode('+', $FATHERS);
if($order == 0)
{
$FATHER = array_search($father_num, $FATHERS);
if($FATHER === false)
{
return false;
exit;
}
return $FATHER;
}
else
{
$FATHER = $FATHERS[$father_num];
return $FATHER;
}
}
}
?>