我正在处理两个相互作用的函数,此时我正在尝试修复它的子菜单部分。
我的菜单是使用
生成的public function CreateNavigation() {
global $db;
$query = <<<SQL
SELECT id,name
FROM pages
WHERE enabled = :enabled
AND main = :main
SQL;
$resource = $db->sitedb->prepare( $query );
$resource->execute( array (
':enabled' => 1,
':main' => 1,
));
foreach($resource as $menu){
$this->parentid = $menu['id'];
echo "<li><a href='viewPage.php?id=".$menu['id']."'>".$menu['name']."</a>
".self::GetSublinks()."</li>";
}
}
然后GetSublinks接管确定菜单的下拉列表
public function GetSublinks() {
global $db;
$query = <<<SQL
SELECT id,name
FROM pages
WHERE parentid = :parentid
AND enabled = :enabled
SQL;
$resource = $db->sitedb->prepare( $query );
$resource->execute( array (
':parentid' => $this->parentid,
':enabled' => 1,
));
$row_count = $resource->rowCount();
if($row_count >= 1) {
return "<ul>";
foreach($resource as $row){
return "<li><a href='viewpage.php?id=".$row['id'].">".$row['name']."</a></li>"
}
return "</ul>";
}
}
现在主菜单本身效果很好,即使子链接在某种程度上也很有效。他们检查以确保并修改主链接以显示它有子项(如果有),但我遇到的问题是在子项内它只显示最后一个链接,所以我不能有多个下拉列表因为这。 我也尝试在子链接中改变我的foreach
while($row = $resource->fetch(PDO::FETCH_ASSOC))
无济于事。我的菜单在没有下拉列表的情况下工作正常,但下拉列表很适合添加。
var_dump($ resource)结果:
object(PDOStatement)#7 (1) { ["queryString"]=> string(86) " SELECT id,name FROM pages WHERE parentid = :parentid AND enabled = :enabled" } object(PDOStatement)#7 (1) { ["queryString"]=> string(86) " SELECT id,name FROM pages WHERE parentid = :parentid AND enabled = :enabled" }
var_dump($ row)结果:
array(2) { ["id"]=> string(1) "2" ["name"]=> string(10) "Create New" } array(2) { ["id"]=> string(1) "3" ["name"]=> string(14) "Delete Listing" }
答案 0 :(得分:3)
我认为你的字符串连接和返回值是错误的。应该是这样的:
if($row_count >= 1) {
$subMenu = "";
$subMenu .= "<ul>";
foreach($resource as $row){
$subMenu .= "<li><a href='viewpage.php?id=".$row['id'].">".$row['name']."</a></li>"
}
$subMenu .= "</ul>";
return $subMenu;
}
你应该保持连接,最后只返回子菜单。
答案 1 :(得分:1)
当您的代码到达
时return "<ul>";
它会退出函数并返回<ul>
所以它甚至不会来到foreach循环所以你需要连接字符串而不是返回它
return ¶
如果在函数内调用,则return语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。 return也结束了eval()语句或脚本文件的执行。
if($row_count >= 1) {
$sub_menu = "<ul>";
foreach($resource as $row){
$sub_menu .= "<li><a href='viewpage.php?id=".$row['id'].">".$row['name']."</a></li>"
}
return $sub_menu ."</ul>";
}