PHP教程之如何实现网站的无限分类(2)_PHP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:解析PHP网站开发中常见的问题
【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用_GET['foo'],_POST['foo'],_SESSION['foo']来得到

可以假设个总分类 0 ,所有的分类都是它的子孙分类,现在来建立第一个分类'系统',来看看它在数据库的存储形式:

id | uid | type | rout_id | rout_char 1 | 0 | 系统 | 0:1 | 系统

接着又在下面分'Linux':

id | uid | type | rout_id | rout_char 2 | 1 | Linux| 0:1:2 | 系统:Linux

以上就是数据库存储的形式,现在就来完成 php 的代码,这与论坛的代码很相似,我们所要做的就是将分类的 id 放入 uid,而父分类的 uid 就放 0,下面来看看代码:

以下为引用的内容:

<?
.....
.....
//设置默认页
if (empty(func)) func=='showtype';
//设置父分类的 uid
if (empty(uid)) uid=0;
//数据库存储************************************************
if (func=='save'):
fields = "";
values = "";
if (id!="") {
fields .= ",id";
values.=",id";
}
if (uid!="") {
fields .= ",uid";
values.=",uid";
}
if (type!="") {
fields .= ",type";
values.=",'type'";
}
if (route_id=="") {
//取得父分类的 route_id
if (uid!=0) {
result = mysqlquery("select * from type where id=uid");
route_id=mysql_result(result,0,"route_id");
} else {
routr_id='0';
}
fields .= ",route_id";
//形成自己的 route_id
route_id="route_id:id";
values.=",'route_id'";
}
//形成自己的 route_char
if (route_char!="") {
fields .= ",route_char";
route_char="route_char:type";
values.=",'route_char'";
} else {
fields .= ",route_char";
route_char=type;
values.=",'route_char'";
}
fields = substr(fields,1,strlen(fields)-1);
values = substr(values,1,strlen(values)-1);
result = mysqlquery("insert into type (fields) values (values)");
...
endif; /* end save */
//分类上传************************************************
if (func=='createtype'):
//取得自己的 id
result = mysqlquery("select * from type order by
id desc");
num=mysql_numrows(result);
if (!empty(num)) {
cat = mysql_result(result,0,"id");
} else {
cat=0;
}
//判断分类的状态
if (uid != 0) {
result=mysql_query("select * from type where id=uid");
type=mysql_result(result,0,"type");
route_char=mysql_result(result,0,"route_char");
} else {
type='父分类';
}
echo "<FORM ACTION="PHP_SELF?func=save" METHOD=POST>";
echo "<table>";
echo "<tr><td>所属类别:type</td></tr>";
echo "<tr><td>创建分类:<input type=text name='type' SIZE=10 MAXLENGTH=100></td></tr>";
echo "<tr><td>";
cat=cat 1;
echo "<input type=hidden name=id value='cat'>";
echo "<input type=hidden name=uid value='uid'>";
echo "<input type=hidden name=route_char value='route_char'>";
echo "<INPUT TYPE=submit NAME='Save' VALUE='保存'></td></tr>";
echo "</table>";
echo "</form>";
endif; /* end createtype */
//显示分类************************************************
if (func=='showtype'):
echo "<table>";
//判断分类的状态
if (uid!=0) {
result=mysql_query("select * from type where id=uid");
type=mysql_result(result,0,"type");
} else {
type='父分类';
}
echo "<tr><td><a href='php_self?func=createtype&uid=uid'>创建分类</a></td></tr>";
echo "<tr><td>type</td></tr>";
result=mysql_query("select * from type where uid=uid");
num=mysql_numrows(result);
if (!empty(num)) {
for (i=0;i<num;i ) {
id=mysql_result(result,i,"id");
type=mysql_result(result,i,"type");
echo "<tr><td>";
echo "<a href='php_self?func=showtype&uid=id'>type</a>";
echo "</td></tr>";
}
}
echo "</table>";
endif; /* end showtype */
.....
.....
?>

以上的程序便完成了无限分类的基本创建,存储和显示,接着就是完善分类创建功能的各个部分了。

分享:浅析关于cookie和session
1. PHP的COOKIE cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。 PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,

来源:模板无忧//所属分类:PHP教程/更新时间:2009-09-05
相关PHP教程