其實剩下兩個函數,大概也不太需要教學了ˊ.ˋ
這篇文章會大概DEMO一下實做完成的功能,
以及補完最後兩個函數

函數add 添加一筆新的資料到資料庫

function add()
{
$this->load->database();
$sql="INSERT INTO anime (name,state,intro,cmt,tag,rank) ";
$sql=$sql."VALUES ('____', '____', '____','____','____','____')";
$this->db->query($sql);
header('Location: /index.php/PG/test/');
}

是的,單純就SQL語法而已,
我已經懶得查詢CodeIgniter內建的查詢語法是如何完成資料更新了..

 

函數remove 移除一筆舊有的動畫資料

這比較麻煩,我們分成幾個步驟來完成

1.在表格中添加"移除動畫"的欄位
2.建立一個新的view "remove" 顯示確認畫面
3.controller裡面新增remove函數,處理remove相關需求

步驟1
很簡單,就表格裡面多加一行
<td colspan="2" ><a href="/index.php/PG/remove/<?php echo $row->id;?>/">移除此動畫</a></td>
代表點下此連結時,我們呼叫PG裡面的remove函數,並將id作為參數傳入

步驟2
就隨便填寫吧..
我寫成類似這樣:



<body>
<div id=main>
<p>確定要刪除動畫<?php echo $name ?>
<a href="/index.php/PG/remove/<?php echo $id ?>/y">Yes</a>
/
<a href="/index.php/PG/remove/<?php echo $id ?>/n">No</a>

</p>
<p></p>
</div>
</body>

 

接下來就剩下最麻煩的remove函數了,
我們的想法是,若是第一次收到刪除動畫X的要求,
我們就載入確認畫面的這個view進行確認,
若是第二次收到刪除動畫X的要求,我們就檢查id是否和第一次一樣,
若一樣,則檢查回答y/n 若是y則刪除動畫

具體實做方法如下:




 function remove()
{
$this->load->database();
session_start();
$id=func_get_arg(0);
if(!isset($_SESSION['remove_chk']))$_SESSION['remove_chk']=-1;
if($_SESSION['remove_chk']!=$id)
{
$_SESSION['remove_chk']=$id;
$sql="SELECT name FROM anime WHERE id=$id";
$query=$this->db->query($sql);
$data['id']=$id;
$data['name']=$query->row(1)->name;
$this->load->view('remove',$data);
}
else
{
if(func_get_arg(1)=="y")
{
if($_SESSION['remove_chk']!=$id)
DIE("目標不合法");
$sql="DELETE FROM anime WHERE id=".$id;
$query=$this->db->query($sql);

}

unset($_SESSION['remove_chk']);
header('Location: /index.php/PG/test/');
}

 

理論上,remove搞定後,程式就完成拉~
不過實際應用上,我們還有權限管理跟tag功能還沒實做,
如果有人有興趣我再繼續寫吧Orz
Flicker貼圖片好麻煩...

最後來個程式功能Demo吧

1.一開始長這樣

2.新增動畫之後

3.對欄位點兩下,就可以填入資料

4.把焦點離開輸入框之後,伺服器馬上更新資料庫紀錄,超神!

 

5.當然要隨便增刪其餘欄位的資料,隨便多新增幾個動畫,也是OK的

 6.來測測看刪除動畫

7.確認後,動畫就刪除完畢了

 

 

smartPG 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 1~3 篇皆拜見囉!!
    很好的 CI 教學,尤其是呼叫 View 的部份,
    對於不太用 FrameWork 的我助益很大喔!!
    讚!!