我是个PHP新手刚学会smarty现在想自己动手做个分类信息站,可是我不太明白无限分类,看别人的代码看不太明白,谁能帮帮我指点一下我,无限分类是什么原理,或者给我一个能用的无限分类程序,我还听别人说分类信息用不到无限分类,那用什么原理分类呢。

解决方案 »

  1.   

    id parent_node name
    1 表结构简单如上,parent_node为父节点,如果为0表示为顶级节点.
    2 由此就可以无限延伸,构成数型结构,所以可以说是无限分类.
      

  2.   

    <?php
     require_once("../inc/inc.php");
     
     if ($_GET["parent_id"] == "") {
      $parent_id = -1;
     } else {
      $parent_id = (integer)$_GET["parent_id"]; 
     }
     
     if (!$_GET["category_level"]) {
      $category_level = 0; 
     } else {
      $category_level = (integer)$_GET["category_level"]; 
     }
     
     if (!$_GET["pageno"]) {
      $pageno = 1; 
     } else {
      $pageno = (integer)$_GET["pageno"]; 
     }
     
     $array_level[0] = "一";
     $array_level[1] = "二";
     $array_level[2] = "三";
     $array_level[3] = "四";
     $array_level[4] = "五";
     $array_level[5] = "六";
     $array_level[6] = "七";
     $array_level[7] = "八";
     $array_level[8] = "九";
     $array_level[9] = "十";
     $pagesize = $pagesize_config;if(!$pagesize){$pagesize = 30;}
     
     $category = $categorysql->select_category_by_category_id($parent_id);
     
     if (!trim($_GET["wd"])){
      $commons = $categorysql->select_category_by_parent_id($parent_id);
     }
     else{
      $commons = $categorysql->select_category_by_parent_id_and_word($parent_id,trim($_GET["wd"])); 
     }
     
     if($commons){
      $rscount = $commons->recordcount();
     }
     
     $pagestart = $pagesize * ($pageno - 1);
     $pageend = $pagestart + $pagesize;
     
     if (!$rscount%$pagesize) {
      $totalpage = $rscount / $pagesize;
     } else {
      $totalpage = ($rscount - $rscount%$pagesize) / $pagesize + 1;
     }
    ?>
    <html lang="zh">
    <meta http-equiv="Content-Type" content="text/html;charset=GB2312">
    <head>
    <title>分类列表</title>
    <link rel=stylesheet type="text/css" href="../css.css">
    <script language="javascript" src="../js/window.js"></script>
    </head><body style="margin:10 10 10 10" onload=document.search.wd.focus()><table class="tborder" cellpadding="6" cellspacing="1" border="0" width="100%" align="center">
     <tr><td class="alt1" width="100%">
      <a title="无框架模式" href="../main.php?cols=0&file=<?php echo $PHP_SELF;?>" target="_top"><img src="../images/navbits_start.gif" border="0"></a><a title="框架模式" href="../main.php?cols=15&file=<?php echo $PHP_SELF;?>" target="_top"><img src="../images/xlink.gif" border="0"></a>
      <span class="navbar">
       <a href="../category">分类管理</a> -> <?php if(!$category->EOF && $category){echo $category->name;}?>
      </span>
     </td></tr>
    </table>
      
    <form name="search" action="<?php echo $PHP_SELF;?>" method="get">
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
     <tr valign="middle" height="40">
      <td width="190" nowrap>
       <a href="addcategory.php?parent_id=<?php echo $parent_id;?>" target="_blank"><font color=#CC0000>添加<?php echo $array_level[$category_level];?>级分类</font></a>
      </td>
      <td nowrap>
       搜索关键字: <input type="text" name="wd" value="<?php echo trim($_GET["wd"]);?>""> 
          <input type="hidden" name="category_level" value="<?php echo $category_level;?>">
          <input type="hidden" name="parent_id" value="<?php echo $parent_id;?>">
          <input type="hidden" name="rscount" value="<?php echo $rscount;?>">
          <input type="submit" name="submit" value="搜索">
      </td>
      <td align="right" nowrap>
      共有<font color=#CC0000><?php echo $rscount;?></font>个<font color=#CC0000><?php echo $array_level[$category_level];?></font>级分类
      每页<font color=#CC0000><?php echo $pagesize;?></font>个
      本页<font color=#CC0000><?php if($totalpage>$pageno){echo $pagesize;}else{echo ($rscount-($pageno-1)*$pagesize);}?></font>个
      </td>
     </tr>
    </table>
    </form><form name="frm" action="mdo.php" method="POST">
    <table width=90% align=center cellSpacing=1 cellPadding=3 class="tborder">
     <tr valign="middle" class="T1" style="color:#FFFFFF; font-weight: bold">
      <td align="center"><div align="center">分类编号</div></td>
      <td align="center"><div align="center">分类名称</div></td>
      <td align="center"><div align="center">顺序</div></td>
      <td align="center"><div align="center">是否置顶</div></td>
      <td align="center"><div align="center">是否热门</div></td>
      <td align="center"><div align="center">最后更新时间</div></td>
      <td align="center"><div align="center">编辑选项</div></td>
     </tr>
    <?php
     while(!$commons->EOF){
      if($i>=$pagestart && $i<$pageend){
        if(!$j){
         $j=$pagestart;
        }
    ?>
     <tr valign="middle" class="T<?php echo $i%2+2;?>">
      <td align="center"><div align="center">
       <?php echo $commons->Fields("CATEGORY_ID");?>
      </div></td>
      <td align="center"><div align="center">
       <?php
        $categorys = $categorysql->select_category_by_parent_id($commons->Fields("CATEGORY_ID"));
        if (!$categorys->EOF) {
       ?>
         <a href="<?php echo $PHP_SELF;?>?parent_id=<?php echo $commons->Fields("CATEGORY_ID");?>&category_level=<?php echo ($category_level+1);?>" title="<?php while(!$categorys->EOF){echo $categorys->Fields("NAME")."\n"; $categorys->movenext();}?>"><?php }?><font color="#003300"><b><?php echo $commons->Fields("NAME");?></b></font><?php if (!$categorys->EOF) {?></a><?php }?>
      </div></td>
      <td align="center"><div align="center"><font color="#999999"><?php echo $commons->Fields("SORT_ORDER");?></font></div></td>
      <td align="center"><div align="center"><font color="#999999"><?php echo $commons->Fields("IS_TOP");?></font></div></td>
      <td align="center"><div align="center"><font color="#999999"><?php echo $commons->Fields("IS_HOT");?></font></div></td>
      <td align="center"><div align="center">
       <font color="#999999"><?php $time_last=split(" ",$commons->Fields("LAST_MODIFIED"),2);echo $time_last[0];?></font>
      </div></td>
         <td align="center"><div align="center">
          <?php if ($categorys->EOF) {?><a href="../brand/index.php?category_id=<?php echo $commons->Fields("CATEGORY_ID");?>"><font color="#6699FF">品牌</font></a><?php }?>
          <?php if ($categorys->EOF) {?><a href="../attribute/index.php?category_id=<?php echo $commons->Fields("CATEGORY_ID");?>"><font color="#FF0000">属性</font></a><?php }?>
          <a href="#" onclick="<?php if ($categorys->EOF){echo "if(tishiadd()){";}?>new_window('addcategory.php?parent_id=<?php echo $commons->Fields("CATEGORY_ID");?>');<?php if ($categorys->EOF){echo "}";}?>"><font color="#FF9933">添加子分类</font></a>
          <a href="editcategory.php?category_id=<?php echo $commons->Fields("CATEGORY_ID");?>" target="_blank"><font color=green>编辑</font></a>
       <input name="checkbox<?php echo (integer)$i?>" type="checkbox" value="<?php echo $commons->Fields("CATEGORY_ID");?>">
      </div></td>
     </tr>
    <?php
       $j++;
       }
      $i++;
      $commons->movenext();
     }
    ?>
      <tr><td align="right" colspan="6">
      <input type="hidden" name="category_level" value="<?php echo $category_level;?>">
      <input type="hidden" name="parent_id" value="<?php echo $parent_id;?>">
      <input type="hidden" name="pageno" value="<?php echo $pageno;?>">
      <input type="hidden" name="rscount" value="<?php echo $rscount;?>">
      <input type="button" name ="true" value="全选" onclick="javascript:
      <?php for($i=$pagestart;$i<$j;$i++){echo "document.frm.checkbox".$i.".checked=true;";}?>">
      <input type="button" name ="false" value="全否" onclick="javascript:
      <?php for($i=$pagestart;$i<$j;$i++){echo "document.frm.checkbox".$i.".checked=false;";}?>">
      <input type="button" name ="false" value="反选" onclick="javascript:
      <?php for($i=$pagestart;$i<$j;$i++){echo "if(document.frm.checkbox".$i.".checked==false){document.frm.checkbox".$i.".checked=true;}else{document.frm.checkbox".$i.".checked=false;}";}?>">
      <input type="submit" name ="submit" value="删除所选" onclick="javascript:return tishi();">
      <?php if($category_level!=0){?>
      <input type="submit" name ="submit" value="更改父分类">
      <?php }?>
    </form>
      </td><td align="right" colspan="2">
    <form name="page" method="GET" action="<?php echo $PHP_SELF;?>">
      <select name="pageno" onchange="javascript:window.location=('<?php echo $PHP_SELF;?>?parent_id=<?php echo $parent_id;?>&category_level=<?php echo $category_level;?>&pageno='+this.options[this.selectedIndex].value)">
    <?php
     for($i=1;$i<=$totalpage;$i++){
      echo "\t\t\t<option value=".$i;
      if($pageno==$i){echo " selected";} 
      echo ">第".$i."页</option>\n";
     }
    ?>
      </select>
      <input type="hidden" name="category_level" value="<?php echo $category_level;?>">
      <input type="hidden" name="parent_id" value="<?php echo $parent_id;?>">
    </form>
     </td></tr>
    </table>
    </body>
    </html>
      

  3.   

    http://download.csdn.net/source/1525095   这是我发的一个无限分类的资源,你中以去下了看看。
      

  4.   

    2楼好长的代码不过LZ好像要用smarty哦?
      

  5.   

    http://download.csdn.net/source/1525095网址不错,去看看
      

  6.   

    http://blog.csdn.net/kao331431214/archive/2010/03/29/5425698.aspx
    这个非常好