




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、任務(wù)八 接收、閱讀、刪除郵件分頁(yè)瀏覽郵件打開(kāi)并閱讀郵件刪除郵件8.1 分頁(yè)瀏覽郵件8.1.1 收郵件功能描述在收郵件界面中需要實(shí)現(xiàn)以下描述的功能任務(wù):(1)能夠獲取當(dāng)前用戶收件箱中尚未設(shè)置刪除標(biāo)志的郵件總數(shù)并顯示出來(lái);(2)能夠?qū)崿F(xiàn)郵件的分頁(yè)瀏覽功能,輸出“首頁(yè)、上頁(yè)、下頁(yè)、尾頁(yè)”的文本或者超鏈接,若當(dāng)前顯示的是第一頁(yè)中的郵件信息,則“首頁(yè)”和“上頁(yè)”鏈接不可用,若當(dāng)前顯示的是最后一頁(yè)中的郵件信息,則“下頁(yè)”和“尾頁(yè)”鏈接不可用;(3)能夠根據(jù)用戶點(diǎn)擊的頁(yè)面超鏈接進(jìn)行換頁(yè),例如,若當(dāng)前正在顯示的是第2頁(yè),點(diǎn)擊“下頁(yè)”超鏈接后,能夠?qū)㈨?yè)碼3提交給服務(wù)器,以打開(kāi)下頁(yè)中的郵件信息;若此時(shí)點(diǎn)擊“上頁(yè)”
2、超鏈接,能夠?qū)㈨?yè)碼1提交給服務(wù)器,以打開(kāi)上頁(yè)中的郵件信息;8.1.1 收郵件功能描述(4)能夠通過(guò)查詢語(yǔ)句中的限制子句limit獲取每頁(yè)中指定的郵件,能夠使用mysqli_fetch_array() 函數(shù)從查詢結(jié)果記錄集中獲取一條記錄(即一封郵件的所有信息),然后使用數(shù)組形式將每封郵件的發(fā)件人、主題、收發(fā)日期以及郵件中是否有附件等信息顯示到郵件列表中,若是有附件,就在指定列中顯示附件小圖標(biāo)flag-1.jpg;(5)點(diǎn)擊任意郵件中的發(fā)件人或者郵件主題信息時(shí),能夠?qū)?dāng)前郵件的emailno列值(即郵件序號(hào))提交給服務(wù)器,完成郵件的打開(kāi)與閱讀功能;(6)選中需要?jiǎng)h除郵件左側(cè)的復(fù)選框,點(diǎn)擊“刪除”按
3、鈕之后,能夠?qū)⑦x中的所有郵件設(shè)置為已刪除郵件。8.1.2 用$_GET接收URL附加數(shù)據(jù)三個(gè)知識(shí)點(diǎn)使用超鏈接提交數(shù)據(jù)的功能說(shuō)明用$_GET接收URL附加數(shù)據(jù)用一個(gè)文件實(shí)現(xiàn)數(shù)據(jù)的提交與接收演示項(xiàng)目文件打開(kāi)收郵件界面,觀察如下效果將鼠標(biāo)停留在“首頁(yè)、上頁(yè)、下頁(yè)、尾頁(yè)”相關(guān)鏈接上,觀察顯示的URL信息將鼠標(biāo)停留在某封郵件鏈接上,觀察URL信息點(diǎn)擊超鏈接提交數(shù)據(jù)功能說(shuō)明在收郵件界面中,使用非常多的一個(gè)功能是點(diǎn)擊超鏈接向服務(wù)器端提交數(shù)據(jù),也就是在打開(kāi)鏈接文件的同時(shí),向該文件中提交了指定的數(shù)據(jù)。例如,點(diǎn)擊首頁(yè)、上頁(yè)、下頁(yè)、尾頁(yè)時(shí),需要向服務(wù)器提交一個(gè)數(shù)字值,作為將要顯示的頁(yè)面的頁(yè)碼信息;點(diǎn)擊任意郵件的發(fā)件
4、人或者郵件主題時(shí),則需要向服務(wù)器提交當(dāng)前郵件的emailno列值,指定要打開(kāi)閱讀的郵件序號(hào)。功能實(shí)現(xiàn)方案點(diǎn)擊超鏈接向服務(wù)器端提交數(shù)據(jù),之后在服務(wù)器端獲取該數(shù)據(jù),這兩個(gè)功能的實(shí)現(xiàn)可以分別在兩個(gè)文件中完成,也可以放在一個(gè)文件內(nèi)部來(lái)實(shí)現(xiàn)。例如在收郵件界面中,點(diǎn)擊某個(gè)郵件的發(fā)件人或主題打開(kāi)郵件時(shí),點(diǎn)擊的超鏈接元素屬于頁(yè)面文件receiveemail.php,超鏈接要打開(kāi)的文件則是openemail.php,即提交數(shù)據(jù)的頁(yè)面是receiveemail.php,接收數(shù)據(jù)的頁(yè)面則是openemail.php;而收郵件界面中,點(diǎn)擊首頁(yè)、上頁(yè)、下頁(yè)、尾頁(yè)時(shí),點(diǎn)擊的超鏈接元素屬于頁(yè)面文件receiveemail.
5、php,超鏈接要打開(kāi)的文件還是receiveemail.php,即提交數(shù)據(jù)和接收數(shù)據(jù)的都是receiveemail.php文件。使用URL方式提交數(shù)據(jù)需要解決的問(wèn)題需要解決的問(wèn)題有兩個(gè):第一,在超鏈接中需要如何設(shè)置,才能在點(diǎn)擊時(shí)將數(shù)據(jù)提交給服務(wù)器?第二,超鏈接提交的數(shù)據(jù)在服務(wù)器端如何使用系統(tǒng)數(shù)組$_GET獲取?在超鏈接中設(shè)置向服務(wù)器端提交數(shù)據(jù),需要使用href=url?鍵名=鍵值來(lái)完成。使用$_GET鍵名獲取應(yīng)用示例-創(chuàng)建get.html創(chuàng)建文件get.html,在內(nèi)部設(shè)置超鏈接,鏈接熱點(diǎn)是“點(diǎn)擊超鏈接,觀察地址欄的變化”,鏈接打開(kāi)的文件是get.php,點(diǎn)擊超鏈接時(shí),向服務(wù)器端提交的數(shù)據(jù)對(duì)是
6、data=123。頁(yè)面主體內(nèi)容代碼如下:點(diǎn)擊超鏈接,觀察地址欄的變化點(diǎn)擊超鏈接時(shí),將信息123使用鍵名data提交到服務(wù)器的$_GET系統(tǒng)數(shù)組中,只要使用代碼$_GETdata即可獲取信息123應(yīng)用示例-創(chuàng)建get.php文件創(chuàng)建文件get.php,獲取并輸出get.html文件中超鏈接提交的數(shù)據(jù)。核心代碼如下:將提交數(shù)據(jù)與接收數(shù)據(jù)功能合并在一個(gè)文件中實(shí)現(xiàn)將提交數(shù)據(jù)與接收數(shù)據(jù)功能合并在一個(gè)文件中實(shí)現(xiàn),是指在這個(gè)文件中創(chuàng)建超鏈接,超鏈接href屬性指定要鏈接的文件仍舊是該文件本身,即點(diǎn)擊超鏈接提交的數(shù)據(jù)仍舊由當(dāng)前文件自己接收并處理,提交數(shù)據(jù)在瀏覽器端完成,而接收數(shù)據(jù)在服務(wù)器端完成。簡(jiǎn)單描述如下:
7、一個(gè)文件先提交數(shù)據(jù),而后接收并處理自己所提交的數(shù)據(jù)修改get.php文件修改頁(yè)面文件get.php,按如下結(jié)構(gòu)合并原get.html文件代碼和get.php文件代碼 點(diǎn)擊超鏈接,觀察地址欄的變化 文件get.php運(yùn)行結(jié)果如下:左圖為點(diǎn)擊超鏈接之前,初始運(yùn)行效果,右圖為點(diǎn)擊超鏈接之后的結(jié)果思考問(wèn)題:為什么在左側(cè)圖中會(huì)出現(xiàn)提示信息“undefined index: data”即,在頁(yè)面文件get.php代碼$data=$_GETdata;中出現(xiàn)未定義的下標(biāo)索引data?該如何解決?問(wèn)題分析與解決方案說(shuō)明產(chǎn)生問(wèn)題的原因:頁(yè)面文件get.php第一次運(yùn)行時(shí),尚未點(diǎn)擊超鏈接,也就是說(shuō)還沒(méi)有使用data
8、=123向超鏈接指向的文件get.php中提交數(shù)據(jù),所以在系統(tǒng)數(shù)組$_GET中也就不存在鍵名下標(biāo)data,而在點(diǎn)擊超鏈接之后數(shù)據(jù)被提交到頁(yè)面文件get.php中,存在系統(tǒng)數(shù)組元素$_GETdata,獲取之后就可以顯示出來(lái)解決該問(wèn)題需要使用isset()函數(shù)在使用系統(tǒng)數(shù)組元素$_GETdata之前,先使用isset()函數(shù)判斷該元素是否已經(jīng)設(shè)置,若是設(shè)置了,再獲取其中保存的數(shù)據(jù),否則不做任何處理修改頁(yè)面文件get.php修改頁(yè)面文件get.php,增加條件判斷語(yǔ)句,修改后的代碼如下: 點(diǎn)擊超鏈接,觀察地址欄的變化 使用isset($_GETdata)檢測(cè)系統(tǒng)數(shù)組元素$_GETdata是否設(shè)置,即
9、檢測(cè)其是否存在,若是存在,返回真值,則if()條件成立,進(jìn)而執(zhí)行后續(xù)兩行代碼處理該數(shù)組元素中保存的數(shù)據(jù)。使用超鏈接同時(shí)提交多個(gè)數(shù)據(jù)若是要在點(diǎn)擊超鏈接時(shí)向鏈接的文件中傳遞多個(gè)數(shù)據(jù),可以在href屬性取值中使用&符號(hào)連接新的鍵名與鍵值,例如href=get.php?data=123&name=jinnan,點(diǎn)擊超鏈接之后就可以使用系統(tǒng)數(shù)組元素$_GETdata獲取提交的第一個(gè)數(shù)據(jù),使用$_GETname獲取提交的第二個(gè)數(shù)據(jù)。8.1.3 處理查詢結(jié)果記錄集中的記錄打開(kāi)收件箱后,在顯示每頁(yè)中的郵件信息時(shí),需要從查詢結(jié)果記錄集中逐條獲取記錄,然后再使用數(shù)組形式獲取每條記錄中每個(gè)列的列值。PHP中提供了m
10、ysqli_fetch_array()、mysqli_fetch_row()、mysqli_fetch_object()、mysqli_fetch_assoc() 等多種不同的函數(shù)來(lái)處理查詢結(jié)果記錄集中的記錄,此處講解mysqli_fetch_array() 和mysqli_fetch_object() 這兩個(gè)常用的函數(shù)。1. mysqli_fetch_array() 函數(shù)使用該函數(shù)可以從查詢結(jié)果記錄集中獲取記錄指針?biāo)赶虻挠涗?。格式為:array mysqli_fetch_array(查詢結(jié)果記錄集)返回結(jié)果是數(shù)組形式保存的記錄信息或者是false如果記錄指針指向某條存在的記錄,則將獲取記錄
11、中所有的列,并且以一個(gè)數(shù)組的形式保存;如果記錄指針指向最后一條記錄之后,則返回false。數(shù)組元素的訪問(wèn)對(duì)于存放記錄信息的數(shù)組,可以使用兩種形式訪問(wèn)數(shù)組元素:第一種是使用從0開(kāi)始的數(shù)字索引,索引0代表查詢結(jié)果中第一個(gè)列的信息,索引1代表第二個(gè)列的信息;第二種是使用鍵名訪問(wèn),使用數(shù)據(jù)表中的列名作為數(shù)組元素的鍵名,因?yàn)檫@種形式更直觀更容易理解,使其成為程序中的主要用法。小實(shí)例創(chuàng)建頁(yè)面文件fetch_array.php,查詢數(shù)據(jù)表emailmsg中emailno列值為1的記錄信息,然后完成下面操作:假設(shè)獲取的查詢結(jié)果記錄集為$res,需要使用如下步驟輸出:使用$row=mysql_fetch_arr
12、ay($res)獲取記錄集中的記錄使用$rowemailno、$rowsender、$rowreceiver等分別輸出郵件序號(hào)、發(fā)件人和收件人等信息實(shí)例擴(kuò)展獲取emailmsg表中發(fā)件人為wangaihua11的記錄,以表格形式輸出,輸出時(shí),表格標(biāo)題行內(nèi)容:發(fā)件人、收件人、主題、收發(fā)日期執(zhí)行完查詢語(yǔ)句之后輸出表格標(biāo)記和標(biāo)題行內(nèi)容使用循環(huán)結(jié)構(gòu)輸出表格數(shù)據(jù)行,循環(huán)條件為$row=mysql_fetch($res),獲取到記錄則循環(huán),否則結(jié)束循環(huán)循環(huán)之后輸出表格結(jié)束標(biāo)記2.mysqli_fetch_object() 函數(shù)使用該函數(shù)可以從查詢結(jié)果記錄集中獲取記錄指針?biāo)赶虻挠涗?。格式為:object
13、mysqli_fetch_object(查詢結(jié)果記錄集)。若是指向的記錄存在,則將返回的結(jié)果保存為對(duì)象,使用表中的列名作為對(duì)象的屬性來(lái)獲取各個(gè)列的值;若是指向的記錄不存在,則返回false。實(shí)現(xiàn)收件箱基本功能三個(gè)知識(shí)點(diǎn)收件箱頁(yè)面布局說(shuō)明收件箱郵件總數(shù)查詢方法說(shuō)明獲取并顯示收件箱郵件總數(shù)收件箱頁(yè)面運(yùn)行效果點(diǎn)擊email.php頁(yè)面中左側(cè)的“收信”或者“收件箱”超鏈接時(shí),要從右側(cè)的浮動(dòng)框架子窗口中顯示右圖所示的頁(yè)面運(yùn)行效果8.1.4 分頁(yè)瀏覽郵件在眾多的動(dòng)態(tài)頁(yè)面中,要瀏覽保存在數(shù)據(jù)庫(kù)中的大量數(shù)據(jù),都需要使用分頁(yè)瀏覽技術(shù),例如一個(gè)留言板下面的數(shù)千條留言、郵箱中的數(shù)千封郵件等等,使用分頁(yè)瀏覽技術(shù)之后,
14、無(wú)論數(shù)據(jù)量怎樣變化,都能保證頁(yè)面的長(zhǎng)度不會(huì)發(fā)生任何變化,變化的只有頁(yè)數(shù),只要用戶點(diǎn)擊進(jìn)入自己需要的頁(yè)面查閱信息即可。收件箱頁(yè)面布局需要?jiǎng)?chuàng)建的文件需要?jiǎng)?chuàng)建的文件有樣式文件receiveemail.css和頁(yè)面文件receiveemail.php,在頁(yè)面文件中引用樣式文件。收件箱頁(yè)面的頁(yè)面邊距要定義為0(需要在receiveemail.css文件中增加樣式代碼bodymargin:0;)盒子div1的樣式要求盒子div1的樣式要求如下:寬度為自動(dòng),高度為25px,上下填充為0,左右填充為10px,邊距是0,盒子中文本字號(hào)為10pt,文本的行高是25px查詢條件分析獲取當(dāng)前登錄賬號(hào)收件箱中郵件總數(shù)時(shí)
15、需要使用的查詢語(yǔ)句中條件比較復(fù)雜,假設(shè)有四封郵件的收件人receiver列值分別如下:第一封:; ;第二封:;第三封:;第四封:;思考問(wèn)題:設(shè)變量$uname的內(nèi)容是,如何設(shè)置條件,保證正確查到第一封和第二封郵件?能否直接使用receiver like %$uname%,為什么?使用receiver like %$uname%將獲取到這四封郵件,不符合要求,所以不可使用查詢條件設(shè)置方法正確設(shè)置方法為:receiver like $uname% or receiver like %;$uname%即若是要查詢的賬號(hào)在所有收件人開(kāi)始的位置,則通過(guò)receiver like $uname%條件一定能
16、夠找到;若要查詢的賬號(hào)在中間的某個(gè)位置,則通過(guò)receiver like %;$uname%一定能夠精確找到。獲取并顯示收件箱中的郵件總數(shù)內(nèi)容設(shè)計(jì)步驟設(shè)計(jì)這一部分內(nèi)容需要通過(guò)如下幾個(gè)操作步驟來(lái)實(shí)現(xiàn):第一步,啟用session,獲取$_SESSION數(shù)組中存儲(chǔ)的登錄賬號(hào)信息,并在后面連接上,為設(shè)計(jì)查詢條件做好準(zhǔn)備;第二步,連接打開(kāi)數(shù)據(jù)庫(kù),查詢表emailmsg列receiver中包含當(dāng)前登錄賬號(hào)且沒(méi)有被刪除的郵件信息第三步,獲取查詢結(jié)果記錄集中的記錄數(shù),即為當(dāng)前用戶收件箱中的郵件總數(shù),在div1內(nèi)部輸出。完成div1內(nèi)容的代碼在receiveemail.php文件中增加如下代碼盒子div2及子元
17、素的樣式要求盒子div2的樣式:寬度自動(dòng),高度自動(dòng),上下填充5px,左右填充20px,上下邊距5px,左右邊距0,背景淺灰色#eee,下邊框1像素、實(shí)線、顏色#aaf。(最后要清除高度塌陷)盒子div2-1的樣式:寬度自動(dòng),高度自動(dòng),填充是0,邊距是0,向左浮動(dòng);使用樣式選擇符.div2-1 input定義盒子內(nèi)的兩個(gè)按鈕中顯示的文本字號(hào)是10pt。盒子div2-2的樣式:寬度自動(dòng),高度自動(dòng),填充0,邊距0,向右浮動(dòng),文本行高25px,文本字號(hào)10pt。刪除和刷新按鈕說(shuō)明刪除按鈕的功能:在頁(yè)面中選擇要?jiǎng)h除的郵件之后,點(diǎn)擊“刪除”按鈕時(shí)能夠?qū)⑧]件設(shè)置為已刪除狀態(tài),該功能需要通過(guò)執(zhí)行指定的dele
18、te.php文件來(lái)完成,該按鈕需要設(shè)置為submit類(lèi)型;點(diǎn)擊刷新按鈕時(shí),要保證在當(dāng)前窗口中重新運(yùn)行頁(yè)面文件receiveemail.php,目的是若用戶收到了新的郵件,能夠及時(shí)刷新頁(yè)面(為了降低復(fù)雜性,該項(xiàng)目中沒(méi)有使用自動(dòng)刷新顯示新郵件功能),該按鈕需要設(shè)置為普通的button按鈕。添加div、刪除和刷新按鈕在receiveemail.php中div1盒子的后面增加div2和內(nèi)部嵌套的div2-1,添加如下內(nèi)容:確定每頁(yè)中要顯示的記錄數(shù)和郵件的總頁(yè)數(shù)每頁(yè)中要顯示的記錄數(shù),直接在代碼中給定即可,例如$pagesize=5;收件箱中的郵件頁(yè)數(shù)根據(jù)郵件總數(shù)和每頁(yè)中的記錄數(shù)來(lái)計(jì)算,因?yàn)榈玫降泥]件頁(yè)數(shù)
19、可能是小數(shù),所以需要使用函數(shù)ceil()取得不小于該數(shù)的最小整數(shù)。例如,若獲取的記錄總數(shù)$reccount為17,設(shè)置的每頁(yè)記錄數(shù)$pagesize為5,則兩者相除之后的結(jié)果為3.4,使用ceil(3.4)得到的結(jié)果是不小于3.4的最小整數(shù)4;在receiveemail.php中獲取到郵件總數(shù)之后插入上面代碼確定當(dāng)前要顯示郵件信息的頁(yè)碼若是用戶剛剛打開(kāi)收件箱,顯示的應(yīng)當(dāng)是第一頁(yè)的郵件信息,之后則根據(jù)用戶點(diǎn)擊的“首頁(yè)、上頁(yè)、下頁(yè)、尾頁(yè)”超鏈接獲取當(dāng)前要顯示的郵件信息的頁(yè)碼。例如,假設(shè)當(dāng)前正在顯示的是第3頁(yè)內(nèi)容,若點(diǎn)擊“上頁(yè)”超鏈接,接下來(lái)要顯示的一定是第2頁(yè),這個(gè)頁(yè)碼數(shù)字將通過(guò)點(diǎn)擊超鏈接的方式提
20、交給服務(wù)器。確定當(dāng)前要顯示郵件信息的頁(yè)碼例如,假設(shè)每個(gè)超鏈接都在href屬性中使用鍵名pageno向服務(wù)器提交數(shù)據(jù),要判斷用戶是不是剛剛打開(kāi)收件箱,需要通過(guò)檢測(cè)這些超鏈接有沒(méi)有向服務(wù)器端提交數(shù)據(jù)來(lái)實(shí)現(xiàn),若元素$_GETpageno存在,說(shuō)明已經(jīng)通過(guò)點(diǎn)擊超鏈接向服務(wù)器提交數(shù)據(jù)了,此時(shí)需要獲取元素$_GETpageno的數(shù)據(jù)作為當(dāng)前將要顯示的郵件信息的頁(yè)碼,否則當(dāng)前必須顯示第一頁(yè)郵件信息。在receiveemail.php中獲取到總頁(yè)數(shù)之后插入該語(yǔ)句設(shè)計(jì) “首頁(yè)、上頁(yè)、下頁(yè)、尾頁(yè)”時(shí)的原則若收件箱中郵件頁(yè)數(shù)為0,則首頁(yè)、上頁(yè)、下頁(yè)、尾頁(yè)都是文本若當(dāng)前顯示第一頁(yè),則“首頁(yè)”設(shè)置為普通文本,否則 “首
21、頁(yè)”為超鏈接,點(diǎn)擊時(shí)向服務(wù)器提交頁(yè)碼1;若當(dāng)前顯示第一頁(yè),則 “上頁(yè)”設(shè)置為普通文本,否則 “上頁(yè)”為超鏈接,在點(diǎn)擊時(shí)需要向服務(wù)器提交的頁(yè)碼是當(dāng)前正在顯示的頁(yè)面頁(yè)碼減去1;若當(dāng)前顯示最后一頁(yè),則 “下頁(yè)”設(shè)置為普通文本,否則 “下頁(yè)”為超鏈接,在點(diǎn)擊時(shí)需要向服務(wù)器提交的頁(yè)碼是當(dāng)前正在顯示的頁(yè)面頁(yè)碼加上1;若當(dāng)前顯示最后一頁(yè),則 “尾頁(yè)”設(shè)置為普通文本,否則設(shè)置的“尾頁(yè)”超鏈接在點(diǎn)擊時(shí)需要向服務(wù)器提交的頁(yè)碼是總頁(yè)數(shù)值。完善div2的代碼獲取當(dāng)前頁(yè)中要顯示記錄(郵件)的起始記錄號(hào)查詢當(dāng)前用戶的郵箱時(shí),若查詢結(jié)果記錄集$res中的記錄數(shù)$reccount為17,則系統(tǒng)給定的記錄編號(hào)是從0到16的數(shù)列
22、,若每頁(yè)顯示的記錄數(shù)$pagesize為5思考問(wèn)題:當(dāng)前頁(yè)碼與當(dāng)前頁(yè)中第一條記錄編號(hào)之間存在著怎樣的關(guān)系?即第一頁(yè)從哪條開(kāi)始顯示?第二頁(yè)從哪條開(kāi)始?第三頁(yè)?第四頁(yè)?第一頁(yè)從第0條開(kāi)始,顯示04條第二頁(yè)從第5條開(kāi)始,顯示59條第三頁(yè)從第10條開(kāi)始,顯示1014條第四頁(yè)從第15條開(kāi)始,顯示1516條當(dāng)前頁(yè)碼與當(dāng)前頁(yè)中第一條記錄編號(hào)之間的關(guān)系根據(jù)上表中顯示的數(shù)字關(guān)系,依據(jù)頁(yè)碼獲取當(dāng)前頁(yè)起始記錄編號(hào)的公式如下:$pagestart= ($pageno-1)* $pagesize在receiveemail.php中獲取到頁(yè)碼之后插入該語(yǔ)句獲取當(dāng)前頁(yè)中要顯示的若干條記錄實(shí)現(xiàn)這一功能,需要考慮在收件箱中顯示
23、郵件信息時(shí),要將最后收到的郵件排列在第一頁(yè)第一條,即要按照收發(fā)郵件的日期進(jìn)行降序排序,因此設(shè)計(jì)select語(yǔ)句時(shí),要使用order by子句按照郵件的收發(fā)日期進(jìn)行降序排序,使用limit子句設(shè)置要獲取記錄的起始編號(hào)和記錄數(shù);在定義的查詢收件箱所有記錄的查詢語(yǔ)句的基礎(chǔ)上增加order by和limit兩個(gè)子句的應(yīng)用,注意order by前面一定要保留一個(gè)空格,與之前的條件子句分隔開(kāi)執(zhí)行定義的查詢語(yǔ)句之后,使用變量$result保存查詢結(jié)果記錄集。在receiveemail.php中獲取到當(dāng)前頁(yè)起始記錄編號(hào)之后添加上面代碼盒子div3及子元素的樣式要求盒子div3的樣式要求為:寬度自動(dòng),高度自動(dòng),
24、填充0,邊距0;盒子內(nèi)部超鏈接的初始狀態(tài)樣式:顏色黑色、沒(méi)有下劃線,文本加粗顯示;訪問(wèn)過(guò)的狀態(tài)為:顏色為黑色、沒(méi)有下劃線,文本非加粗顯示。div3內(nèi)部表格的樣式要求使用包含選擇符.div3 table定義樣式:寬度100%。表格單元格使用包含選擇符.div3 table td定義樣式:高度30px,下邊框1像素、實(shí)線、顏色#aaf,單元格內(nèi)容在垂直方向居中,文本字號(hào)10pt。這里的下邊框用于設(shè)置每封郵件下面的橫線。表格需要包含5個(gè)列,列寬分別是30px、150px、自動(dòng)auto、20px和120px,分別使用class類(lèi)選擇符.td1, .td2,.td3,.td4和.td5定義修改recei
25、veemail.php文件在盒子div2后面增加下面代碼,添加盒子div3及內(nèi)部需要的表格教學(xué)目標(biāo)通過(guò)循環(huán)結(jié)構(gòu),逐條獲取當(dāng)前頁(yè)中的記錄,去掉發(fā)件人信息中的部分,處理日期信息得到下圖所示的日期格式思考問(wèn)題在變量$result中已經(jīng)包含了當(dāng)前頁(yè)要顯示的全部記錄,使用怎樣的程序結(jié)構(gòu)、采取何種方法從該變量中逐條取出記錄并輸出?因?yàn)樽詈笠豁?yè)剩下的記錄數(shù)并不確定,所以$result變量中的記錄數(shù)也是不確定的,因此此處可采用的最佳方案是使用while循環(huán)結(jié)構(gòu),循環(huán)條件是$row=mysqli_fetch_array($result),若是能夠從$result中取出記錄,則條件成立,接下來(lái)可輸出記錄的信息,若
26、是沒(méi)有取出記錄,則條件不成立,說(shuō)明$result記錄指針已經(jīng)指向最后一條記錄之后,循環(huán)結(jié)束即可處理$row中的數(shù)據(jù)處理$row記錄中的數(shù)據(jù),為輸出做準(zhǔn)備獲取當(dāng)前郵件的emailno列值,保存在變量$emailno中備用;截取當(dāng)前郵件sender列值中符號(hào)前面的用戶名部分,保存在變量$sender中備用(使用list($sender)=explode(,$rowsender)實(shí)現(xiàn));處理當(dāng)前郵件datesorr列值中的日期時(shí)間信息,得到“Y年m月d日”的形式保存在變量$riqi中備用;使用空格做分割符,分割$rowdatesorr內(nèi)容,保留前面日期部分保存在$datesorr中,使用-做分割符,
27、分割$datesorr的內(nèi)容,年月日分別保存在$y,$m,$d中,連接$y,$m,$d的內(nèi)容,得到“Y年m月d日”形式修改receiveemail.php文件修改receiveemail.php文件,在div3的表格內(nèi)部設(shè)計(jì)循環(huán),獲取記錄,處理記錄中的數(shù)據(jù)為輸出做準(zhǔn)備輸出郵件信息輸出表格的行起始標(biāo)記輸出表格第一列的標(biāo)記(引用選擇符td1)及內(nèi)容,內(nèi)容是復(fù)選框,name定義為markup,value屬性取值為變量$emailno的值;輸出表格第二列的標(biāo)記(引用選擇符td2)及內(nèi)容,內(nèi)容是超鏈接,鏈接熱點(diǎn)為變量$sender的值,鏈接打開(kāi)的文件是openemail.php,點(diǎn)擊后使用鍵名email
28、no向服務(wù)器端提交變量$emailno的值;輸出表格第三列的標(biāo)記(引用選擇符td3)及內(nèi)容,內(nèi)容是超鏈接,鏈接熱點(diǎn)為當(dāng)前郵件subject列值,鏈接打開(kāi)的文件是openemail.php,點(diǎn)擊后使用鍵名emailno向服務(wù)器端提交變量$emailno的值;輸出郵件信息輸出表格第四列的標(biāo)記(引用選擇符td4)及內(nèi)容,判斷當(dāng)前郵件附件列attachment的值是否為空,為空,則在單元格中輸出空格字符(該字符不可或缺,若是該字符不存在,很多瀏覽器中將無(wú)法顯示該單元格的下邊框線);若附件列的列值不為空,則輸出圖片flag-1.jpg;輸出表格第五列的標(biāo)記(引用選擇符td5)及內(nèi)容,內(nèi)容是變量$riqi
29、的值;輸出表格的行結(jié)束標(biāo)記。修改receiveemail.php文件在準(zhǔn)備好要輸出的數(shù)據(jù)之后,增加如下代碼分頁(yè)瀏覽頁(yè)面存在的問(wèn)題問(wèn)題分析:在運(yùn)行receiveemail.php的頁(yè)面中,若是選擇了一封或者幾封郵件,點(diǎn)擊“刪除”按鈕時(shí),需要運(yùn)行delete.php文件將選中的文件放入已刪除文件夾中,但是若用戶沒(méi)有選擇要?jiǎng)h除的郵件而直接點(diǎn)擊了“刪除”按鈕,需要怎樣阻止運(yùn)行delete.php文件?需要對(duì)receiveemail.php文件中的表單進(jìn)行數(shù)據(jù)驗(yàn)證,判斷如果沒(méi)有選擇要?jiǎng)h除的郵件,則阻止運(yùn)行delete.php文件需要完成的設(shè)置在receiveemail.php的標(biāo)記中設(shè)置action為d
30、elete.php創(chuàng)建腳本文件receiveemail.js,在receiveemail.php文件中引用該腳本文件定義函數(shù)validate()函數(shù)validate()的功能說(shuō)明使用document.f1.markup獲取當(dāng)前頁(yè)面中的所有復(fù)選框,構(gòu)成一個(gè)組,使用數(shù)組markup表示;定義一個(gè)變量result,初始值為false,若是判斷后發(fā)現(xiàn)頁(yè)面中有被選擇的復(fù)選框,則該變量值要修改為true,否則保持為false。使用for結(jié)構(gòu)逐個(gè)判斷復(fù)選框組中每個(gè)元素是否被選中,只要有一個(gè)被選中,則將result的值修改為true,然后使用break退出循環(huán);使用“markupi.checked”作為條件判
31、斷相應(yīng)復(fù)選框是否被選中。根據(jù)result的值確定用戶有沒(méi)有選擇復(fù)選框,若是沒(méi)有,則彈出消息框顯示提示信息,并通過(guò)return false語(yǔ)句結(jié)束函數(shù)的執(zhí)行。函數(shù)validate()的代碼如下函數(shù)validate()的調(diào)用在receiveemail.php文件的標(biāo)記中使用onsubmit=“return validate()”代碼調(diào)用函數(shù)即可8.2 打開(kāi)并閱讀郵件在receiveemail.php頁(yè)面中,點(diǎn)擊每一封郵件的發(fā)件人或者郵件主題時(shí),將打開(kāi)超鏈接所指定的頁(yè)面文件openemail.php,閱讀選擇的郵件內(nèi)容,同時(shí)還可以閱讀或下載附件。界面效果展示左圖為不帶附件的郵件閱讀界面;右圖為帶附件
32、的郵件閱讀界面8.2.1 打開(kāi)并閱讀郵件頁(yè)面的布局結(jié)構(gòu)及功能說(shuō)明div1-顯示郵件基本信息div2-顯示郵件內(nèi)容div3-顯示附件功能說(shuō)明(1)能夠根據(jù)用戶選擇的郵件序號(hào)獲取并顯示郵件信息。(2)能夠計(jì)算出附件的個(gè)數(shù)并在頁(yè)面中輸出。(3)顯示郵件內(nèi)容時(shí),必須能夠?qū)l(fā)件人在編輯郵件內(nèi)容時(shí)按下的回車(chē)鍵轉(zhuǎn)換為本頁(yè)面中的段落標(biāo)記,否則無(wú)論原來(lái)的郵件內(nèi)容有多長(zhǎng),都顯示在一個(gè)段落中;要求每個(gè)段落第一行都要縮進(jìn)兩個(gè)字符;任何情況下都要求為內(nèi)容區(qū)保留一定的頁(yè)面空間,若盒子div2的高度不夠200px,則將高度設(shè)置為200px,否則高度根據(jù)郵件內(nèi)容高度來(lái)確定。功能說(shuō)明(4)能夠根據(jù)是否存在附件來(lái)確定是否顯示盒子
33、div3。(5)顯示盒子div3時(shí),除了將放在數(shù)據(jù)表中存儲(chǔ)的附件信息輸出之外,在用戶點(diǎn)擊“下載”或“打開(kāi)”鏈接時(shí)能夠?qū)崿F(xiàn)附件的下載或打開(kāi)操作。在顯示的附件信息中包含了隨機(jī)數(shù)標(biāo)識(shí)、附件名稱及附件大小三部分信息,這是為了保證用戶在接收附件之前可以確定附件的大小。當(dāng)用戶點(diǎn)擊“打開(kāi)”或“下載”超鏈接時(shí),要打開(kāi)或下載的附件都是保存在upload文件夾下的文件,這些文件名稱前面都帶有“(隨機(jī)數(shù)標(biāo)識(shí))”前綴,為了保證用戶能夠正常打開(kāi)或下載附件,設(shè)計(jì)超鏈接時(shí),要在文件名前面增加“(隨機(jī)數(shù)標(biāo)識(shí))”前綴。8.2.2 字符串替換函數(shù)思考問(wèn)題:用戶從寫(xiě)郵件界面的表單元素content中輸入內(nèi)容時(shí),怎樣實(shí)現(xiàn)回車(chē)換行?h
34、tml頁(yè)面中對(duì)內(nèi)容換行時(shí)需要怎樣實(shí)現(xiàn)?如何將用戶輸入的回車(chē)換行轉(zhuǎn)換成頁(yè)面中換行標(biāo)記或者是段落標(biāo)記?用戶按下回車(chē)鍵即可通過(guò)頁(yè)面在瀏覽器中輸出內(nèi)容要進(jìn)行回車(chē)換行時(shí),使用的是換行標(biāo)記或段落標(biāo)記使用字符串替換函數(shù)nl2br()或str_replace()函數(shù)nl2br()該函數(shù)名字中的數(shù)字2表示to函數(shù)作用:簡(jiǎn)單理解,就是把在文本域中輸入文本時(shí)按下的回車(chē)鍵所生成的字符替換為HTML的換行符標(biāo)記精確解釋?zhuān)窃谧址械拿總€(gè)新行 (n) 之前插入 HTML 換行標(biāo)記 函數(shù)格式: nl2br(string)參數(shù)string是必需的,規(guī)定要檢查的字符串。函數(shù)nl2br()應(yīng)用示例創(chuàng)建頁(yè)面文件nl2br.php
35、,其中包含兩部分代碼,第一部分代碼生成表單界面,包含一個(gè)name屬性為txt的文本區(qū)域元素和一個(gè)submit類(lèi)型的按鈕“提交”;第二部分是php代碼,用于接收和處理本頁(yè)面中表單元素提交的數(shù)據(jù)。在表單文本區(qū)域元素中輸入帶有回車(chē)的文本內(nèi)容并提交之后,重新運(yùn)行頁(yè)面文件nl2br.php,獲取用戶提交的文本信息,進(jìn)行兩種處理:第一,直接輸出獲取到的信息;第二,將所獲取信息中的回車(chē)字符使用函數(shù)nl2br()替換為換行標(biāo)記后再輸出,對(duì)比觀察兩種輸出的不同效果。代碼如下生成表單界面使用isset()函數(shù)判斷$_POSTtxt數(shù)組元素是否存在,頁(yè)面第一次運(yùn)行時(shí),該元素不存在,所以不需要執(zhí)行下面的php代碼,點(diǎn)
36、擊提交按鈕之后,該元素就存在了,需要執(zhí)行中的代碼。原樣輸出文本區(qū)域提交的內(nèi)容將文本區(qū)域提交數(shù)據(jù)中的回車(chē)鍵使用換行標(biāo)記替換之后輸出到瀏覽器端運(yùn)行界面左圖為初次運(yùn)行并輸入內(nèi)容的界面右圖為點(diǎn)擊提交按鈕之后的輸出界面輸入三段內(nèi)容直接輸出,無(wú)換行,瀏覽器不解釋回車(chē)換行鍵將回車(chē)換行替換為之后的結(jié)果str_replace()函數(shù)函數(shù)功能:將用戶指定的任意子串全部替換成另一個(gè)子串;函數(shù)格式:str_replace(find,replace,string,count);參數(shù)解釋?zhuān)篺ind:必需,規(guī)定要查找的子串,也就是將要被替換掉的子串;replace:必需,規(guī)定要用來(lái)進(jìn)行替換的子串;string:必需,規(guī)定被
37、搜索的字符串;count:是可選參數(shù),對(duì)替換次數(shù)進(jìn)行計(jì)數(shù),通常很少使用。str_replace()函數(shù)應(yīng)用示例創(chuàng)建頁(yè)面文件strreplace.php,其中包含兩部分代碼,第一部分代碼生成表單界面,包含一個(gè)name屬性為txt的文本區(qū)域元素和一個(gè)submit類(lèi)型的按鈕“提交”;第二部分是php代碼,用于接收和處理本頁(yè)面中表單元素提交的數(shù)據(jù)。在表單文本區(qū)域元素中輸入帶有回車(chē)的文本內(nèi)容并提交之后,重新運(yùn)行頁(yè)面文件strreplace.php,獲取用戶提交的文本信息,進(jìn)行兩種處理:第一,直接輸出獲取到的信息;第二,將所獲取信息中的回車(chē)字符使用函數(shù)str_replace()替換為段落標(biāo)記后再輸出,對(duì)比
38、觀察兩種輸出的不同效果。代碼如下被替換掉的字符是“chr(13).chr(10)”,其中chr(13)是回車(chē)符,chr(10)是換行符,13是回車(chē)符在ASCII碼表中的值,10是換行符在ASCII碼表中的值,用戶編輯文本時(shí)按下的回車(chē)鍵將同時(shí)生成回車(chē)符和換行符,這兩個(gè)字符不可顛倒順序;用來(lái)替換的字符是設(shè)置了縮進(jìn)2個(gè)字符的段落標(biāo)記。運(yùn)行效果圖思考問(wèn)題:為什么使用str_replace()函數(shù)處理之后,第一個(gè)段落與后面兩個(gè)段落的效果是不同的?要如何修改?問(wèn)題解答:用戶在文本域中輸入文本時(shí),并沒(méi)有在開(kāi)始時(shí)就按下回車(chē)鍵,所以第一個(gè)段落前面不能替換出段落標(biāo)記;解決的方法是,在輸出前先使用代碼echo 輸出
39、一個(gè)帶有縮進(jìn)兩個(gè)字符的段落標(biāo)記,問(wèn)題即可解決。完整代碼8.2.3打開(kāi)并閱讀郵件的功能實(shí)現(xiàn)設(shè)計(jì)打開(kāi)并閱讀郵件頁(yè)面,需要?jiǎng)?chuàng)建的文件有樣式文件openemail.css和頁(yè)面文件openemail.php。分別創(chuàng)建兩個(gè)文件,并在openemail.css文件中使用代碼bodymargin:0;定義整個(gè)頁(yè)邊距為0。之后,在設(shè)計(jì)過(guò)程中,我們按照頁(yè)面內(nèi)容的順序分別設(shè)計(jì)元素、和。1.設(shè)計(jì)元素(1)元素及內(nèi)部元素的樣式要求選擇符#div1:寬度自動(dòng)(保證能夠適應(yīng)浮動(dòng)框架窗口寬度的變化),高度自動(dòng)(根據(jù)實(shí)際內(nèi)容的多少來(lái)確定),上下填充10px,左右填充0,邊距0,背景色#eef,下邊框2像素實(shí)線顏色為#aaf。
40、頁(yè)面中所有段落的樣式直接使用html標(biāo)記名選擇符p定義:上下邊距5px,左右邊距都0,上下填充0,左右填充10px(保證段落內(nèi)容左右不貼邊),段落中的字號(hào)10pt,文本行高20px。1.設(shè)計(jì)元素(2)設(shè)計(jì)div中的內(nèi)容設(shè)計(jì)元素中的內(nèi)容需要三個(gè)操作步驟:第一步,獲取要打開(kāi)的郵件的郵件序號(hào);第二步,連接打開(kāi)數(shù)據(jù)庫(kù)email,以指定的郵件序號(hào)為條件查詢數(shù)據(jù)表emailmsg,得到指定序號(hào)的郵件信息;第三步,從服務(wù)器端輸出元素,并在其內(nèi)部輸出需要的郵件信息。盒子div1的內(nèi)容閱讀帶附件的郵件時(shí),盒子div1中的內(nèi)容如下圖所示思考問(wèn)題:如何判斷是否有附件并獲取附件個(gè)數(shù)?解決附件個(gè)數(shù)的問(wèn)題使用explod
41、e()和分號(hào)字符分割當(dāng)前郵件附件列中的附件名稱信息,分割后的結(jié)果保存在數(shù)組$attment中;獲取數(shù)組元素的個(gè)數(shù),減去1之后,即可得到附件個(gè)數(shù),保存在變量$attmentcount中。因?yàn)槊總€(gè)附件名稱后面都帶有分號(hào),若是存在三個(gè)附件,則有三個(gè)分號(hào),使用explode函數(shù)分割之后,會(huì)存在四個(gè)子串,即數(shù)組$attment長(zhǎng)度為4,但實(shí)際只有三個(gè)附件,所以將數(shù)組長(zhǎng)度值減去1之后作為附件個(gè)數(shù)來(lái)使用;修改openemail.php文件在div1結(jié)束之前添加下面代碼判斷附件是否為空使用分號(hào)分割各個(gè)附件名稱信息獲取附件個(gè)數(shù)2.設(shè)計(jì)元素(1)元素及內(nèi)部元素的樣式要求選擇符#div2:寬度自動(dòng),高度自動(dòng),上下填
42、充10px,左右填充0,邊距0。元素內(nèi)部控制輸出郵件內(nèi)容的所有段落都要增加縮進(jìn)2個(gè)字符的樣式,直接使用包含選擇符#div2 p定義即可。2.設(shè)計(jì)元素(2)設(shè)計(jì)div中的內(nèi)容設(shè)計(jì)元素中的內(nèi)容需要兩個(gè)操作步驟。第一步,輸出元素,在div內(nèi)部開(kāi)始處先增加一個(gè)段落標(biāo)記,然后將當(dāng)前郵件內(nèi)容中的回車(chē)換行符號(hào)使用段落標(biāo)記替換之后,在div中輸出;第二步,判斷元素的高度是否小于200px,若是小于200 px,則將其設(shè)置為200 px,否則該元素的高度根據(jù)內(nèi)容的多少來(lái)自動(dòng)設(shè)置修改openemail.php文件在盒子div1的下方增加如下代碼3.設(shè)計(jì)元素(1)元素及內(nèi)部元素的樣式要求選擇符#div3:寬度自動(dòng),
43、高度自動(dòng),填充0,邊距0,邊框1像素實(shí)線顏色為#aaf。元素中用來(lái)顯示附件個(gè)數(shù)的段落樣式與其它段落樣式不同,這里使用包含選擇符#div3 .p1進(jìn)行定義,樣式要求:邊距0,背景色#eef,文本行高40px。3.設(shè)計(jì)元素(2)設(shè)計(jì)div中的內(nèi)容首先要判斷是否需要輸出元素,若是當(dāng)前郵件中有附件,則要輸出,否則不需要輸出。輸出元素中的內(nèi)容需要三個(gè)操作步驟。第一步,使用類(lèi)名為p1的段落控制輸出附件個(gè)數(shù);第二步,分割數(shù)據(jù)表emailmsg中attachment的列值,獲取一個(gè)個(gè)附件的信息,格式為“(隨機(jī)數(shù)標(biāo)識(shí)符)文件名稱.擴(kuò)展名(文件大小)”,作為即將顯示的附件名稱信息第三步,對(duì)上面附件信息進(jìn)行處理,獲
44、取用于超鏈接打開(kāi)或下載的附件名稱信息,格式為“(隨機(jī)數(shù)標(biāo)識(shí)符)文件名稱.擴(kuò)展名”,這是在文件夾upload中存儲(chǔ)的文件名稱格式。思考問(wèn)題如何根據(jù)附件名稱信息“(隨機(jī)數(shù)標(biāo)識(shí)符)文件名稱.擴(kuò)展名(文件大小)”格式得到“(隨機(jī)數(shù)標(biāo)識(shí)符)文件名稱.擴(kuò)展名”格式?第一步, 使用explode函數(shù)和圓點(diǎn)分割符把附件名稱分為前后兩部分,前面一部分中包括了放在圓括號(hào)中的隨機(jī)數(shù)和主文件名,使用變量$attname保存,后面一部分中包括了擴(kuò)展名和放在圓括號(hào)中的文件大小信息,使用變量$kuozhanm保存;第二步,繼續(xù)使用explode函數(shù)和左圓括號(hào)字符分割$kuozhanm中保存的信息,將其分為擴(kuò)展名和文件大小兩部分,第一部分使用變量$kuozm保存,目的是去掉文件大小部分,這樣才能得到可用于下載或打開(kāi)的文件名信息;第三步,將$attname中包含的隨機(jī)數(shù)信息和主文件名信息與$kuozm中包含的擴(kuò)展名信息連接起來(lái),中間再插入一個(gè)圓點(diǎn),構(gòu)成完整可用的文件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3687-2019蘇山豬生產(chǎn)管理技術(shù)規(guī)程
- DB32/T 3598-2019增材制造金屬激光熔化沉積制件性能要求及測(cè)試方法
- DB32/T 3509-2019斑點(diǎn)叉尾鮰品種江豐1號(hào)
- DB31/T 73-2020水泥粉磨系統(tǒng)運(yùn)行管理與節(jié)能監(jiān)測(cè)
- DB31/T 571-2011人才測(cè)評(píng)服務(wù)規(guī)范
- DB31/T 488-2019地理標(biāo)志產(chǎn)品奉賢黃桃
- DB31/T 384-2014地理標(biāo)志產(chǎn)品崇明老白酒
- DB31/T 375-2022柑橘栽培技術(shù)規(guī)范
- DB31/T 1400-2023藥品生產(chǎn)全過(guò)程數(shù)字化追溯體系建設(shè)和運(yùn)行規(guī)范
- DB31/T 1097-2018行政審批中介服務(wù)指南編制指引
- 2025屆福建省漳州市高三第三次教學(xué)質(zhì)量檢測(cè)生物試卷(解析版)
- 2025年茶葉加工工職業(yè)技能競(jìng)賽參考試題庫(kù)500題(含答案)
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第1部分:土石方工程
- 廣東省2024年中考數(shù)學(xué)試卷【附真題答案】
- 監(jiān)控立桿基礎(chǔ)國(guó)家標(biāo)準(zhǔn)
- 肺癌患者護(hù)理查房--ppt課件
- 《北京市房屋建筑和市政基礎(chǔ)設(shè)施工程竣工驗(yàn)收管理辦法》(2015年4月1日起實(shí)施)
- 臨建施工方案(經(jīng)典)
- 場(chǎng)地平整土方開(kāi)挖專(zhuān)項(xiàng)施工方案
- 德魯克的績(jī)效觀
- 那洛巴尊者傳
評(píng)論
0/150
提交評(píng)論