版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGE8PAGE8PAGE7PAGE7
課題ThinkPHP的操作與視圖課時(shí)2課時(shí)(90min)教學(xué)目標(biāo)知識技能目標(biāo):(1)PHP中的連貫操作,以及對數(shù)據(jù)庫的四個(gè)基本操作(2)掌握模型和視圖的作用及相關(guān)操作素質(zhì)目標(biāo):(1)培養(yǎng)學(xué)生的辯證思維、提升學(xué)生的科學(xué)精神、培養(yǎng)愛國主義情懷(2)堅(jiān)定學(xué)生對我國各項(xiàng)國策方針、科學(xué)發(fā)展理念的認(rèn)同教學(xué)重難點(diǎn)教學(xué)重點(diǎn):PHP中的連貫操作,對數(shù)據(jù)庫的四個(gè)基本操作,模型和視圖的作用教學(xué)難點(diǎn):對數(shù)據(jù)庫的四個(gè)基本操作,模型和視圖的相關(guān)操作教學(xué)方法案例分析法、問答法、討論法、講授法、實(shí)踐法教學(xué)用具電腦、投影儀、多媒體課件、教材教學(xué)設(shè)計(jì)第1節(jié)課:→→→傳授新知(38min)第2節(jié)課:→傳授新知(15min)→課堂實(shí)訓(xùn)(20min)→課堂小結(jié)(3min)→作業(yè)布置(2min)教學(xué)過程主要教學(xué)內(nèi)容及步驟設(shè)計(jì)意圖第一節(jié)課課前任務(wù)【教師】布置課前任務(wù),和學(xué)生負(fù)責(zé)人取得聯(lián)系,讓其提醒同學(xué)通過文旌課堂APP或其他學(xué)習(xí)軟件,預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識【學(xué)生】完成課前任務(wù)通過課前任務(wù),使學(xué)生預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識,增加學(xué)生的學(xué)習(xí)興趣考勤(2min)【教師】使用文旌課堂APP進(jìn)行簽到【學(xué)生】班干部報(bào)請假人員及原因培養(yǎng)學(xué)生的組織紀(jì)律性,掌握學(xué)生的出勤情況問題導(dǎo)入(5min)【教師】提出以下問題:PHP對于常見的數(shù)據(jù)庫的操作一般都有很多,怎樣才能實(shí)現(xiàn)一系列的數(shù)據(jù)庫的操作呢?通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(38min)【教師】通過學(xué)生的回答引入要講的知識,講解PHP中的連貫操作與CURD操作14.6.4連貫操作運(yùn)算符是一種特殊符號,它能對一個(gè)值或一組值執(zhí)行一個(gè)指定的操作,并產(chǎn)生運(yùn)算結(jié)果。PHP中包含算術(shù)運(yùn)算符、比較運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、按位運(yùn)算符、字符串運(yùn)算符等。?【教師】通過多媒體展示“常用的連貫操作方法”表格,并進(jìn)行介紹常用的連貫操作方法連貫操作方法作用支持的參數(shù)類型where()用于查詢或者更新條件的定義。例如,
$data=$user->where('classid="PHP02"')->select();字符串、數(shù)組和對象field()用于定義要查詢的字段(支持字段排除)。例如,$Model->field('id,title,content')->select();表示要查詢的結(jié)果集中包含id、title、content三個(gè)字段的值字符串和數(shù)組order()用于對結(jié)果排序。例如,$Model->where('status=1')->
order('iddesc')->limit(5)->select();字符串和數(shù)組limit()用于限制查詢結(jié)果數(shù)量。例如,
$User=M('User');
$User->where('status=1')->field('id,name')->limit(10)->select();字符串和數(shù)字page()用于查詢分頁(內(nèi)部會轉(zhuǎn)換成limit)。例如,
$Article=M('Article');
$Article->page('1,10')->select();//查詢第一頁數(shù)據(jù)
$Article->page('2,10')->select();//查詢第二頁數(shù)據(jù)字符串和數(shù)字table()用于定義要操作的數(shù)據(jù)表名稱。例如,
$Model->table('think_user')->where('status>1')->select();字符串和數(shù)組?【教師】通過多媒體展示例14-10的步驟和運(yùn)行結(jié)果,并進(jìn)行講解where()方法的應(yīng)用。本例以where()方法為例,介紹連貫操作方法的應(yīng)用。在網(wǎng)站根目錄下新建文件夾“10”,將例14-9中的素材文件“09”目錄下的文件全部拷貝到“10”文件夾中打開“.\Application\Home\Controller”目錄下的控制器文件“UserController.class.php”,在其中新建demo()方法,分別使用字符串、數(shù)組和表達(dá)式作為where條件,查詢“school_user”表中符合條件的數(shù)據(jù)publicfunctiondemo(){ //where條件語句 $user=M('user'); //使用字符串作為where條件 $data=$user->where('classid="PHP01"')->select(); dump($data); echo"<hr>"; //使用數(shù)組作為where條件 $data1=$user->where(['classid'=>'PHP01'])->select(); dump($data1); echo"<hr>"; //表達(dá)式查詢:$map['字段1']=array('表達(dá)式','查詢條件1'); $where['age']=array('GT',30);//查詢age值大于30的記錄 $data2=$user->where([$where])->select(); dump($data2);}在瀏覽器地址欄中輸入“http://localhost/example/ph14/10/index.php/Home/
User/demo”?【學(xué)生】觀看、理解、記憶上述代碼中的表達(dá)式查詢語句中,“GT”表示“大于(>)”。表14-4中列出了常用的表達(dá)式及其含義。?【教師】通過多媒體展示“常用的表達(dá)式及其含義”表格,并進(jìn)行介紹常用的表達(dá)式及其含義表達(dá)式含義EQ等于(=)NEQ不等于(<>)GT大于(>)EGT大于等于(>=)LT小于(<)ELT小于等于(<=)LIKE模糊查詢[NOT]BETWEEN(不在)區(qū)間查詢[NOT]IN(不在)IN查詢EXP表達(dá)式查詢,支持SQL語法14.6.5CURD操作ThinkPHP提供了靈活方便的數(shù)據(jù)操作方法,其中,創(chuàng)建、更新、讀取和刪除操作(CURD)是對數(shù)據(jù)庫的四個(gè)基本操作,也是必須掌握的。CURD操作通常和連貫操作配合使用。1.?dāng)?shù)據(jù)創(chuàng)建使用ThinkPHP可以快速創(chuàng)建數(shù)據(jù)對象,最典型的應(yīng)用就是自動根據(jù)表單數(shù)據(jù)創(chuàng)建數(shù)據(jù)對象。例如://實(shí)例化User模型$User=M('User');//根據(jù)表單提交的POST數(shù)據(jù)創(chuàng)建數(shù)據(jù)對象$User->create();create()方法支持從其他方式創(chuàng)建數(shù)據(jù)對象。例如,從其他的數(shù)據(jù)對象,或者數(shù)組等。$data['name']='ThinkPHP';$data['email']='ThinkPHP@';$User->create($data);事實(shí)上,create()方法在創(chuàng)建數(shù)據(jù)對象的同時(shí),完成了一系列工作,下面是create()方法的工作流程:(1)獲取數(shù)據(jù)源(默認(rèn)是POST數(shù)組)。(2)驗(yàn)證數(shù)據(jù)源合法性(非數(shù)組或者對象會過濾),失敗則返回false。(3)檢查字段映射。(4)判斷數(shù)據(jù)狀態(tài)(新增或者編輯,指定或者自動判斷)。(5)數(shù)據(jù)自動驗(yàn)證失敗則返回false。(6)表單令牌驗(yàn)證失敗則返回false。(7)表單數(shù)據(jù)賦值(過濾非法字段和字符串處理)。(8)數(shù)據(jù)自動完成。(9)生成數(shù)據(jù)對象(保存在內(nèi)存中)。create()方法創(chuàng)建的數(shù)據(jù)對象是保存在內(nèi)存中,并沒有實(shí)際寫入到數(shù)據(jù)庫中,直到使用add()或者save()方法才會真正寫入數(shù)據(jù)庫。2.?dāng)?shù)據(jù)寫入ThinkPHP中使用add()方法實(shí)現(xiàn)數(shù)據(jù)的寫入操作。例如:$User=M("User");//實(shí)例化User對象$data['name']='ThinkPHP';$data['email']='ThinkPHP@';$User->add($data);如果是MySQL數(shù)據(jù)庫,還可以支持在數(shù)據(jù)插入時(shí)允許更新操作:add($data='',$options=array(),$replace=false)其中的$replace參數(shù)設(shè)置添加數(shù)據(jù)時(shí)是否允許覆蓋,默認(rèn)為false(不覆蓋),true表示覆蓋?;蛘呤褂胐ata()方法連貫操作。例如:$User=M("User");//實(shí)例化User對象$User->data($data)->add();3.?dāng)?shù)據(jù)讀取在ThinkPHP中讀取數(shù)據(jù)的方式很多,一般分為讀取數(shù)據(jù)、讀取數(shù)據(jù)集和讀取字段值。(1)讀取數(shù)據(jù)。讀取數(shù)據(jù)是指讀取數(shù)據(jù)表中的一行數(shù)據(jù),主要通過find()方法實(shí)現(xiàn)。例如:$User=M("User"); //實(shí)例化User對象//查找status值為1,name值為think的用戶數(shù)據(jù)$data=$User->where('status=1ANDname="think"')->find();dump($data);使用find()方法查詢數(shù)據(jù)時(shí),可以配合相關(guān)的連貫操作方法,其中最常用的是where()方法。如果查詢出錯(cuò),find()方法返回false;如果查詢結(jié)果為空,返回NULL;查詢成功則返回一個(gè)關(guān)聯(lián)數(shù)組(鍵值是字段名或者別名)。(2)讀取數(shù)據(jù)集。讀取數(shù)據(jù)集就是獲取數(shù)據(jù)表中的多行記錄,使用select()方法實(shí)現(xiàn)。例如:$User=M("User"); //實(shí)例化User對象//查找status值為1的用戶數(shù)據(jù),以創(chuàng)建時(shí)間排序,返回10條數(shù)據(jù)$list=$User->where('status=1')->order('create_time')->limit(10)->select();如果查詢出錯(cuò),select()的返回值是false;如果查詢結(jié)果為空,則返回NULL;否則返回二維數(shù)組。(3)讀取字段值。讀取字段值就是獲取數(shù)據(jù)表中的某個(gè)列的多個(gè)或單個(gè)數(shù)據(jù),最常用的方法是getField()。例如:$User=M("User");//實(shí)例化User對象//獲取ID為3的用戶的昵稱$nickname=$User->where('id=3')->getField('nickname');默認(rèn)情況下,當(dāng)只有一個(gè)字段時(shí),返回滿足條件的數(shù)據(jù)表中的該字段的第一行的值。如果需要返回整個(gè)列的數(shù)據(jù),可以用以下格式:$User->getField('id',true);//獲取id數(shù)組//返回?cái)?shù)據(jù)格式如array(1,2,3,4,5)的一維數(shù)組,其中value就是id列的每行的值如果傳入多個(gè)字段,默認(rèn)返回一個(gè)關(guān)聯(lián)數(shù)組,格式如下:$User=M("User");//實(shí)例化User對象//獲取所有用戶的ID和昵稱列表$list=$User->getField('id,nickname');//兩個(gè)字段的情況下返回的是array('id'=>'nickname')的關(guān)聯(lián)數(shù)組,以id值為key,nickname字段值為value這樣返回的list是一個(gè)數(shù)組,鍵名是用戶的id值,鍵值是用戶的昵稱nickname。使用getField()方法,還可以限制返回記錄的數(shù)量。例如:$this->getField('id,name',5); //限制返回5條記錄$this->getField('id',3); //獲取id數(shù)組,限制3條記錄4.?dāng)?shù)據(jù)更新ThinkPHP的數(shù)據(jù)更新操作包括更新數(shù)據(jù)和更新字段。(1)更新數(shù)據(jù)。更新數(shù)據(jù)使用save()方法,例如:$User=M("User"); //實(shí)例化User對象//為要修改的數(shù)據(jù)對象屬性賦值$data['name']='ThinkPHP';$data['email']='ThinkPHP@';$User->where('id=5')->save($data); //根據(jù)條件更新記錄save()方法的返回值是影響的記錄數(shù),如果返回false則表示更新出錯(cuò),因此一定要用恒等來判斷是否更新失敗。為保證數(shù)據(jù)庫的安全,避免錯(cuò)誤更新整個(gè)數(shù)據(jù)表,如果沒有任何更新條件,數(shù)據(jù)對象本身也不包含主鍵字段的話,save()方法不會更新任何數(shù)據(jù)庫記錄。例如,下面的代碼不會更新數(shù)據(jù)庫的任何記錄。$User->save($data);(2)更新字段。如果只是更新個(gè)別字段的值,可以使用setField()方法。例如:$User=M("User"); //實(shí)例化User對象//更改用戶的name值$User->where('id=5')->setField('name','ThinkPHP');setField()方法支持同時(shí)更新多個(gè)字段,只需要傳入數(shù)組即可,例如:$User=M("User"); //實(shí)例化User對象//更改用戶的name和email的值$data=array('name'=>'ThinkPHP','email'=>'ThinkPHP@');$User->where('id=5')->setField($data);5.?dāng)?shù)據(jù)刪除ThinkPHP刪除數(shù)據(jù)使用delete()方法,例如:$Form=M('Form'); //實(shí)例化Form對象$Form->delete(5); //刪除主鍵為5的數(shù)據(jù)delete()方法可以刪除單個(gè)數(shù)據(jù),也可以刪除多個(gè)數(shù)據(jù),這取決于刪除條件,例如:$User=M("User"); //實(shí)例化User對象$User->where('id=5')->delete(); //刪除id為5的用戶數(shù)據(jù)$User->delete('1,2,5'); //刪除主鍵為1、2和5的用戶數(shù)據(jù)$User->where('status=0')->delete(); //刪除所有狀態(tài)為0的用戶數(shù)據(jù)delete()方法的返回值是刪除的記錄數(shù),如果返回值是false則表示SQL出錯(cuò),如果返回值是0,則表示沒有刪除任何數(shù)據(jù)?!緦W(xué)生】聆聽、思考、記錄通過教師的講解和演示,使學(xué)生了解PHP中的連貫操作,以及創(chuàng)建、更新、讀取和刪除數(shù)據(jù)(CURD)的操作第二節(jié)課問題導(dǎo)入(5min)【教師】提出以下問題:什么是視圖,視圖的作用是什么?【學(xué)生】思考、舉手回答通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(15min)【教師】通過學(xué)生的回答引入新知,介紹ThinkPHP視圖,以及模板的定義、賦值和渲染14.7ThinkPHP的視圖視圖就是MVC中的V,用于處理數(shù)據(jù)(數(shù)據(jù)庫記錄)顯示,通常依據(jù)模型數(shù)據(jù)創(chuàng)建,以模板的形式存在,默認(rèn)是html格式文件。14.7.1模板定義每個(gè)模塊的模板文件是獨(dú)立的,為了更加高效地對模板文件進(jìn)行管理,ThinkPHP對模板文件進(jìn)行目錄劃分,默認(rèn)的模板文件定義規(guī)則是:模板目錄\控制器名\操作名+模板后綴默認(rèn)的模板目錄是模塊下的View目錄(模塊可以有多個(gè)視圖文件目錄,這取決于實(shí)際的應(yīng)用需要),框架中默認(rèn)的模板文件后綴是.html。在每個(gè)應(yīng)用下面,是以模塊下面的控制器名為目錄,然后是每個(gè)控制器的具體操作模板文件。14.7.2模板賦值如果要在模板中輸出變量,必須在控制器中把變量傳遞給模板,系統(tǒng)提供了assign()方法對模板變量賦值,無論何種變量類型都統(tǒng)一使用assign()賦值。$this->assign('name',$value);//下面的寫法是等效的$this->name=$value;assign()方法必須在display()和show()方法之前調(diào)用,并且系統(tǒng)只會輸出設(shè)定的變量,其他變量不會輸出(系統(tǒng)變量例外),這在一定程度上保證了變量的安全性。例14-11中就多次用到了該方法。賦值后,就可以在模板文件中輸出變量了,可以采用以下方式輸出:{$name}在輸出變量時(shí),需要注意{和$之間不能出現(xiàn)空格。如果要同時(shí)輸出多個(gè)模板變量,可以使用以下數(shù)組形式:$array['name']='thinkphp';$array['email']='liu21st@';$array['phone']='12335678';$this->assign($array);這樣,就可以在模板文件中同時(shí)輸出name、email和phone三個(gè)變量。例如,例14-11中的index.html模板便使用該方式輸出了用戶信息。14.7.3模板渲染模板渲染,簡單來說就是模板輸出。模板定義并賦值后,就可以進(jìn)行輸出。模板輸出最常用的是display()方法,其調(diào)用格式如下:display('[模板文件]')模板文件的用法支持表中的幾種。?【教師】通過多媒體展示“模板文件的用法”表格,并進(jìn)行介紹模板文件的用法用法描述不帶任何參數(shù)自動定位當(dāng)前操作的模板文件[模塊@][控制器:][操作]常用寫法,支持跨模塊完整的模板文件名直接使用完整的模板文件名(包括模板后綴)下面是一個(gè)最典型的用法,不帶任何參數(shù)。例14-11中的display()都是以這種方式出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 總經(jīng)理助理轉(zhuǎn)正工作總結(jié)8篇
- 數(shù)學(xué)教學(xué)工作總結(jié)(匯編15篇)
- 小學(xué)生讀書演講稿4篇
- 2017年寒假綜合實(shí)踐作業(yè)總結(jié)
- 將精神撫慰金列入刑事附帶民事訴訟
- 做幸福教師演講稿(4篇)
- 2025年文旅小鎮(zhèn)合作協(xié)議書
- 停車場地出租合同(2篇)
- 2025年CBZ-5-苯基-L-半胱氨酸項(xiàng)目發(fā)展計(jì)劃
- 個(gè)人車輛出租合同
- 關(guān)于大數(shù)據(jù)的職業(yè)生涯規(guī)劃書課件
- 部編版高中語文必修上冊第二單元測試題及答案
- 電子化文件與信息管理制度
- 2024年高考地理試卷(浙江)(1月)(解析卷)
- 心理健康講座(課件)-小學(xué)生心理健康
- 《腸造口并發(fā)癥的分型與分級標(biāo)準(zhǔn)(2023版)》解讀
- 名畫中的瘟疫史智慧樹知到期末考試答案章節(jié)答案2024年上海健康醫(yī)學(xué)院
- 《跟上兔子》繪本三年級第1季One-Day教學(xué)課件
- 家長會課件:小學(xué)三年級家長會 課件
- 孕產(chǎn)婦妊娠風(fēng)險(xiǎn)評估表
- PDCA循環(huán)培訓(xùn)課件
評論
0/150
提交評論