[PHP高可用后端]①⑦--搜索功能開發(fā)

222.png

關(guān)于日期插件My97 DatePicker與Think php模版標(biāo)簽沖突的解決方法
http://www.h-ui.net/H-ui.admin.shtml

common.js

function singwaapp_save(form) {
    var data = $(form).serialize();
    url = $(form).attr('url');
    $.post(url, data, function (result) {
        if (result.code == 0) {
            layer.msg(result.msg, {icon: 5, time: 2000});
        } else if (result.code == 1) {
            self.location = result.data.jump_url;
        }
    }, 'JSON');

}

function selecttime(flag){
    if(flag==1){
        var endTime = $("#countTimeend").val();
        if(endTime != ""){
            WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',maxDate:endTime})}else{
            WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'})}
    }else{
        var startTime = $("#countTimestart").val();
        if(startTime != ""){
            WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:startTime})}else{
            WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'})}
    }
}

News.php(Model)

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/8
 * Time: 16:43
 */

namespace app\common\model;

class News extends Base
{

    public function getNews($data = [])
    {
        $data['status'] = [
            'neq', config('code.status_delete')];
        $order = ['id' => 'desc'];

        $result = $this->where($data)
            ->order($order)
            ->paginate();

        //調(diào)試
        echo $this->getLastSql();
        /**
         * SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 0,3                 <>
         * SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 3,3                 <>
         */
        return $result;

    }

    /**
     * 根據(jù)來獲取列表的數(shù)據(jù)
     * @param array $param
     */
    public function getNewsByCondition($condition = [], $from = 0, $size = 5)
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
        $order = ['id' => 'desc'];

        $result = $this->where($condition)
            ->limit($from, $size)
            ->order($order)
            ->select();

        //SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 0,3
//        echo $this->getLastSql();
        return $result;

    }

    /**
     * 根據(jù)條件來獲取列表的數(shù)據(jù)的總數(shù)
     * @param array $param
     */
    public function getNewsCountCondition($condition = [])
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
        return $this->where($condition)
            ->count();

        //SELECT COUNT(*) AS tp_count FROM `ent_news` WHERE `status` <> -1 LIMIT 1
        //echo $this->getLastSql();

    }
}
 /**
     * 根據(jù)來獲取列表的數(shù)據(jù)
     * @param array $param
     */
    public function getNewsByCondition($condition = [], $from = 0, $size = 5)
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
        $order = ['id' => 'desc'];

        $result = $this->where($condition)
            ->limit($from, $size)
            ->order($order)
            ->select();

        //SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 0,3
//        echo $this->getLastSql();
        return $result;

    }

    /**
     * 根據(jù)條件來獲取列表的數(shù)據(jù)的總數(shù)
     * @param array $param
     */
    public function getNewsCountCondition($condition = [])
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
        return $this->where($condition)
            ->count();

        //SELECT COUNT(*) AS tp_count FROM `ent_news` WHERE `status` <> -1 LIMIT 1
        //echo $this->getLastSql();
    }

Base.php(Controller)

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/8
 * Time: 15:14
 */

namespace app\admin\controller;

use think\Controller;

class Base extends Controller
{
    /**
     * page
     * @var string
     */
    public $page = '';

    /**
     * 每頁顯示多少條
     * @var string
     */
    public $size = '';

    /**
     * 查詢條件的起始值
     * @var int
     */
    public $from = 0;


    protected function _initialize()
    {
        $isLogin = $this->isLogin();
        if (!$isLogin) {
            $this->redirect('login/index');
        }
    }

    public function isLogin()
    {
        $user = session(config('admin.session_user'), '',
            config('admin.session_user_scope'));
        if ($user && $user->id) {
            return true;
        }
        return false;
    }

    /**
     * 獲取分頁page size內(nèi)容
     */
    public function getPageAndSize($data)
    {
        $this->page = !empty($data['page']) ? $data['page'] : 1;
        $this->size = !empty($data['size']) ? $data['size'] : config('paginate.list_rows');
        $this->from = ($this->page - 1) * $this->size;
    }

}

News.php(Controller)

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/8
 * Time: 15:21
 */

namespace app\admin\controller;

class News extends Base
{

