عزيزي احمد
اشلونك وشخبارك
تفضل هذه الداله تقوم بجلب جميع الاقسام باستعلام واحد وحفظهم في مصفوفه ليسهل التعامل معها فيما بعد
* ملاحظة عند عدم وجود اقسام سترجع قيمة من نوع boolean وهي الـ FALSE
كود PHP:
function get_cats()
{
$result = mysql_query("SELECT * FROM category");
if(mysql_num_rows($result)<1) $return = FALSE;
else
{
while ($row = mysql_fetch_object($result))
{
$return['title'][$row->id] = $row->title;
$return['subcat'][$row->id] = $row->subcat;
$return['t_count'][$row->id] = $row->t_count;
$return['c_count'][$row->id] = $row->c_count;
$return['ordercat'][$row->id] = $row->ordercat;
}
}
return $return;
}
والآن طريقة التعامل مع تلك المصفوفه..
وماتريده هو حساب جميع المواضيع الموجوده في جميع الاقسام الرئيسيه منها والفرعية..
او بحساب جميع المواضيع الموجوده في قسم معين (مع حساب جميع المواضيع الموجوده في الاقسام الفرعية المندرجه منه.. الى مالا نهايه)
تفضل هذه الداله تقوم بذلك
كود PHP:
function cat_topics($cats=array(),$id=NULL)
{
if(empty($cats) || !is_array($cats)) $return = FALSE;
else
{
$return = (int) 0;
if($id===NULL || !array_key_exists($id,$cats['c_count']) )
foreach($cats['c_count'] as $count) $return += $count;
else
{
$return += $cats['c_count'][$id];
foreach($cats['subcat'] as $child_id => $parent_id)
if($parent_id==$id) $return += cat_topics($cats,$child_id);
}
}
return $return;
}
وتأخذ تلك الدال باراميتران..
الاول مصفوفه الاقسام التي سبق وان جلبناها من الداله get_cats()
والباراميتر الثاني.. هو لحساب مواضيع قسم معين.. فإن كانت فارغه سيقوم بارجاع عدد جميع المواضيع
مثال
قم بزراعة التالي
كود PHP:
CREATE TABLE IF NOT EXISTS `category` (
`id` int(10) NOT NULL auto_increment,
`subcat` int(5) NOT NULL,
`title` varchar(255) NOT NULL,
`t_count` int(10) NOT NULL,
`c_count` int(10) NOT NULL,
`ordercat` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `subcat`, `title`, `t_count`, `c_count`, `ordercat`) VALUES
(1, 0, 'microsoft word', 4, 9, 1),
(2, 0, 'microsoft frontpage', 8, 11, 2),
(3, 2, 'design', 7, 5, 1),
(4, 3, 'test', 0, 2, 0),
(5, 4, 'test', 0, 2, 0);
ومن ثم جرب التالي (مع تغيير مايلزم تغييره)
كود PHP:
$conn = mysql_connect('localhost','XXX','YYY');
mysql_select_db('ZZZ',$conn);
$cats = get_cats();
$all = cat_topics($cats);
$msc = cat_topics($cats,2);
echo "All cats: $all<br />microsoft frontpage cat: $msc";
بالتوفيق عزيزي