柳甲
中级会员
 
中级会员
UID 23541
精华
1
积分 288
帖子 260
金钱 278 喜悦币
威望 10
人脉 0
阅读权限 30
注册 2003-9-28
状态 离线
|
[推荐阅读] 找工作中。。。。。。。。。
上面这张图上显示的2次查询,取出显示分类也只是用了1次
下面我把在选择框里显示的代码COPY发出来
因为是全COPY的,我们在实际运用中还有缓存,所以函数一开始是读缓存,缓存不存在时才读数据库(这样的好处是在实际应用中显示一个无限分类可以不用读数据库)
函数输出是一个完全处理好了的数组,在smarty中只要显示该数组就完全可以了。
<?php /** * 未名新闻专用函数 * @ return array * (c) [url]www.wmstudio.cn[/url] */ function get_cat_options() { global $news_categories;
$cat_array = array();
$cat_array['thread'] = array();
if (empty($news_categories)) // 如果之前的程序中取出了类别,就不再读缓存 { @include( C_PATH_CACHE . 'categories' . PHPEX ); // 调入缓存的类别数组$news_categories }
if (empty($news_categories)) // 如果缓存不存在,读数据库取出 { unset($sql);
$sql = 'SELECT *' . ' FROM ' . TABLE_ART_CATEGORIES . ' ORDER BY cat_grouporder ASC, cat_group ASC, cat_order ASC';
if ( FALSE !== $result = db_query( $sql ) ) { while ( $catrow = db_fetch_array($result) ) { $cat_array['thread'][$catrow['cat_parentid']]++;
$cat_array['catrows'][] = $catrow; }
$cat_array_count = db_num_rows($result); } else { return (boolean) FALSE; } } else { foreach ($news_categories as $catrow) { $cat_array['thread'][$catrow['cat_parentid']]++;
$cat_array['catrows'][] = $catrow; }
$cat_array_count = count($news_categories); }
$p_catoptions = array();
unset($catrow);
for ($i = 0; $i < $cat_array_count; $i++) { $icon = '';
$space = '';
$catrow = '';
$catrow = $cat_array['catrows'][$i];
$cat_tree[$catrow['cat_level'] + 1] = $cat_array['thread'][$catrow['cat_id']];
$cat_tree[$catrow['cat_level']]--;
for ($ii = 0; $ii < $catrow['cat_level']; $ii++) { if ($cat_tree[$ii] > 0) { $space .= '┃'; } else { $space .= ' '; } }
if ($cat_tree[$catrow['cat_level']] > 0) { $space .= '┣'; } elseif ($cat_tree[$catrow['cat_level']] == 0 && $catrow['cat_parentid'] != 0) { $space .= '┗'; }
//$space = str_repeat('---', $catrow['cat_level']); $p_catoptions[$catrow['cat_id']] = $space . $catrow['cat_name'];
// $t_assign['catname'][$catrow['cat_id']] = $space . $catrow['cat_name']; }
return $p_catoptions; } ?>
|  未名工作室http://www.qqwm.com
网站后台开发,PERL,PHP,JSP |
|