我可以进一步优化这个PHP脚本以从MySQL数据库生成动态Nav吗?

我可以进一步优化这个PHP脚本以从MySQL数据库生成动态Nav吗?,php,mysql,database,content-management-system,navigation,Php,Mysql,Database,Content Management System,Navigation,我正在开发一个新的CMS,用于重复性项目。基本上,这段代码连接到服务器,获取表的所有名称,并使用它们生成简单的导航。它对我所需要的东西非常有用,但是我只是想知道我是否可以进一步优化这个代码片段,使它更加简单。也许制作一个可以自定义格式的类?等等,我试着尽可能地把它变成“赤裸裸的骨头” 我唯一想解释的是,它会检查表名是否“包含”这是我的CMS使用的默认表,以了解前端显示的数据 <?php echo '<div class="dynamic_nav_h

我正在开发一个新的CMS,用于重复性项目。基本上,这段代码连接到服务器,获取表的所有名称,并使用它们生成简单的导航。它对我所需要的东西非常有用,但是我只是想知道我是否可以进一步优化这个代码片段,使它更加简单。也许制作一个可以自定义格式的类?等等,我试着尽可能地把它变成“赤裸裸的骨头”

我唯一想解释的是,它会检查表名是否“包含”这是我的CMS使用的默认表,以了解前端显示的数据

   <?php

              echo '<div class="dynamic_nav_head">Navigation</div>';
              echo '<div class="dynamic_nav">';
                include('data.php');
                $tables = mysql_list_tables($database);
                  while (list($table) = mysql_fetch_row($tables)) { 
                            if($table!='includes'){
                      echo "<div class='cat'>".ucwords($table)."</div>";
                              echo "<div class='cat_item'>";
                                echo "<a href='?page=read&section=".$table."'>View " . ucwords($table) . "</a>";
                              echo "</div>";
                      echo "<div class='cat_item'>";
                                echo "<a href='?page=add&section=".$table."'>Add New ". ucwords($table) ."</a>";
                              echo "</div>";
                            }  // End If not in Includes.
                  } // End While
              echo '</div>';
 ?>

关于如何使这段代码更精简、更干净、更快捷,有什么建议吗?提前谢谢

编辑:
MySQL版本:4.1.22

你怎么知道代码很慢?您的分析器对代码有何评论?哪种说法让它慢下来了?你在哪个站台?什么版本的mysql?这个目录里有多少张表?您是否遭受过早优化的困扰?

我建议您访问

echo“导航”;//少回声
包括('data.php');
$tables=mysql\u list\u tables($database);
while(list($table)=mysql_fetch_row($tables)){
如果($table!='includes'){
$ucTable=ucwords($table);//只需一个函数调用
//只有一个回声;
//您还可以在其中向后使用引号和双引号
回显“.$ucTable.”;
}//如果不在Includes中,则结束。
}//结束时
回声';

代码不错。可读性的一个改进还将是从数据库构建一个数组,而不是在“while”构造中使用mysql\u fetch\u行。这还允许您在进入循环之前过滤掉不需要的名称。您还可以将ucwords方法映射到数组上,从而将其从while循环构造中移除。关于双引号的观点是正确的,但为了可读性,我会保留单独的echo语句,因为这并不会在这里产生明显的区别


希望这能有所帮助。

我已经使用这段代码有一段时间了,它适用于包含10-14个数据表(通常用作页面的一部分)的较小数据库,但我刚刚创建了一个包含80个左右表的站点,它开始在页面的一半左右滞后。有更好的解决办法吗?让脚本将所有表名加载到另一个单独的表中会更快吗?与上面的代码相比,它是否适用于少量的表站点?谢谢你的快速回复!我几乎可以肯定这部分速度足够快。这听起来更像是浏览器在呈现它时遇到了问题:“(…)它开始在页面的一半左右有点滞后”实际上echo需要多个参数,所以您应该将echo中的所有“.”都更改为逗号。没有理由在将字符串发送到输出缓冲区之前对其进行压缩。
        echo '<div class="dynamic_nav_head">Navigation</div><div class="dynamic_nav">';  // on less echo
        include('data.php');
        $tables = mysql_list_tables($database);
          while (list($table) = mysql_fetch_row($tables)) {     
                    if($table!='includes'){
                          $ucTable= ucwords($table); // just one function call
                           //  just one echo;
                           // you where also using quotes and double quotes backwards

                           echo '<div class="cat">'.$ucTable.'</div><div class="cat_item"><a href="?page=read&section='.$table.'">View ' .$ucTable.'</a></div><div class="cat_item"><a href="?page=add&section='.$table.'">Add New '. $ucTable .'</a></div>';
                    }  // End If not in Includes.
          } // End While
      echo '</div>';