dedecms二次開發,要會寫織夢的標籤,會製做織夢的模板。也須要操做其數據庫。查詢、插入、刪除是三個基本操做,操做以前,先了解織夢DedeCMS的數據庫類是必須的。php
建立一個名爲"dede_test"的表,2個字段,1個id,做爲惟一標識,一個name做爲名稱。html
使用SQL語句插入一些數據供操做使用:sql
1數據庫 2數組 3ide 4post |
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', '第四個'); |
只須要在操做的文件中引入include文件夾下面的 common.inc.php文件便可。測試
以下:ui
1spa 2 3 4 |
<?php require_once (dirname(__FILE__) . "/include/common.inc.php"); print_r($dsql); ?> |
【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 />"; } |
【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