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 ""; endif; /* end createtype */ //顯示分類************************************************ if ($func==showtype): echo ""; //判斷分類的狀態 if ($uid!=0) { $result=mysql_query("select * from type where id=$uid"); $type=mysql_result($result,0,"type"); } else { $type=父分類; } echo "創建分類"; echo "$type"; $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 ""; echo "$type"; echo ""; } } echo ""; endif; /* end showtype */ ..... ..... ?>