    public function index()
    {
        $data = input('param.');
        $whereData = [];

        $query=http_build_query($data);
        /**
         * string 'catid=1&start_time=2017-10-03+15%3A24
         * &end_time=2017-11-09+15%3A24&title=d' (length=73)
         */
        //halt($query);

        /**
         * array (size=4)
         * 'catid' => string '0' (length=1)
         * 'start_time' => string '2017-10-02 14:23' (length=16)
         * 'end_time' => string '2017-11-09 14:23' (length=16)
         * 'title' => string '1233333' (length=7)
         */
        //halt($data);

        //轉(zhuǎn)換查詢條件
        if (!empty($data['start_time']) &&
            !empty($data['end_time']) &&
            $data['end_time'] > $data['start_time']
        ) {
            $whereData['create_time'] = [
                ['gt', strtotime($data['start_time'])],
                ['lt', strtotime($data['end_time'])],
            ];
        }
        if (!empty($data['catid'])) {
            $whereData['catid'] = intval($data['catid']);
        }
        if (!empty($data['title'])) {
            $whereData['title'] = [
                'like', '%' . $data['title'] . '%'
            ];
        }

        $this->getPageAndSize($data);

        //獲取表里面的數(shù)據(jù)
        $news = model('News')->getNewsByCondition($whereData, $this->from, $this->size);
        //獲取滿足條件的數(shù)據(jù)總數(shù)=》有多少頁
        $total = model('News')->getNewsCountCondition($whereData);
        //結(jié)合總數(shù)+size =>有多少頁
        //1.1=>2
        $pageTotal = ceil($total / $this->size);


        return $this->fetch('', [
            'cats' => config('cat.list'),
            'news' => $news,
            'pageTotal' => $pageTotal,
            'curr' => $this->page,
            'start_time' => empty($data['start_time']) ? '' : $data['start_time'],
            'end_time' => empty($data['end_time']) ? '' : $data['end_time'],
            'catid' => empty($data['catid']) ? '' : $data['catid'],
            'title' => empty($data['title']) ? '' : $data['title'],
            'query'=>$query,
            ]);
    }

    public function add()
    {
        if (request()->isPost()) {
            $data = input('post.');
            try {
                $id = model('News')->add($data);
            } catch (\Exception $e) {
                return $this->result('', 0, '新增失敗:' . $e->getMessage());
            }

            if ($id) {
                return $this->result([
                    'jump_url' => url('news/index')], 1, 'OK');
            } else {
                return $this->result('', 0, '新增失敗');
            }
        } else {
            return $this->fetch('', [
                'cats' => config('cat.list')
            ]);
        }
    }

}

index.html(News)

<!--header-->
{include file="public/_meta" title="娛樂資訊"/}

<nav class="breadcrumb"><i class="Hui-iconfont"></i> 首頁 <span class="c-gray en">></span> 資訊管理 <span
        class="c-gray en">></span> 資訊列表 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px"
                                           href="javascript:location.replace(location.href);" title="刷新"><i
        class="Hui-iconfont"></i></a></nav>
<div class="page-container">
    <div class="text-c">
        <form action="{:url('news/index')}" method="get">
   <span class="select-box inline">
    <select name="catid" class="select">
          <option value="0">全部分類</option>
            {volist name="cats" id="vo"}
          <option value="{$key}" {if condition="$key eq $catid" } selected="selected" {/if}>{$vo}</option>
        {/volist}
        </select>
    </span> 日期范圍:
            <input type="text" name="start_time" class="input-text" id="countTimestart" onfocus="selecttime(1)"
                   value="{$start_time}"
                   style="width:120px;">
            -
            <input type="text" name="end_time" class="input-text" id="countTimestart" onfocus="selecttime(1)"
                   value="{$end_time}"
                   style="width:120px;">

            <input type="text" name="title" id="" value="{$title}" placeholder=" 資訊名稱" style="width:250px"
                   class="input-text">
            <button name="" id="" class="btn btn-success" type="submit"><i class="Hui-iconfont"></i> 搜資訊</button>
        </form>
    </div>

    <div class="mt-20">
        <table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
            <thead>
            <tr class="text-c">
                <th width="25"><input type="checkbox" name="" value=""></th>
                <th width="80">ID</th>
                <th>標(biāo)題</th>
                <th width="80">分類</th>
                <th width="80">縮圖</th>
                <th width="120">更新時(shí)間</th>
                <th width="40">是否推薦</th>
                <th width="60">發(fā)布狀態(tài)</th>
                <th width="120">操作</th>
            </tr>
            </thead>
            <tbody>

            {volist name="news" id="vo"}
            <tr class="text-c">
                <td><input type="checkbox" value="" name=""></td>
                <td>{$vo.id}</td>
                <td class="text-l"><u style="cursor:pointer" class="text-primary" title="查看">{$vo.title}</u></td>
                <td>{$vo.catid|getCatName}</td>
                <td><img width="60" height="60" class="picture-thumb" src="{$vo.image}"></td>
                <td>{$vo.update_time}</td>
                <td>{$vo.is_position|isYesNo}</td>
                <td class="td-status">{$vo.is_position}</td>
                <td class="f-14 td-manage"><a style="text-decoration:none" class="ml-5"
                                              onClick="article_edit('資訊編輯','article-add.html','10001')"
                                              href="javascript:;" title="編輯"><i class="Hui-iconfont"></i></a> <a
                        style="text-decoration:none" class="ml-5" onClick="" href="javascript:;" title="刪除"
                        del_url=""><i class="Hui-iconfont"></i></a></td>
            </tr>
            {/volist}
            </tbody>
        </table>
        <div id="laypage"></div>
    </div>

