php smarty 二级分类代码和模版循环例子_php技巧

二级分类的数据表结构如下:


PHP代码如下

复制代码 代码如下:

/**
@ 文章分类 含二级分类
@ param int $rootnum -- 一级分类数量
@ param int $childnum -- 二级分类数量
@ 返回值 array
@ date 2011.2.24
*/
function temp_articletreecate($rootnum,$childnum){
if(!isnumber($rootnum)){
$rootnum = 10;
}
if(!isnumber($childnum)){
$childnum = 10;
}
$category = array();
$parent_sql = "SELECT cateid,catename FROM ".TABLE_PREFIX."articlecate WHERE parentid=0 AND depth=0 AND flag=1 ORDER BY orders ASC";
if(intval($rootnum)>0){
$parent_sql.=" LIMIT $rootnum";
}
$parent_cate = $GLOBALS['db']->getall($parent_sql);
foreach($parent_cate as $parent_key => $parent_value){
//子类数组名为 childcategory 根据情况自定义名称
$category[] = array('cateid'=>$parent_value['cateid'],'catename'=>$parent_value['catename'],'childcategory'=>array());

//读取子类
$child_sql = "SELECT cateid,catename FROM ".TABLE_PREFIX."articlecate WHERE parentid=".$parent_value['cateid']." AND flag=1 ORDER BY orders ASC";
if(intval($childnum)>0){
$child_sql.=" LIMIT $childnum";
}
$child_cate = $GLOBALS['db']->getall($child_sql);
foreach($child_cate as $child_key => $child_value){
$category[count($category)-1]['childcategory'][] = array('cateid'=>$child_value['cateid'],'catename'=>$child_value['catename']);
}
}
return $category;
}

PHP页面调用分类,如index.php

复制代码 代码如下:

$goodscatetree = array();
$goodscatetree = temp_goodstreecate(4,0); //调用分类函数(含二级分类)4--表示一级分类只显示4个,0--表示二级分类不限数量
$tpl>assign("goodscatetree",$goodscatetree); //执行smarty引擎
$tpl->display->(index.tpl); //输出smarty模版页面

TPL模版页面输出分类,如index.tpl页面

复制代码 代码如下:

{section name=p loop=$goodscatetree}
一级分类:{$goodscatetree[p].catename}
{section name=c loop=$goodscatetree[p].childcategory}
二级分类:{$goodscatetree[p].childcategory[c].catename}
{/section}
{/section}

时间: 2025-01-20 14:27:55

php smarty 二级分类代码和模版循环例子_php技巧的相关文章

php smarty 二级分类代码和模版循环例子_php模板

二级分类的数据表结构如下: 复制代码 代码如下: PHP代码如下 /** @ 文章分类 含二级分类 @ param int $rootnum -- 一级分类数量 @ param int $childnum -- 二级分类数量 @ 返回值 array @ date 2011.2.24 */ function temp_articletreecate($rootnum,$childnum){ if(!isnumber($rootnum)){ $rootnum = 10; } if(!isnumber

asp调用二级分类 代码

asp调用二级分类 代码 <%  dim conn  dim connstr  dim db  db="../data/1du.asp"  Set conn = Server.CreateObject("ADODB.Connection")  connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)  conn.Open connstr

php开发分页实现代码第1/3页_php技巧

项目结构: 开发分页实现代码第1/3页_php技巧-mybatis实现分页查询"> 运行效果: conn.php 复制代码 代码如下: <?php $conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误"); mysql_select_db("form", $conn); mysql_query("se

Smarty foreach控制循环次数的实现详解_php技巧

1.可以用{$array| count} 来试试.2. 复制代码 代码如下: {foreach from=$variable key=key name=name iteam=value}    {$variable|@count}     // 获取数组长度    {$smarty.foreach.loop.index}    // 获取当前循环数组元素下标,以0开始    {$smarty.foreach.loop.iteration}    // 获取当前循环次数,以1开始    {$sma

解析smarty模板中类似for的功能实现_php技巧

1. 功能说明,在页面使用smarty循环100次输出,类似for循环100次{section name=total loop=100}{$smarty.section.total.index+1} //当前的索引{$smarty.section.total.iteration} //用于显示循环的次数{/section} {assign var=i value=0}{section name=total loop=100}{assign var=i value=$i+1} {$i}     /

学php必收藏的几个经典代码第1/2页_php技巧

经典循环例子 <HTML> <HEAD> <TITLE>经典循环例子</TITLE> </HEAD> <BODY> <?     for($counter = 1; $counter <= 6; $counter++)        //循环6次     {         print("<B>counter is $counter</B><BR>\n");    /

asp调用二级分类代码

<%  dim conn  dim connstr  dim db  db="../data/1du.asp"  Set conn = Server.CreateObject("ADODB.Connection")  connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)  conn.Open connstr    sub closed

php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释_php技巧

复制代码 代码如下: function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id])) { return $cat_options[$spec_cat_id]; } /* 初始化关键参数: $level:当前子节点深度 $last_cat_id:当前父节点ID $options:带有缩进级别的数组 $cat_id_array:沿同一路径的

关于PHP模板Smarty的初级使用方法以及心得分享_php技巧

至于怎么配置,这里就不用多说了,网上一大堆.1.基本上要用到的最主要的方法就是assign和display方法.2.基本上在页面上要用到的知识就是if和foreach和section这三个.3.基本上最难的就是foreach和section.4.初学的时候老是循环不出自己想要的数据.因为感觉还是跟php啊java啊这些的foreach和for都有些差别的.很难抓住他的活动路径,很难调试他的数据.5.所以这里,我把一点点经念放出来:如果数据是这样: 复制代码 代码如下: array(0=>arra