php 进阶:实现无限分类(3)
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 "
创建分类 |
$type |
"; echo "$type"; echo " |
endif; /* end showtype */
.....
.....
?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

ubuntu掛載行動硬碟出現錯誤:mount:unknownfilesystemtype'exfat'處理方法如下:Ubuntu13.10或安裝exfat-fuse:sudoapt-getinstallexfat-fuseUbuntu13.04或以下sudoapt-add-repositoryppa:relan/ exfatCentOSLinux掛載exfat格式u碟錯誤的解決方法CentOS中載入extfa

Go中Type關鍵字的用法有定義新的型別別名或建立新的結構體類型。詳細介紹:1、類型別名,使用「type」關鍵字可以為現有的類型建立別名,這種別名不會建立新的類型,只是為現有的類型提供一個新的名稱,類型別名可以提高程式碼的可讀性,使程式碼更加清晰;2、結構體類型,使用「type」關鍵字可以建立新的結構體類型,結構體是一種複合類型,可用於定義包含多個欄位的自訂類型等等。

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

在本指南中,我們將學習更多關於Linux中的”type」指令。前提條件:要執行本指南中示範的步驟,您需要以下元件:正確配置的Linux系統。查看如何建立LinuxVM用於測試和學習目的。對命令列介面的基本理解Linux中的Type指令與其他Linux專用指令(例如:ls、chmod、shut、vi、grep、pwd等)不同,”type”指令是一個內建的Bash函數,它顯示為參數提供的命令類型的資訊。 $type除了Bash,其他砲彈(Zsh、Ksh等)還附帶

雙網卡配置:在虛擬機器設定裡新增一個網卡僅主機模式,重新啟動後在/etc/udev/rules.d/70-persistent-net.rule產生一個新的MAC位址,複製網卡eth0到eth1,注意去掉UUID和修改正確的MAC位址,修改設定檔:BOOTPROTO={static|none|dhcp|bootp}:要使用靜態位址,使用static或none;dhcp表示使用DHCP伺服器取得位址;IPADDR=:IP位址NETMASK=:子網路遮罩GATEWAY=:設定預設閘道;兩張網路卡只能設定一

摘要Redis是一款開源的高效能key-value資料庫,廣泛應用於各種場景。在Redis中,資料類型(type)和編碼(encoding)是非常重要的概念。本篇部落格將詳細介紹Redis支援的資料類型以及對應的編碼方式和底層實作原理。要查看Redis某個key的內部編碼,可以使用Redis指令OBJECTENCODINGkey。其中,key是你想要查詢的鍵名。例如,如果你想要查詢名為mykey的鍵的內部編碼,可以執行以下命令:127.0.0.1:6379>objectencodin

每個人都在期待今天的Windows1123H2發布。事實上,Microsoft剛剛啟動了發布預覽版的更新,這是正式發布階段之前最接近的頻道。被稱為Build22631的Microsoft表示,他們正在推出新的更名聊天應用程序,電話鏈接和一起玩小部件,這些小部件在過去幾個月中已在其他內部渠道中進行了測試。 「這個新的更新將具有與Windows11版本22H2相同的服務分支和程式碼庫,並將與所有新宣布的功能累積,包括Windows中的Copilot(預覽版),」Microsoft承諾。雷德蒙官員進一

必填信息:1、郵箱註冊;2、手機號碼註冊;3、第三方社交平台註冊。註冊成功後通常還需要填寫一些基本個人信息,如暱稱、性別、生日等。