</div>
<!--header-->
{include file="public/_footer" /}

<!--請?jiān)谙路綄懘隧撁鏄I(yè)務(wù)相關(guān)的腳本-->
<script type="text/javascript" src="__STATIC__/hadmin/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="__STATIC__/hadmin/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
    var url = '{url("news/index")}' + '?{$query}';
    //alert(url);
    laypage({
        cont: 'laypage',
        pages: '{$pageTotal}',
        skin: '#5FB878',
        curr: '{$curr}',
        jump: function (e, first) {
            if (!first) {
                location.href = url + '&page=' + e.curr;
            }
        }
    });


</script>
<style>
    .imooc-app .pagination li {
        display: inline;
        padding-left: 10px;
    }

    .pagination .active {
        color: red
    }

    .pagination .disabled {
        color: #888888
    }
</style>
</body>
</html>
<form action="{:url('news/index')}" method="get">
<option value="0">全部分類</option>
            {volist name="cats" id="vo"}
          <option value="{$key}" {if condition="$key eq $catid" } 
selected="selected" {/if}>{$vo}</option>
        {/volist}
<input type="text" name="start_time" class="input-text" id="countTimestart" 
onfocus="selecttime(1)" value="{$start_time}" style="width:120px;">

<input type="text" name="end_time" class="input-text" id="countTimestart" 
onfocus="selecttime(1)" value="{$end_time}" style="width:120px;">

<input type="text" name="title" id="" value="{$title}" placeholder=" 資訊名稱" 
style="width:250px" class="input-text">
<script type="text/javascript">
    var url = '{url("news/index")}' + '?{$query}';
    //alert(url);
    laypage({
        cont: 'laypage',
        pages: '{$pageTotal}',
        skin: '#5FB878',
        curr: '{$curr}',
        jump: function (e, first) {
            if (!first) {
                location.href = url + '&page=' + e.curr;
            }
        }
    });
222.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末计雌,一起剝皮案震驚了整個濱河市缸血,隨后出現(xiàn)的幾起案子植阴,更是在濱河造成了極大的恐慌览爵,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柠贤,死亡現(xiàn)場離奇詭異病毡,居然都是意外死亡镀迂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門怪嫌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來义锥,“玉大人,你說我怎么就攤上這事岩灭“璞叮” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵噪径,是天一觀的道長柱恤。 經(jīng)常有香客問我,道長找爱,這世上最難降的妖魔是什么膨更? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮缴允,結(jié)果婚禮上荚守,老公的妹妹穿的比我還像新娘珍德。我一直安慰自己,他們只是感情好矗漾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布锈候。 她就那樣靜靜地躺著,像睡著了一般敞贡。 火紅的嫁衣襯著肌膚如雪泵琳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天誊役,我揣著相機(jī)與錄音获列,去河邊找鬼。 笑死蛔垢,一個胖子當(dāng)著我的面吹牛击孩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹏漆,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼巩梢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了艺玲?” 一聲冷哼從身側(cè)響起括蝠,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饭聚,沒想到半個月后忌警,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秒梳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年慨蓝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片端幼。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡礼烈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婆跑,到底是詐尸還是另有隱情此熬,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布滑进,位于F島的核電站犀忱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扶关。R本人自食惡果不足惜阴汇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望节槐。 院中可真熱鬧搀庶,春花似錦拐纱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咆蒿,卻和暖如春东抹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沃测。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工缭黔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蒂破。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓馏谨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寞蚌。 傳聞我的和親對象是個殘疾皇子田巴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容