程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php 進階:實現無限分類(3)

php 進階:實現無限分類(3)

編輯:PHP綜合
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 "<FORM ACTION="$PHP_SELF?func=save" METHOD=POST>";

echo "<table>";
echo "<tr><td>所屬類別:$type</td></tr>";
echo "<tr><td>創建分類:<input type=text name='type' SIZE=10 MAXLENGTH=100></td></tr>";

echo "<tr><td>";
$cat=$cat+1;
echo "<input type=hidden name=id value='$cat'>";
echo "<input type=hidden name=uid value='$uid'>";
echo "<input type=hidden name=route_char value='$route_char'>";
echo "<INPUT TYPE=submit NAME='Save' VALUE='保存'></td></tr>";

echo "</table>";
echo "</form>";
endif; /* end createtype */

//顯示分類************************************************
if ($func=='showtype'):

echo "<table>";

//判斷分類的狀態
if ($uid!=0) {
$result=MySQL_query("select * from type where id=$uid");
$type=MySQL_result($result,0,"type");
} else {
$type='父分類';
}

echo "<tr><td><a href='$PHP_self?func=createtype&uid=$uid'>創建分類</a></td></tr>";

echo "<tr><td>$type</td></tr>";

$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 "<tr><td>";
echo "<a href='$PHP_self?func=showtype&uid=$id'>$type</a>";
echo "</td></tr>";
}
}

echo "</table>";
endif; /* end showtype */
.....
.....

?>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved