由于我们刚才的帐号还没通过任何的验证就可以直接进入数据库了,这当然不是不合理的交互逻辑,所以我们要修改下,让他变得3合理一些,

所以我们还是要按照套路来修改几处即可解决问题:

首先修改下添加的控制器:

    public function add(){
if(IS_POST){
$data['username'] = $_POST['username'];
$data['password'] = md5($_POST['password1']);
$da['password2'] = md5($_POST['password2']);
$mod = D('User');
if(!empty($data['password'])){
if($data['password'] == $da['password2']){
if($mod->create($data)){
if($mod->add($data)){
$this->success('添加用户成功',U('User/lists'));
}else{
$this ->error('添加用户失败');
}
//dump($);die;
}else{
$this -> error($mod->getError());
}
}else{
$this ->error('两次输入的密码不正确');
}
}else{
$this ->error('管理员密码不能为空');
}
}
$this -> display();
}

我们让模型来给我们判断下帐号是否存在,所以所以了大D,model里面的内容如下所示:

protected  $_validate = array(
array('username','require','管理员帐号必须填写'), //默认情况下用正则进行验证
array('username','','帐号名称已经存在!',0,'unique',1), // 在新增的时候验证name字段是否唯一
);

然后再修改的edit里面再修改下即可:

    public function edit(){
$id = I('id'); //获取id
$user = M('User') -> find($id);
$this -> assign('user',$user);
if(IS_POST){
$data['username'] = $_POST['username'];
$data['password'] = md5($_POST['password']);
$data['id'] = I('id'); //这id是从edit.html模版里发送过来的
$mod = D('User');
if($mod->create($data,1)){ //这里的1是表示在编辑时候进行验证
if($mod -> save()){
$this -> success('修改成功');
}else{
$this -> error("修改失败");
}
}else{
$this -> error($mod->getError());
}
}
$this-> display();
}

最后就是解决列表页的分页问题,我们只需要稍微的修改下问题即可解决

    public function lists(){
//从数据库中取出数据
//$user = M('User') -> select();
//dump($user);die;
//分配数据到模版
//$this->assign('user',$user);
//$this -> display(); //1.显示分页工具条
$mod = M('User');
$totalRows = $mod->count();
//创建分页对象时,分页对象需要总记录数和分页条数
$page = new \Think\Page($totalRows,2);
$page -> rollPage =5; //分页列表上显示多少条
$page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$page->setConfig('first','首页');
$page->setConfig('prev','上一页');
$page->setConfig('next','下一页');
$page->setConfig('last','尾页');
$pageHtml = $page -> show();//生成分页的连接诶效果(分页工具条的html代码)
$this -> assign('pageHtml',$pageHtml);//分配分页栏到模版 //2.查询出当前页面的列表数据
$user = $mod -> page(I('get.p',1),$page->listRows)->select();
$this -> assign('user',$user);
$this -> display();
}

让后在视图下让他直接遍历过来即可:

如果希望样式美观点,那么直接加多一个样式给他问题即可解决:

<style type="text/css">
.num{
padding-left:10px;
}
.current{
padding-left:10px;
color:blue;
font-weight:bold;
font-size:16px;
}
</style>

这样我们的问题即可解决啦,嘻嘻

夺命雷公狗---Thinkphp----11之管理员的增删改查的完善的更多相关文章

  1. 夺命雷公狗---Thinkphp----6之管理员的增删改查之-未验证

    首先我们创建多一个控制器UserController.class.php,主要用于管理员的增删改查操作: 代码如下所示: <?php namespace Admin\Controller; us ...

  2. ThinkPHP实现对数据库的增删改查

    好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...

  3. 夺命雷公狗ThinkPHP项目之----企业网站11之栏目的删除完成

    我们删除要在分类模型中添加一个_before_delete的钩子函数,而且在删除一个分类时候,如果这个分类有子分类就不允许删除 model层代码如下所示: <?php namespace Adm ...

  4. 夺命雷公狗ThinkPHP项目之----企业网站27之网站前台单页的完成(从百度编辑器里面取出文章数据)

    我们的单页面里主要是为了可以取出文章分类表的栏目内容,废话先不说, 我们的实现要点: 1...获取get过来的栏目cate_id 2...然后用条件查询栏目表 <?php namespace H ...

  5. 夺命雷公狗ThinkPHP项目之----企业网站25之网站前台面包屑导航URL的完善

    如果想取出面包屑导航的url那么就必须在model层里面进行多取一个了: <?php namespace Home\Model; use Think\Model; class CategoryM ...

  6. 夺命雷公狗ThinkPHP项目之----企业网站21之网站前台二级分类显示名称(TP自定义函数展示无限极分类)

    我们实现网站二级分类的显示的时候,先要考虑的是直接取出顶级栏目,控制器代码如下所示: <?php namespace Home\Controller; use Think\Controller; ...

  7. 夺命雷公狗ThinkPHP项目之----企业网站1之快速搭建后台

    我们还是老规矩照老方法,将框架里面多余的东西都干掉,然后在index.php里面将框架搭建起来 <?php //定义项目目录 define('APP_PATH','./WEB/'); //开启调 ...

  8. 夺命雷公狗—angularjs—11—service的基本概念

    我们先来研究下service里面的四大服务.. value 变量 constant  常量 factory   工厂模式 service 服务 <!DOCTYPE html> <ht ...

  9. 夺命雷公狗ThinkPHP项目之----企业网站30之网站前台头部导航的高亮显示

    我们这个其实也是最简单的一个,首页高亮,那么我们需要先在中间层里面定义一个index = false: 然后在首页控制器里面定义一个 index = true 最后一步就是 在首页的模版上给一个判断: ...

随机推荐

  1. copy构造函数的秘密

    1.先来看这段代码: MyString::MyString(){ this->mstr = NULL;} MyString::MyString(MyString &str){ //用一个 ...

  2. Nodejs路由之间的数据传递

    实例是模拟登录页面提交表单,然后根据信息判断是否登录成功 login.js var express =require('express'); var router =express.Router(); ...

  3. Cocos2d-JS替换初始化场景

    Cocos2d-js工程默认启动入口为app.js,准备修改为另外一个入口文件如:GameScene.js var GameLayer = cc.Layer.extend({ ctor:functio ...

  4. 关于带透明度的灰度层的show、hide

    原理图如下:[需要注意的是,灰度View与中间的小View是并列的关系,否则,带透明度的灰度图就会影响小View的透明度] - (void)show{ UIWindow *win = [[UIAppl ...

  5. Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

    日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...

  6. C#对象的声明与实例化

    在代码中我们经常能看到下面这样的语句. A a = new A();(1) B b = null;(2) C c;(3) 代码( 1 ) 创建 A 的对象并对其进行初始化. A :类: new A() ...

  7. zabbix监控MySQL

    通过使用mysql_performance_monitor软件包实现zabbix对mysql的监控. 1.安装依赖软件.yum install perl-File-Which perl-libwww- ...

  8. 官方教程:教你用好微信JS-SDK接口

    微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞.奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用.现在, ...

  9. Java遇见HTML——JSP篇之JavaBeans

    一.JavaBean简介及设计原则 设计原则:公有类.无参的公有构造方法.属性私有.有getter and setter方法 实例: 二.Jsp动作元素 JSP动作标签分为五大类: 三.在JSP页面中 ...

  10. CString + UINT Error:有多个运算符"+="与这些操作数匹配

    在OnChar中,参数UINT nChar 有一个CString str,现在执行 str += nChar报错:Error:有多个运算符"+="与这些操作数匹配 解决办法:把UI ...