常用函数构建_搜索、排序、分页

<!DOCTYPE html>
<html>
<head>
    <title>Risky Jobs -Search</title>
    <link rel="stylesheet" type="text/css" href="search.css">
</head>
<body>
    <h3>Risky Jobs</h3>

<?php 
    require_once('define.php');
    @$sort = $_GET['sort'];
    // echo $sort;
    $user_search = 'Proses, 0509';
    // $sort = $_GET['sort']? $_GET['sort']:'';
    // $user_search = $_GET['usersearch'];
    #定义分页变量
    $cur_page = isset($_GET['page'])? $_GET['page'] : 1;
    $results_per_page = 5;//当前页
    $skip = (($cur_page - 1) * $results_per_page); //跳转行数

    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('connect to db failed');
    //定制函数build_query
    function build_query($user_search,$sort){
            $search_query = "select * from smsrecord";
            $clean_search = str_replace(',', ' ', $user_search);//将逗号转换为空格
            $search_words = explode(' ', $clean_search);//将字串用空格拆分
            // echo '<pre>';
            // print_r($search_words);
            // 预处理去除空格
            $final_search_words = array();
            if (count($search_words)>0) {
                foreach ($search_words as $words) {
                    if (!empty($words)) {
                        $final_search_words[] = $words;
                        // echo '<pre>';
                        // print_r($final_search_words);
                    }
                }
            }

            //where 语句
            $where_list = array();
            if (count($final_search_words) > 0) {
                foreach ($final_search_words as $word) {
                $where_list[] = "content like '%$word%' ";
                
            }
            }

            $where_clause = implode(' or ', $where_list);//传入定界符or
                // echo '<pre>';
                // print_r($where_clause);

            if (!empty($where_clause)) {
                $search_query .= " where $where_clause";
                // echo '<pre>';    
                print_r($search_query);    
            }
            //使用$sort 构建order by 排序
            switch ($sort) {
                case 1:
                    $search_query .= " order by result";
                    break;
                case 2:
                    $search_query .= " order by result desc";
                    break;
                case 3:
                    $search_query .= " order by sendtime";
                    break;
                case 4:
                    $search_query .= " order by sendtime desc";
                    break;
                
                default://如果没有点击任何列,不完成任何排序
                    // break;
            }
            return $search_query;
            // echo '<pre>';
            // print_r($search_query);
    }

    $search_query = build_query($user_search,$sort);
    $data = mysqli_query($dbc, $search_query);

    $total = mysqli_num_rows($data); //总行数
    // echo $total;
    $num_pages = ceil($total / $results_per_page);//总页数 ceil向上取整
    // echo $num_pages;
    #构建分页函数 generate_page_links
    function generate_page_links($user_search, $sort, $cur_page, $num_pages){
        $page_links = '';
        #如果不是首页,生成上一页
        if ($cur_page > 1) {
            $page_links .= '<a href="'. $_SERVER['PHP_SELF'].'?usersearch='. $user_search.'&sort='.$sort.'&page='.($cur_page - 1).'"><- </a>';
        }else{
            $page_links .= '<- ';
        }
        #循环生成其他页面
        for ($i=1; $i < $num_pages; $i++) { 
            if ($cur_page == $i) {
                $page_links .= ' '. $i ;
            }else{
                $page_links .= '<a href="'. $_SERVER['PHP_SELF'].'?usersearch='. $user_search.'&sort='.$sort.'&page='. $i .'">&nbsp;'.   $i.'&nbsp;</a>';
            }
        }
        #r如果不是最后一页  生成下一页
        if ($cur_page < $num_pages) {
            $page_links .= '<a href="'. $_SERVER['PHP_SELF'].'?usersearch='. $user_search.'&sort='.$sort.'&page='.($cur_page + 1).'"> -></a>';
        }else{
            $page_links .= ' ->';
        }
        return $page_links;
    }


    $query = $search_query." limit $skip, $results_per_page";
    // echo $query;
    $result = mysqli_query($dbc, $query);
    if (mysqli_num_rows($data)>0) {

        //构建排序函数generate_sort_links 1,3 升序,2,4降序
        function generate_sort_links($user_search, $sort){
            $sort_links = '';
            switch ($sort) {
                case 1:
                    $sort_links .= '<th><a href="'.$_SERVER['PHP_SELF'].'?usersearch='.$user_search.'&sort=2">result</a></th>';
                    $sort_links .= '<th><a href="'.$_SERVER['PHP_SELF'].'?usersearch='.$user_search.'&sort=3">sendtime</a></th>';
                    break;
                case 3:
                    $sort_links .= '<th><a href="'.$_SERVER['PHP_SELF'].'?usersearch='.$user_search.'&sort=1">result</a></th>';
                    $sort_links .= '<th><a href="'.$_SERVER['PHP_SELF'].'?usersearch='.$user_search.'&sort=4">sendtime</a></th>';
                    break;
                
                default:
                    $sort_links .= '<th><a href="'.$_SERVER['PHP_SELF'].'?usersearch='.$user_search.'&sort=1">result</a></th>';
                    $sort_links .= '<th><a href="'.$_SERVER['PHP_SELF'].'?usersearch='.$user_search.'&sort=3">sendtime</a></th>';
                    break;
            }
            return $sort_links;
        }
        $sort_links = generate_sort_links($user_search,$sort);

        echo '<table border="0" cellpadding="2">';
        echo '<tr><th>Id</th><th>content</th>';
        echo '<th>mcc</th>';
        echo $sort_links.'</tr>';//排序
        // echo '<th><a href="'.$_SERVER['PHP_SELF'].'?usersearch'.$user_search.'&sort=3">sendtime</a></th></tr>';
        while ( $row = mysqli_fetch_array($result)) {
            echo '<td valign="top" width="2%">'.$row['sms_id'].'</td><td valign="top" width="60%">';
            echo substr($row['content'], 0, 90).'...</td><td valign="top" width="10%">';
            echo $row['mcc'].$row['mnc'].'</td><td valign="top" width="10%">';
            echo $row['result'].'</td><td valign="top" width="10%">';
            echo substr($row['sendtime'], 0, 10).'</td><tr>';
        }
        echo '</table>';

        if ($num_pages > 1) { //如果页数大于1  调用分页函数
        echo generate_page_links($user_search, $sort, $cur_page, $num_pages);
    }
    }
    mysqli_close($dbc);

 ?>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值