dedecms二次開發,要會寫織夢的標籤,會製作織夢的模板。也需要操作其數據庫。查詢、插入、刪除是三個基本操作,操作之前,先了解織夢DedeCMS的數據庫類是必須的。
1.創建數據表
創建一個名爲"dede_test"的表,2個字段,1個id,作爲唯一標識,一個name作爲名稱。
使用SQL語句插入一些數據供操作使用:
1 2 3 4 | INSERT INTO `dede_test` VALUES ('1', '測試名字1'); INSERT INTO `dede_test` VALUES ('2', '這是第二個'); INSERT INTO `dede_test` VALUES ('3', '第三個嘍'); INSERT INTO `dede_test` VALUES ('4', '第四個'); |
2.如何連接數據庫?
只需要在操作的文件中引入include文件夾下面的 common.inc.php文件即可。
如下:
1 2 3 4 | <?php require_once (dirname(__FILE__) . "/include/common.inc.php"); print_r($dsql); ?> |
3.如何查詢數據庫
【1】在數據庫類中,查詢一條記錄用方法
GetOne();
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php require_once (dirname(__FILE__) . "/include/common.inc.php"); if($dsql->IsTable('dede_test')){ //如果存在dede_test表 //------------------- //| 查詢一條記錄 | //| GetOne() | //------------------- // ↓ $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3"); print_r($row); } ?> |
這裏用了$dsql類的2個方法,IsTable()以及GetOne(),IsTable先來判斷這個表是否存在,如果存在我們就繼續執行,他返回的是一個bool值,如果存在爲true否則就爲false。
執行查詢單條記錄的這個過程,即GetOne,通過幫助文檔可以知道:$arr = $db->GetOne($sql);也就是說查詢的sql語句會傳送回來一個數組。
【2】在數據庫類中,
查詢多條記錄
Execute
()和
GetArray()
;
代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php require_once (dirname(__FILE__) . "/include/common.inc.php"); if($dsql->IsTable('dede_test')){ //如果存在dede_test表 //------------------- //| 查詢一條記錄 | //| GetOne() | //------------------- // ↓ $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3"); echo "查詢id=3的記錄:<br />顯示結果:"; print_r($row); //------------------- //| 查詢多條記錄 | //| Execute() | //------------------- // ↓ echo "<hr />查詢dede_test表中的所有記錄:<br />顯示結果:<br />"; $sql = "SELECT * FROM dede_test"; $dsql->Execute('me',$sql); while($arr = $dsql->GetArray('me')) { echo "id = {$arr['id']} ,name = {$arr['name']}<br />"; } } ?> |
除了用$dsql->GetArray('me')來獲取內容到數組,還可以用$dsql->GetObject("me")獲取內容到對象,不過調用方法有些不同,主要這裏通過$dbobj->fieldname來調用查詢出來的數據:
1 2 3 4 | while($dbobj = $dsql->GetObject('me')) { echo "id = {$dbobj->id} ,name = {$dbobj->name}<br />"; } |
4.插入刪除操作數據庫
【1】插入數據庫
表單代碼如下:
1 2 3 4 5 6 7 | <hr /> 用於提交數據的表單:<br /> <form action="test.php" type="post"> <input type="hidden" name="dopost" value="save"> 名稱:<input type="text" name="name" value=""> <input name="提交" type="submit" value="提交"> </form> |
用了一個隱藏域dopost來存放操作方法,輸入框name用來存放輸入數據,然後傳遞給當前頁面,再進行處理,加入部分的表單處理操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //------------------- //| 表單處理過程 | //| Save() | //------------------- // ↓ empty($dopost)? "" : $dopost; if($dopost == "save"){ //如果執行插入操作 $sql = "INSERT INTO `dede_test` (`name`) VALUES ('{$name}')"; $dsql->ExecuteNoneQuery($sql); //執行這個插入語句 $lastInsertID = $dsql->GetLastID(); //獲取插入後的最後的ID,然後再傳給下一個頁面 ShowMsg("成功增加一條記錄內容!","test.php?id={$lastInsertID}"); exit(); } |
主要是一個INSERT INTO 語句,然後通過$dsql的ExecuteNoneQuery方法來執行這個操作,並且獲取插入數據最後一個id再將其傳遞給下一個頁面以便高亮顯示。
【2】刪除操作
刪除的操作也是如此,只需要稍微修改就可以。
增加一個dopost操作爲del的判斷,然後在顯示數據後面增加一個超鏈接,將id以get方式進行傳遞.最後進行處理。
如下修改:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | while($dbobj = $dsql->GetObject('me')) { if($id==$dbobj->id){ //如果傳遞的id值和查詢值相同,則高亮顯示最後一條插入記錄 echo "<font color='red'>id = {$dbobj->id} ,name = {$dbobj->name}</font> <a href='test.php?dopost=del&id={$dbobj->id}'>[刪除]</a> <br />";//這裏增加了一個刪除的超鏈接 }else{ echo "id = {$dbobj->id} ,name = {$dbobj->name} <a href='test.php?dopost=del&id={$dbobj->id}'>[刪除]</a>< br />"; } } //下面是del這個post的判斷: empty($dopost)? "" : $dopost; if($dopost == "save"){ //如果執行插入操作 $sql = "INSERT INTO `dede_test` (`name`) VALUES ('{$name}')"; $dsql->ExecuteNoneQuery($sql); $lastInsertID = $dsql->GetLastID(); ShowMsg("成功增加一條記錄內容!","test.php?id={$lastInsertID}"); exit(); }elseif($dopost == "del"){ //如果dopost爲del,則刪除數據 $id = isset($id) && is_numeric($id) ? $id : 0; $sql = "DELETE FROM `dede_test` WHERE (`id`='{$id}')"; $dsql->ExecuteNoneQuery($sql); ShowMsg("成功刪除一條記錄內容!","test.php"); exit(); } |
dedecms技術論壇地址:http://www.dedecms.com/help/development/2009/1028/1076.html