为了账号安全,请及时绑定邮箱和手机立即绑定

PHP站点地图函数

PHP站点地图函数

PHP
慕尼黑8549860 2023-05-12 15:30:35
和往常一样,过去几个小时我都在这上面花了,但无法找到更好的方法。我有一个 CMS,需要创建站点地图。我有作品的功能,但很乱,不太适合用途,想知道是否有人有任何建议。我在下面有 for 循环和类似的东西,但我还不是所有的人都知道如何使用它们。我已经包括了我已经拥有的功能以及数据库的演示。tbl_website_posts| ID  | Title             | Parent ID ||-----|-------------------|-----------|| 1   | Parent 1          | 0         || 2   | Parent 2          | 0         || 3   | Child of 2        | 2         |该功能也非常有限,只能容纳这么多孩子。如果有人对我可以从哪里开始提出建议,那就太棒了。预先感谢您的宝贵时间。
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

我会为此使用递归函数。


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>及其所有子项。


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信