我目前正在尝试建立一个简单的论坛。我正在使用函数List_Category()
来获取类别,然后我在List_SubCategory($id)
内调用另一个函数List_Category()
来获取类别子类别。但是,我遇到了麻烦,因为如果我echo
来自List_SubCategory($id)
的结果,它会使子类别出现在内容框上方,而不是内部框(对我来说,这没有任何意义! )
我在echo
中使用List_SubCategory($id)
时的效果如何:
功能:
public function List_Category() {
$GetCat = $this->dbc->prepare("SELECT id,name,type,minrank,mini_icon FROM categories ORDER BY id ASC");
if($GetCat->execute()) {
$GetCat->bind_result($catid, $catname, $cattype, $catminrank, $caticon);
$GetCat->store_result();
if($GetCat->num_rows >= 1) {
while($GetCat->fetch()) {
echo '<h3 id="CatTitle"><a href="#"><i class="'.$caticon.'"></i> '.$catname.'</a> <a href="javascript:void(0)" class="CatMin-'.$catid.'"><i class="fa fa-minus-square" id="CategoryMinim"></i></a></h3>
<div id="CategoryBlock" class="Cat-'.$catid.'">
'.$this->List_SubCategory($catid).'
</div>
<br style="clear:both">';
}
}
} else {
return BoardTemplate::ThrowNewAlert("error", $GetCat->error);
}
}
public function List_SubCategory($id) {
$GetSub = $this->dbc->prepare("SELECT id,name,attach_id FROM subcategories WHERE attach_id = ? ORDER BY id ASC");
$GetSub->bind_param("i", $id);
if($GetSub->execute()) {
$GetSub->bind_result($subid, $subname, $subattach);
$GetSub->store_result();
if($GetSub->num_rows >= 1) {
while($GetSub->fetch()) {
echo '<div id="CatSep" style="position: relative;">
<i class="fa fa-comments-o" id="ReadStatus"></i> <div class="Title"><a href="#">'.$subname.'</a></div>
<img src="http://cdn.akamai.steamstatic.com/steamcommunity/public/images/avatars/78/783bd2db99ca87c20c23b2ff59427fdd8aff8329_full.jpg" class="SizeTinyAvatar" id="CatAva" style="float:right;" />
<div class="Desc">
<div style="float: right" id="fr"><b>Latest:</b> <a href="#">Welcome to your first fucking...</a></div><br style="clear:both">
<div style="float: right" id="fr">Posted by <a href="#">Kah!</a>, 2 days ago</div>
</div>
<div id="StatsHelp">
<div id="CatStats">10<br>Topics</div>
<div id="CatStats">10<br>Posts</div>
</div>
</div>';
}
} else {
echo "no cat";
}
}
}
我现在的理论是它被打破了,因为List_Category()
正在回应它的结果,List_SubCategory($id)
也在做,所以它在回声中回响。 FUNC-ception?
我可以确保我的HTML或我的CSS没有任何问题。如果我将echo
中的List_SubCategory($id)
替换为return
,它看起来就像在第一张图片中,但它似乎忽略了while()
,因为它只给了我第一行数据库。
这很难解释。但任何帮助表示赞赏。我不知道应该如何让它看起来应该如此。
答案 0 :(得分:1)
第二个echo
中的List_SubCategory()
在echo
函数中的List_Category()
之前完成。
不应直接回显字符串,而应将其写入变量并在List_SubCategory()
函数的末尾返回此变量。正如您已经描述的那样,您不应该将回报放在里面。