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