PHP站点地图函数

和往常一样,过去几个小时我都在这上面花了,但无法找到更好的方法。我有一个 CMS,需要创建站点地图。我有作品的功能,但很乱,不太适合用途,想知道是否有人有任何建议。我在下面有 for 循环和类似的东西,但我还不是所有的人都知道如何使用它们。我已经包括了我已经拥有的功能以及数据库的演示。


tbl_website_posts


| ID  | Title             | Parent ID |

|-----|-------------------|-----------|

| 1   | Parent 1          | 0         |

| 2   | Parent 2          | 0         |

| 3   | Child of 2        | 2         |

该功能也非常有限,只能容纳这么多孩子。如果有人对我可以从哪里开始提出建议,那就太棒了。预先感谢您的宝贵时间。



慕尼黑8549860
浏览 104回答 1
1回答

紫衣仙女

我会为此使用递归函数。function generate_sitemap($site_id, $parent_id=0) {    global $dbcon;    $return = '';    $query = mysqli_query($dbcon, "SELECT * FROM tbl_website_posts WHERE post_website='$site_id' AND post_parent='$parent_id'");    // side note: once you get this working it will be worth the effort to turn    // this query into a prepared statement. Using variables in your query like    // this puts you at risk of a SQL injection attack.    if (mysql_num_rows($query) > 0) {        $return = '<ul>';        $icon = array('page' => 'fa-file-word', 'post' => 'fa-newspaper', 'event' => 'fa-calendar-star', 'calander' => 'fa-calendar-alt', 'training' => 'fa-award', 'people' => 'fa-user-alt', 'group' => 'fa-users-class');        while ($array = mysqli_fetch_array($query, MYSQLI_ASSOC)) {            $return .= '<li data-jstree=\'{"icon":"fal ' . $icon[$array['post_type']] . '"}\'>' . $array['post_title'];            $return .= generate_sitemap($site_id, $array['id']);            $return .= '</li>';        }        $return .= '</ul>';     }    return $return;}所以基本上,开始时假设父页面没有任何子页面(初始$return值为空字符串,所以我们不返回空值<ul></ul>)。仅当有孩子时,才开始构建<ul>所有子页面。在<li>子页面的内部,让函数调用自身,并将孩子的 ID 作为新的父 ID。如果孩子没有子页面,嵌套函数调用将返回一个空字符串。否则,它将返回 a<ul>及其所有子项。
打开App,查看更多内容
随时随地看视频慕课网APP