今日學習的是無限循環,這與遞歸有關。其實我本身還不是徹底熟悉和上手,還須要琢磨琢磨。php
初步學習遞歸,算是無限分類的一個小練習。 ** 表:cate id int auto 自動遞增 pid int 0爲最大的分類 catename varchar 分類名稱 **html
讀取數據庫的cate表分類以下: //分類練習 include '../include.php';mysql
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();
運行效果: 輸入分類:sql
<html> <meta http-equiv="content-type" content="text/html" charset="utf8"> <head> <title>添加分類</title> </head> <body> <h1 align="center">添加分類</h1> <hr> <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>
<?php } echo '</table> </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分類函數 } } ?>數組
運行效果: 函數