<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 知識點: 1、功能描述 2、插件datatables 3、新增字段 4、獲取插入ID 5、前臺注冊修改 6、關聯模型另類實現 7、問題解決 8、常見代碼 [TOC] ## 一、功能描述 會員管理,實現分頁顯示,參照內容列表 datatables插件請求地址 ## 二、插件datatables ### (一)文件引入 ~~~ <link href="__ADMIN__/css/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet"> <script src="__ADMIN__/js/jquery.min.js?v=2.1.4"></script> <script src="__ADMIN__/js/bootstrap.min.js?v=3.3.6"></script> <script src="__ADMIN__/js/plugins/dataTables/jquery.dataTables.js"></script> <script src="__ADMIN__/js/plugins/dataTables/dataTables.bootstrap.js"></script> <script src="__ADMIN__/js/content.min.js?v=1.0.0"></script> <script src="__ADMIN__/js/plugins/iCheck/icheck.min.js"></script> ~~~ ### (二)表單 ~~~ <form method="post" class="form-horizontal" action="{:url('deleteAll')}" data-type="ajax"> <div class="table-responsive"> <table id="dataTables-example" class="table table-striped"> <thead> <tr> <th><input id="isCheckAll" type="checkbox" class="i-checks"></th> <th>ID</th> <th>用戶名</th> <th>手機號</th> <th>注冊時間</th> <th>狀態</th> <th>操作</th> </tr> </thead> </table> </div> </form> ~~~ ### (三)事件響應 ~~~ <script> $(document).ready(function() { $("#dataTables-example").dataTable({ "serverSide": true, "ajax": { "url": "{:url('getDataTables')}", "data": function(d) { d.extra_search = "mobile|username"; } }, "ordering": false, //禁用全局排序 "order": [0, '`listorder` desc'], "lengthMenu": [5, 10, 20, 50, 100], // "dom": '<l <"#normalToos">f>t<ip>', "dom": "<'row'<'#normalToos.col-xs-4'><'col-xs-8'f>>" + "<'row'<'col-xs-12't>>" + "<'row'<'col-xs-6'li><'col-xs-6'p>>", "language": { "zeroRecords": "沒有檢索到數據", "lengthMenu": "每頁 _MENU_ 條記錄&nbsp;&nbsp;", "search": "搜索 ", "info": "共 _PAGES_ 頁,_TOTAL_ 條記錄,當前顯示 _START_ 到 _END_ 條", "paginate": { "previous": "上一頁", "next": "下一頁", } }, "columns": [{ render: function(data, type, row, meta) { return '<input type="checkbox" class="i-checks" name="ids[' + row.id + ']">'; } }, { data: "id" }, { data: "username" }, { data: "auth_group_title" }, { data: "mobile" }, { data: "register_time" }, { data: "status" }, { data: "operate" }, ], "drawCallback": function() { normal_init(); }, "initComplete": function() { $("#normalToos").append("<div class='m-b-xs'>" + "<div class='btn-group' id='exampleTableEventsToolbar' role='group'>" + "<a class='btn btn-sm btn-outline btn-default' title='添加' href='{:url('index',['tab'=>2])}'>" + "<i class='glyphicon glyphicon-plus' aria-hidden='true'></i></a>" + "<button type='submit' class='btn btn-sm btn-outline btn-default' title='刪除'>" + "<i class='glyphicon glyphicon-trash' aria-hidden='true'></i></button></div></div>"); } }); }); </script> ~~~ ### (四)功能實現 #### 1、獲取數據 ~~~ public function getDataTables() { // 請求數據 // draw:1 請求次數 // columns[0][data]:0 設置列的數據源,即如何從整個Table的數據源(object / array)中獲得 // columns[0][name]: 為列設定一個別名 // columns[0][searchable]:true 在該列上允許或者禁止過濾搜索記錄 // columns[0][orderable]:true 在該列上允許或者禁止排序功能 // columns[0][search][value]: 該列的搜索條件 // columns[0][search][regex]:false 允許或者禁止對在搜索字符串中出現的正則表達式字符強制編碼 // listorder[0][column]:0 指定排序的列 // listorder[0][dir]:asc 指定排序列的方式:升序或降序 // start:0 起始下標 // length:10 每頁記錄數 // search[value]: 全局搜索條件 // search[regex]:false 允許或者禁止對在搜索字符串中出現的正則表達式字符強制編碼 // 返回數據 // "draw": 請求次數 // "recordsTotal": 數據總數 // "recordsFiltered": 過濾之后的記錄總數 // "data": 返回數據 //獲取請求過來的數據 $getParam = request()->param(); $draw = $getParam['draw']; //排序 $orderSql = 'id desc'; //自定義查詢參數 $extra_search = $getParam['extra_search']; // 獲取表名 $tablename = 'user'; // 總記錄數 $recordsTotal = Db::name($tablename)->count(); //過濾條件后的總記錄數 $search = $getParam['search']['value']; $recordsFiltered = strlen($search) ? Db::name($tablename)->where($extra_search,'like','%'.$search.'%')->count() : $recordsTotal; //分頁 $start = $getParam['start']; //起始下標 $length = $getParam['length']; //每頁顯示記錄數 //根據開始下標計算出當前頁 $page = intval($start/$length) + 1; $config = ['page'=>$page, 'list_rows'=>$length]; $list = Db::name($tablename)->where($extra_search,'like','%'.$search.'%')->order($orderSql)->paginate(null,false,$config); $lists = []; if(!empty($list)){ foreach ($list as $key => $value) { $lists[$key] = $value; $lists[$key]['status'] = $value['status'] ? '√' : '?'; $lists[$key]['auth_group_title'] = Db::name('auth_group')->cache(true)->where('id',$value['auth_group_id'])->value('title'); $lists[$key]['operate'] = "<a href='". url('index',['id'=>$value['id'],'tab'=>3]) ."' title='編輯'><i class='fa fa-edit text-navy'></i></a>&nbsp;&nbsp; <a name='delete' href='". url('delete',['id'=>$value['id']]) ."' title='刪除'><i class='fa fa-trash-o text-navy'></i></a>"; } } $data = array( "draw"=>$draw, "recordsTotal"=>$recordsTotal, //數據總數 "recordsFiltered"=>$recordsFiltered, //過濾之后的記錄總數 "data"=>$lists ); echo json_encode($data); } ~~~ #### 2、批量刪除 ~~~ public function deleteAll(){ if (empty(input('post.ids/a'))) { return error('請選中需要刪除的數據!'); } foreach (input('post.ids/a') as $id => $value) { Db::name('user')->where('id',$id)->delete(); db('auth_group_access')->where('uid',$id)->delete(); } return success('刪除成功!',url('index')); } ~~~ #### 3、添加新用戶 ~~~ public function add() { if(request()->isPost()) { $data = input('post.'); $id = Db::name('user')->strict(false)->insertGetId($data); //添加角色 $group_access = ['uid' => $id, 'group_id' => $data['auth_group_id']]; Db::name('auth_group_access')->insert($group_access); return success('新用戶添加成功!',url('index',['tab'=>1])); } } ~~~ #### 4、刪除單用戶 ~~~ public function delete($id = 0) { if(Db::name('user')->where('id',$id)->delete()){ // 刪除相應角色 db('auth_group_access')->where('uid',$id)->delete(); return success('用戶刪除成功!',url('index',['tab'=>1])); }else{ return error('刪除失敗!'); } } ~~~ #### 5、編輯用戶 信息未做任何改變,TP5返回0;編輯成功返回true,嚴格檢查,是bool值,而不是0 if($result !== false){……} ~~~ public function index( $id = 0, $tab = 0 ){ $infoList = Db::name('user')->order('id desc')->select(); $auth_group = Db::name('auth_group')->column('id,title'); $this->assign('infoList',$infoList); $this->assign('auth_group',$auth_group); // 編輯 if( 3 == $tab ) { $info = db('user')->where('id',$id)->find(); $this->assign('info',$info); } return view(); } // 編輯用戶 public function edit( $id = 0) { if(request()->isPost()) { $data = input('post.'); // 判斷密碼是否為空 if(trim($data['password']=='')){ unset($data['password']); }else{ $data['password']=md5($data['password']); } $result = db('user')->where('id',$id)->strict(false)->update($data); if($result !== false){ // 如果用戶角色有變化做相應修改 if($data['authGroupId'] != $data['auth_group_id']){ db('auth_group_access')->where('uid',$id)->setField('group_id',$data['auth_group_id']); } return success('用戶信息編輯成功!',url('index')); }else{ return error('用戶信息編輯失敗!'); } } } ~~~ ## 三、新增字段 ~~~ ALTER TABLE `x_user` ADD `auth_group_id` SMALLINT UNSIGNED NOT NULL DEFAULT '4' AFTER `username` ~~~ ## 四、獲取插入ID ~~~ $id = Db::name('user')->strict(false)->insertGetId($data); 獲取某些字段值 $auth_group = Db::name('auth_group')->column('id,title'); 刪除相應角色(兩種方法) db('auth_group_access')->where('uid',$id)->delete(); Db::name('auth_group_access')->where('uid',$id)->delete(); ~~~ ## 五、前臺注冊修改 ### (一)用戶注冊 #### 1、功能處理 ~~~ public function register(){ if(request()->isPost()){ //判斷用戶名是否存在 $count = Db::name('user')->where('username',input('post.username'))->count(); if($count){ $data['status'] = 202; $data['msg'] = '用戶名已存在!'; return json($data); }else{ //用戶注冊 $data = input('post.'); $data['password'] = md5($data['password']); $id = Db::name('user')->strict(false)->insertGetId($data); //插入新數據后執行觸發器 //添加角色 $group_access = ['uid' => $id, 'group_id' => 4]; Db::name('auth_group_access')->insert($group_access); //寫入Session session('uid',$id); //返回成功信息 $data['status'] = 200; $data['url'] = url('/admin'); return json($data); } }else{ return view('../application/index/view/default/user/register.html'); } } ~~~ ### (二)手機注冊 #### 1、功能處理 ~~~ public function regmobile(){ if(request()->isPost()){ $data = input('post.'); //判斷手機號是否存在 $count = Db::name('user')->where('mobile', $data['mobile'])->count(); if($count){ $data['status'] = 202; $data['msg'] = '手機號已存在!'; return json($data); }else{ //判斷手機號和驗證碼是否正確 if($data['mobile']==session('mobile') && $data['code']==session('smscode')){ //用戶注冊 $data['password'] = md5($data['password']); $id = Db::name('user')->strict(false)->insertGetId($data); //插入新數據后執行觸發器 //添加角色 $group_access = ['uid' => $id, 'group_id' => 4]; Db::name('auth_group_access')->insert($group_access); //寫入Session session('uid',$id); //返回成功信息 $data['status'] = 200; $data['url'] = url('/admin'); return json($data); }else{ $data['status'] = 202; $data['msg'] = '驗證碼錯誤!'; return json($data); } } }else{ return view('../application/index/view/default/user/regmobile.html'); } } ~~~ ## 六、關聯模型另類實現 ~~~ $lists[$key]['auth_group_title'] = Db::name('auth_group')->cache(true)->where('id',$value['auth_group_id'])->value('title'); $list = Db::name($tablename)->where()->order()->select(); $lists = []; if(!empty($list)){ foreach ($list as $key => $value) { $lists[$key] = $value; $lists[$key]['auth_group_title'] = Db::name('auth_group')->cache(true)->where('id',$value['auth_group_id'])->value('title'); $lists[$key]['operate'] = "<a href='". url('index',['id'=>$value['id'],'tab'=>3]) ."' title='編輯'><i class='fa fa-edit text-navy'></i></a>&nbsp;&nbsp; <a name='delete' href='". url('delete',['id'=>$value['id']]) ."' title='刪除'><i class='fa fa-trash-o text-navy'></i></a>"; } } ~~~ ## 七、問題解決 ### (一)is_array和empty函數傳值 問題描述:Can't use function return value in write context 解決方法: 今天使用thinphp框架is_array函數的時候,碰到這個錯誤。意思是不能使用函數返回值做參數 百度解決方案說是thinkphp的bug ,比較靠譜的說法感覺是php版本的問題,5.4不行,5.6就ok,可我用的是5.6的版本。 >解決方法,is_array,empty中的參數盡量傳變量就好了。 ~~~ if (empty(input('post.ids/a'))) { return error('請選中需要刪除的數據!'); } 改成 $ids = input('post.ids/a'); if (empty($ids)) { return error('請選中需要刪除的數據!'); } ~~~ https://blog.csdn.net/fjnjxr/article/details/74931800 ### (二)編輯信息無修改時提示失敗 信息未做任何改變,TP5返回0;編輯成功返回true,嚴格檢查,是bool值,而不是0 解決方法:if($result !== false){……} 具體代碼: ~~~ public function edit( $id = 0) { if(request()->isPost()) { $data = input('post.'); // 判斷密碼是否為空 if(trim($data['password']=='')){ unset($data['password']); }else{ $data['password']=md5($data['password']); } $result = db('user')->where('id',$id)->strict(false)->update($data); if($result !== false){ // 如果用戶角色有變化做相應修改 if($data['authGroupId'] != $data['auth_group_id']){ db('auth_group_access')->where('uid',$id)->setField('group_id',$data['auth_group_id']); } return success('用戶信息編輯成功!',url('index')); }else{ return error('用戶信息編輯失敗!'); } } } ~~~ ## 八、常見代碼 ~~~ 1、設置字段值 db('auth_group_access')->where('uid',$id)->setField('group_id',$data['auth_group_id']); 2、獲取插入ID $id = Db::name('user')->strict(false)->insertGetId($data); 3、獲取某些字段值 $auth_group = Db::name('auth_group')->column('id,title'); 3、刪除相應角色(兩種方法) db('auth_group_access')->where('uid',$id)->delete(); //助手函數 Db::name('auth_group_access')->where('uid',$id)->delete(); //靜態函數 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看