初学递归,接触无限分类,小小的尝试

今日学习的是无限循环,这与递归有关。其实我自己还不是完全熟悉和上手,还需要琢磨琢磨。

初步学习递归,算是无限分类的一个小练习。

表:cate
id int auto 自动递增
pid int 0为最大的分类
catename varchar 分类名称

读取数据库的cate表分类如下:

//分类练习
include ‘../include.php‘;

function getList($pid=0,&$result=array(),$spac=0)
{
    $spac = $spac + 4;
    $sql = "SELECT * FROM cate where pid=‘$pid‘ ";
    $query = mysql_query($sql);

    //获取数组,传入$result
    while($row = mysql_fetch_assoc($query))
    {
        $row[‘catename‘] = str_repeat(‘ ‘, $spac).‘|--‘.$row[‘catename‘];
        $result[] = $row;
        //递归就是调用自己本身
        getList($row[‘id‘],$result,$spac);
    }
    return $result;
}

//封装
function display($pid=0)
{
    $rs = getList($pid);
    $str = ‘<select name="cate">‘;
    foreach ($rs as $key => $value) {
        $str .="<option>{$value[‘catename‘]}</option>";
    }
    return $str .="</select>";
}
echo display();

运行效果:


输入分类:

<title>添加分类</title>

添加分类


<form method="post" action="cate.php">
<table width="600" align="center" border="0" cellpadding="0" cellspacing="1" >
    <tr>
     <td width="80">请输入分类</td>
     <td width="40"><input type="text" name="catename" size="20"></td>
     <td width="50">分类id</td>
     <td width="30"><input type="text" name="pid"></td>
     <td><input type="submit" name="sub" value="提交"></td>
    </tr>

</table>
<!-- 方便自己查看做的实时表查看分类 -->
<table align="center" border="1">
    <h1 align="center">现有信息表</h1>
<hr>
<?php
while($res = mysql_fetch_array($query))
    {
?>
    <tr>
        <td>id:</td>
        <td><?php echo $res[‘id‘]; ?></td>
        <td>分类名称</td>
        <td><?php echo $res[‘catename‘]; ?></td>
        <td>pid:</td>
        <td><?php echo $res[‘pid‘]; ?></td>
        <br>
    </tr>

}
echo ‘

</form>
</body>
</html>‘;

// 实时表到这里结束

//填写分类名称catename,pid
if(isset($_POST[‘sub‘])){
    $catename = $_POST[‘catename‘];
    $pid = $_POST[‘pid‘];
    $table = ‘cate‘;

    if(empty($catename))
    {
        echo "分类名不能为空哦";
    }else{
        cate($table,$catename,$pid);//调用 sql.func.php中的cate分类函数
    }
}

?>
运行效果:

时间: 2024-10-01 22:37:45

初学递归,接触无限分类,小小的尝试的相关文章

php不用递归完成无限分类,从表设计入手完整演示过程

无限分类是什么就不废话了,可以用递归实现,但是递归从数据库取东西用递归效率偏低,如果从表设计入手,就很容易做到网站导航的实现,下面是某论坛导航,如下图 网上无限分类大多不全面,今天我会从设计表开始, 首先我们先做视图界面, <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>白超华-博客园</title> &

TreeView递归绑定无限分类数据

实现一个动态绑定,无限级分类数据时,需要将数据绑定到TreeView控件,分类表的结构是这样的: 字段 类型 Id int ParentId int Name Nvarchar(64) 实现数据绑定: private void ControlsDataBind() { tvCategory.Nodes.Clear(); List<Models.Category> types = CommonNews.Helper.OperateContext.Current.LoadNewsTypes();

php递归获取无限分类菜单

从数据库获取所有菜单信息,需要根据id,pid字段获取主菜单及其子菜单,以及子菜单下的子菜单,可以通过函数递归来实现. <?php class Menu { public $menu = array(); public function __construct() { $this->menu = array( array('id'=>1, 'title'=>"首页",'pid'=>0), array('id'=>158,'title'=>&qu

不用递归实现无限分类数据的树形格式化

<?php /** * 此方法由@Tonton 提供 * http://my.oschina.net/u/918697 * @date 2012-12-12 */ function genTree5($items) { foreach ($items as $item) $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']]; return isset($items[0]['son']) ? $items[0]['son

无限分类树操作

获取相应分类id的分类树: public static function getCategoryTree($id){ //$model=M('category'); if($id>0){ $obj=self::selectTable('category',array('id'=>$id),true);//$model->where(array('id'=>$id))->find(); if(!is_null($obj)){ $childList=self::selectTab

深度实现session【包括session入库、session机制和session和cookie的使用方法,完善会话机制(在分布式机器中也能使用)】、无限分类的实现

1.session的注意点:@session_start();//这个配置需要注意,session开启中会有影响,所以使用错误抑制符进行限制[并且使用php.ini对session进行自动开启] session_start()前的输出问题:[session信息本身会增加到http头信息,也就是http主体不能在头前]对php.ini中的输出缓存进行配置,out_buffer的配置[注意:开启之后能够保证输出内容在脚本中缓存] [注意](1)脚本中session变量的键只能是字符串类型的[$_SE

问答项目---递归重新排序无限极子分类数组

递归重新排序无限极子分类数组方法: // 递归重新排序无限极子分类数组 function recursive($array,$pid=0,$level=0){ $arr = array(); foreach ($array as $v) { if($v['pid'] == $pid){ $v['level'] = $level; $v['html'] = str_repeat('--',$level); $arr[] = $v; $arr = array_merge($arr,recursive

递归无限分类笔记

最近项目都上线了每天巩固一下php知识,下面是关于递归无限分类的比较供大家参考! 数据库一个表就可以了,增加一个parendid字段 也就是子级分类 ,排序大家也可以加一下字段. CREATE TABLE `category` (   `id` int(11) NOT NULL,   `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,   `sort_order` int(11) DEFAULT NULL,   `parendid` int(

无限分类三:递归

第一步,获取全部数据 第二部,写一个子分类的函数 第三,写一个递归循环函数 代码: /** * 查询所有数据 并且缓存 * */ public function authData(){ $res = $this->order('listorder asc')->select(); // 格式化 foreach($res as $k=>$v){ $result[$v['id']] = $v; } Cache::set('auth',$result); return $result; } /