zl程序教程

您现在的位置是:首页 >  后端

当前栏目

比较简单实用的PHP无限分类源码分享(思路不错)

PHP思路源码 分享 实用 分类 无限 不错
2023-06-13 09:14:30 时间
下面一段代码是创建相应数据库的sql代码:
复制代码代码如下:

 //////////////
  //////无限分类的数据库设计及样例
  //////////////
  mysql>createdatabasedb_kind;
  QueryOK,1rowaffected

  mysql>usedb_kind;
  Databasechanged
  mysql>createtabletb_kind(
    ->idintnotnullauto_incrementprimarykey,
    ->pidint,
    ->pathvarchar(200)
    ->);
 QueryOK,0rowsaffected

 mysql>insertintotb_kindvalues(null,"新闻",0,0);
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"视频",0,0);
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"图片",0,0);
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"博客",0,0);
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"体育新闻",1,"0-1");
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"娱乐新闻",1,"0-1");
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"财经新闻",1,"0-1");
 QueryOK,1rowaffected

 mysql>select*fromdb_kind;
 ERROR1146:Table"db_kind.db_kind"doesnotexist
 mysql>select*fromtb
 _kind;
 +----+----------+-----+------+
 |id|pname   |pid|path|
 +----+----------+-----+------+
 | 1|新闻    |  0|0   |
 | 2|视频    |  0|0   |
 | 3|图片    |  0|0   |
 | 4|博客    |  0|0   |
 | 5|体育新闻|  1|0-1 |
 | 6|娱乐新闻|  1|0-1 |
 | 7|财经新闻|  1|0-1 |
 +----+----------+-----+------+
 7rowsinset
 mysql>insertintotb_kindvalues(null,"篮球新闻",5,"0-1-5");
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"足球新闻",5,"0-1-5");
 QueryOK,1rowaffected

 mysql>select*fromtb_kind;
 +----+----------+-----+-------+
 |id|pname   |pid|path |
 +----+----------+-----+-------+
 | 1|新闻    |  0|0    |
 | 2|视频    |  0|0    |
 | 3|图片    |  0|0    |
 | 4|博客    |  0|0    |
 | 5|体育新闻|  1|0-1  |
 | 6|娱乐新闻|  1|0-1  |
 | 7|财经新闻|  1|0-1  |
 | 8|篮球新闻|  5|0-1-5|
 | 9|足球新闻|  5|0-1-5|
 +----+----------+-----+-------+
 9rowsinset

 mysql>insertintotb_kindvalues(null,"NBA",8,"0-1-5-8");
 QueryOK,1rowaffected

 mysql>insertintotb_kindvalues(null,"CBA",8,"0-1-5-8");
 QueryOK,1rowaffected

 mysql>select*fromtb_kind;
 +----+----------+-----+---------+
 |id|pname   |pid|path   |
 +----+----------+-----+---------+
 | 1|新闻    |  0|0      |
 | 2|视频    |  0|0      |
 | 3|图片    |  0|0      |
 | 4|博客    |  0|0      |
 | 5|体育新闻|  1|0-1    |
 | 6|娱乐新闻|  1|0-1    |
 | 7|财经新闻|  1|0-1    |
 | 8|篮球新闻|  5|0-1-5  |
 | 9|足球新闻|  5|0-1-5  |
 |10|NBA     |  8|0-1-5-8|
 |11|CBA     |  8|0-1-5-8|
 +----+----------+-----+---------+
 11rowsinset

 mysql>selectconcat(path,"-",id)fromtb_kind;
 +---------------------+
 |concat(path,"-",id)|
 +---------------------+
 |0-1                |
 |0-2                |
 |0-3                |
 |0-4                |
 |0-1-5              |
 |0-1-6              |
 |0-1-7              |
 |0-1-5-8            |
 |0-1-5-9            |
 |0-1-5-8-10         |
 |0-1-5-8-11         |
 +---------------------+
 11rowsinset

 mysql>selectconcat(path,"-",id)fromtb_kind;
 +---------------------+
 |concat(path,"-",id)|
 +---------------------+
 |0-1                |
 |0-2                |
 |0-3                |
 |0-4                |
 |0-1-5              |
 |0-1-6              |
 |0-1-7              |
 |0-1-5-8            |
 |0-1-5-9            |
 |0-1-5-8-10         |
 |0-1-5-8-11         |
 +---------------------+
 11rowsinset

 mysql>selectconcat(path,"-",id)asabsfromtb_kindorderbyabs.path;
 ERROR1054:Unknowncolumn"abs.path"in"orderclause"
 mysql>selectconcat(path,"-",id)asabsfromtb_kindorderbyabs

 +------------+
 |abs       |
 +------------+
 |0-1       |
 |0-1-5     |
 |0-1-5-8   |
 |0-1-5-8-10|
 |0-1-5-8-11|
 |0-1-5-9   |
 |0-1-6     |
 |0-1-7     |
 |0-2       |
 |0-3       |
 |0-4       |
 +------------+
 11rowsinset
 mysql>selectconcat(path,"-",id)as,id,name,pathabsfromtb_kindorderbyabs;
 ERROR1064:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear"id,name,pathabsfromtb_kindorderbyabs"atline1
 mysql>selectconcat(path,"-",id)asabs,
 id,pname,pathabsfromtb_kindorderbyabs;
 +------------+----+----------+---------+
 |abs       |id|pname   |abs    |
 +------------+----+----------+---------+
 |0-1       | 1|新闻    |0      |
 |0-1-5     | 5|体育新闻|0-1    |
 |0-1-5-8   | 8|篮球新闻|0-1-5  |
 |0-1-5-8-10|10|NBA     |0-1-5-8|
 |0-1-5-8-11|11|CBA     |0-1-5-8|
 |0-1-5-9   | 9|足球新闻|0-1-5  |
 |0-1-6     | 6|娱乐新闻|0-1    |
 |0-1-7     | 7|财经新闻|0-1    |
 |0-2       | 2|视频    |0      |
 |0-3       | 3|图片    |0      |
 |0-4       | 4|博客    |0      |
 +------------+----+----------+---------+
 11rowsinset
 mysql>

下面是php源文件:
复制代码代码如下:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>无标题文档</title>
</head>
<body>
<!--显示结果
新闻
体育新闻
篮球新闻
NBA
CBA
足球新闻
娱乐新闻
财经新闻
视频
图片
博客
-->
<?
$conn=mysql_connect("localhost","root","root");
mysql_select_db("db_kind");
mysql_query("setnamesutf8");
$sql="selectconcat(path,"-",id)asabspath,id,pname,pathfromtb_kindorderbyabspath";
$rs=mysql_query($sql);
while($result=mysql_fetch_assoc($rs)){
$num=count(explode("-",$result[path]))-1;
$new_str=str_repeat("---",$num);
echo$new_str.$result[pname];
echo"<br>";
}
$str=str_repeat("=",10);
echo$str;
$num=count(explode("-","0-1-5-8"))-1;
echo$num;
?>
</body>
</html>

上面的代码中其实中间有空格的输入效果还是非常不错的,请大家本地测试。因编辑器问题导致排版混乱。