这里我们用了一个隐藏域dopost来存放操作方法,输入框name用来存放输入数据,然后传递给当前页面,再进行处理,这时候我们需要在test.php中加入部分的表单处理操作:
//-------------------
//| 表单处理过程 |
//| 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再将其传递给下一个页面以便高亮显示.
我们可以在编辑框中插入一条数据来测试下,看看插入数据后的返回结果(图5).
(图5)
其实删除的操作也是如此,我们只需要稍微做个修改就可以了,增加一个dopost操作为del的判断,然后在显示数据后面增加一个超链接,将id以get方式进行传递.并最后进行处理.
下面是我们修改循环查询输出的部分内容,有如下修改:
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(); }
tips:这里用到了一个ShowMsg()函数,这个是用来返回一个对话框的,详细可以查看下includecommon.func.php的372行相关函数的代码.
这里我们结合了DedeCMS程序的dedesql类讲解了这个类的常见的用法,我们不难发现用这个类操作数据库是非常方便的,当然这个需要用户对sql比较熟悉.今天我们就讲解到这里了,下次有机会再结合datalist类和模板引擎来介绍织梦二次开发相关的内容.如果大家有什么好的学习织梦的意见或建议还希望给我电邮:tianya#dedecms.com(#<=>@).