第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將我的遞歸函數(shù)與另一個參數(shù)結合起來

如何將我的遞歸函數(shù)與另一個參數(shù)結合起來

PHP
阿晨1998 2021-11-05 10:45:49
我有一個遞歸運行的腳本,并且能夠顯示多個級別的子菜單。問題是這樣的:目前我在我的 CMS 中使用兩個部分。類別和文章。文章可以在類別下,類別可以在其他類別(子類別)下,但文章不能在其他文章下。目前我的腳本只適用于類別,但如果例如在我的 CMS 中article 1并且category1都在category0我想顯示它們,而不僅僅是category1.在我的數(shù)據(jù)庫中,結構是這樣的:`snm_categories` - contains category data`id` - the id of a categoryparent_id - the id of it's parent category, this is `1` if it has no parent`snm_content` - contains the article data`catid` - the id of the category it falls under, in my above example this will be the same id as the parent_id of `category1`這是我的腳本:<?PHP// Get all categories and articles$menu = "SELECT cat.id as cat_id, cat.level, cat.parent_id, cat.title as cat_title, cat.alias as cat_alias, cat.published, cat.rgt, cnt.state, cnt.id as content_id, cnt.catid, cnt.title as content_title, cnt.alias as content_aliasFROM snm_categories catLEFT JOIN snm_content cntON cnt.catid = cat.idWHERE cat.id NOT IN (1, 2, 3, 4, 5, 7, 8, 22)AND cat.published = 1GROUP BY cat.idORDER BY cat.rgt ASC";$menuconn = $conn->query($menu);// Create new array$menuData = array(    'items' => array(),    'parents' => array());// Create new array with `items` and `parents`, which contain cat_id and parent_idwhile($menu = $menuconn->fetch_assoc()){    $menuData['items'][$menu['cat_id']] = $menu;    $menuData['parents'][$menu['parent_id']][] = $menu['cat_id'];}// Function to create menu, $parentId is 1 (when categories have no parent and are topcategories)function buildMenu($parentId, $menuData){    $html = '';    if (isset($menuData['parents'][$parentId]))    {        // If parent_id is 1 put a <li> around it (because it's not a subcat) if not put an <ul> around        if($parentId == '1'){          $html = '<li>';        }else{          $html = '<ul class="sub-menu">';        }
查看完整描述

2 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

我知道這與您的代碼非常不同,但是我?guī)字芮搬槍︻愃魄闆r編寫了此代碼,因此我根據(jù)您的情況對其進行了一些調整:


<?php

echo get_items(1);


function get_items($id){

    global $conn; //db connection object

    $html = '';

    $sql = mysqli_query($conn, "SELECT * FROM snm_content WHERE catid = $id");

    while($row = mysqli_fetch_assoc($sql)){

        $html .= '<li>'.$row['title'].'</li>';

    }

    $sql = mysqli_query($conn, "SELECT * FROM snm_categories WHERE parent_id = $id");

    while($row = mysqli_fetch_assoc($sql)){

        $html .= '<li>'.$row['title'].'

                      <ul>'.get_items($row['id']).'</ul>

                  </li>';

    }

    return $html;

}

?>

我認為您可以輕松修改它以獲得您需要的確切 html 標記,但本質就在那里。如果您對此有任何疑問,請不要猶豫!


順便說一下,我使用了和你一樣的數(shù)據(jù)庫結構,我在 snm_content 和 snm_categories 中輸入了一些行,這是我得到的輸出:


<li>cat 0

    <ul>

        <li>article 0</li>

        <li>cat 1

            <ul>

                <li>article 1</li>

                <li>article 2</li>

            </ul>

        </li>

        <li>cat 2

            <ul>

                <li>article 3</li>

            </ul>

        </li>

    </ul>

</li>

<li>cat 3

    <ul>

        <li>article 4</li>

    </ul>

</li>


查看完整回答
反對 回復 2021-11-05
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

我看到的第一個問題是在下面的代碼中


while($submenu = $submenuconn->fetch_assoc()){

      $artikelsubs = '<li class="menu-item"><a href="info/'.$submenu['alias'].'">'.$submenu['title'].'</a>';

    }

如果有 10 篇文章,您存儲的是最后一篇嗎?此外,li由于某種原因,您沒有結束標簽。


由于我沒有數(shù)據(jù)庫來檢查這一點,但根據(jù)我的理解,循環(huán)應該如下所示


while($submenu = $submenuconn->fetch_assoc()){

      $artikelsubs .= '<li class="menu-item"><a href="info/'.$submenu['alias'].'">'.$submenu['title'].'</a></li>';

    }

此外,如果文章列表基于 ,cat_id那么您也應該存儲此數(shù)據(jù)


$menuData['articles'][$menu['cat_id']] = $artikelsubs;

并確保artikelsubs在內部 while 循環(huán)之前清空。然后你需要替換你的$html .= $artikelsubs;從menuData對象中獲取它


查看完整回答
反對 回復 2021-11-05
  • 2 回答
  • 0 關注
  • 176 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號