php 进阶:实现无限分类第3/4页

 更新时间:2006年12月16日 00:00:00   作者:  

3.程序控制 
------------------------------------------------------------ 

实现无限分类这个功能中就属这一步最为复杂辛苦,首先看看程序需要完成的步骤: 

1)创建分类上传; 
2)创建信息上传; 
3)明确显示各分类及其之间的关系; 
4)处理查询功能; 
5)如何处理编辑和删除的功能; 

而这五步中最为困难的就是第五个步骤,因为对分类的编辑和删除涉及到一至性的问题. 

下面我就逐一描述 php 的程序控制: 

1)创建分类上传 

在介绍这个功能前,先介绍一下 explode( ) 这个函数,这是个字串处理函数,用来分解字串的,具体的用法,例: 

分解"0:1:2:3:4"里的数字 

$val='0:1:2:3:4'; 
$rid=explode(":",$val); 

经过 explode( ) 函数处理,$val 内的所有数字都分解到 $rid 数组中了,要引用时只需打印:echo '$rid[0],$rid[1],$rid[2]..."; 就行了.explode( ) 函数在整个分类处理中起着非常重要的作用,好现在开始介绍无现分类的程序控制. 

可以假设个总分类 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 */ 
..... 
..... 

?> 

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

相关文章

  • PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID

    PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID

    向mysql 插入数据时,很多时候我们想知道刚刚插入数据的id,这对我们很有用。下面这篇文章就详细给大家介绍了利用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID,有需要的朋友们可以参考借鉴,感兴趣的朋友们下面来一起看看吧。
    2016-11-11
  • php cookie使用方法学习笔记分享

    php cookie使用方法学习笔记分享

    在php中cookie与其它程序中没什么两样,cookie都是用来存储信息到客户端,常用用于安全性要求不高的一些应用中,如用户登录记住密码之类的,下面我来给大家介绍一下php cookie学习笔记
    2013-11-11
  • php中用数组的方法设置cookies

    php中用数组的方法设置cookies

    php中用数组的方法设置cookies,需要的朋友可以参考下。
    2011-04-04
  • PHP获取文件行数的方法

    PHP获取文件行数的方法

    这篇文章主要介绍了PHP获取文件行数的方法,实例分析了两种php获取文件行数的技巧,需要的朋友可以参考下
    2015-06-06
  • PHP7 preg_replace 出错及解决办法

    PHP7 preg_replace 出错及解决办法

    在本篇文章里小编给大家整理的是一篇关于PHP7 preg_replace 出错及解决办法,有需要的朋友们可以跟着学习下。
    2021-12-12
  • 简单的方法让你的后台登录更加安全(php中加session验证)

    简单的方法让你的后台登录更加安全(php中加session验证)

    通过特定文件为后台入口注册session,否则失败退出。即直接使用原后台地址将无法登录后台。这样一来,入口文件名的多样性、可变更性将为你的后台登录提供更加安全的环境
    2012-08-08
  • PHP获取星期几的常用方法小结

    PHP获取星期几的常用方法小结

    这篇文章主要介绍了PHP获取星期几的常用方法,结合实例形式分析了php使用date函数获取指定日期星期几的具体操作技巧与相关注意事项,需要的朋友可以参考下
    2018-12-12
  • redirect_uri参数错误的解决方法(必看)

    redirect_uri参数错误的解决方法(必看)

    下面小编就为大家带来一篇redirect_uri参数错误的解决方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • php+html优化页面显示速度的方法小结

    php+html优化页面显示速度的方法小结

    这篇文章主要为大家详细介绍了php结合html优化页面显示速度的一些常见方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • php超快高效率统计大文件行数

    php超快高效率统计大文件行数

    这篇文章主要介绍了php超快高效率统计大文件行数的相关资料,需要的朋友可以参考下
    2015-07-07

最新评论