我一直在搜索整个论坛,但找不到我的具体问题的答案。我希望你能帮助我,因为我花了很多时间把它想象成一个初学的PHP程序员。
我有一个监听此网址的网页:... / ... / edit_cat.php?id = 24
我想拥有一个不错的类别树。我已经完成了这个,但是我希望所有没有孩子的类别都是页面post.php的链接,所有父母都有子项作为链接,但只显示其他类别。您可以称之为某种下拉菜单。所以没有孩子是post.php,如果有孩子,那么其余的孩子就会失败。我希望这说清楚......这是我到目前为止的事情。它可以作为一棵树,但不是我希望它如何:
<h2>This is the current category tree</h2>
<?php
category_tree(0);
function category_tree($catid){
include '../config/connect.php';
$result = $db->prepare("SELECT * FROM categories WHERE parent_id = '".$catid."'");
$result->execute();
while($row = $result->fetch(PDO::FETCH_ASSOC)):
$i = 0;
if ($i == 0){ echo '<ul class="cattree">';}
echo '<li><a href="category.php?id=' . $row['cat_id'] . '">' . $row['cat_title'] . '</a>';
category_tree($row['cat_id']);
echo '</li>';
$i++;
if ($i > 0){ echo '</ul>'; }
endwhile;
}
?>
我的类别表如下:
cat_id | cat_title | parent_id
1 some_title 0
2 some_title 1
3 title! 2
4 main_title 0
5 titellos! 4
答案 0 :(得分:1)
这是我去年做过的事情,一个查询返回每一行,包含idx,parent_idx和该行的标签。
第一个电话:
print_list(1, 0, $lines);
功能:
function print_list($parent, $level, $ar) {
$children = filter_by_parent($parent, $ar);
if (empty($children)) {
return;
}
echo '<ul>';
foreach ($children as $child) {
include PATH_PUBLIC . 'clients/simili/line.php';
print_list($child['Child_Idx'], ($level + 1), $ar);
echo '</li>';
}
echo '</ul>';
}
第二功能:
function filter_by_parent($parent_id, $ar){
$retval = array();
foreach($ar as $a) {
if ($a['Parent_Idx'] == $parent_id) {
$retval[] = $a;
}
}
return $retval;
}
在函数中调用了html:
<li class="no" data-id="<?php echo $child['Child_Idx']; ?>" data-parent-id="<?php echo $child['Parent_Idx']; ?>">
<i class="fa fa-plus-square-o"></i>
<i class="fa fa-minus-square-o"></i>
<span class="name">
<label><?php echo $child['Child_Name']; ?></label>
<a href="<?php echo url(''); ?>clients/simili/detail.php?uo=<?php echo $child['Child_Idx']; ?>"><i class="fa fa-book" title="Détails de l'Unité d'Organisation"></a></i>
</span>
<div class="chiffres">
<span class="inscrits"><?php echo $child['Nb_Collab']; ?></span>
<span class="etp-collab"><?php echo $child['ETP_Collab']; ?></span>
<span class="etp-postes"><?php echo $child['ETP_Postes']; ?></span>
<span class="etp-unit"><?php echo $child['ETP_Unit']; ?></span>
</div>
答案 1 :(得分:0)
好的,我对PHP一无所知,但是这里是你可以在sql查询中添加“HasChildren”列的方法:
SELECT c.*,
CASE
WHEN EXISTS(SELECT * FROM Categories c1 WHERE c1.parent_id=c.cat_id) THEN 1
ELSE 0
END AS HasChildren
FROM Categories c
WHERE ParentID = @CatID