在php

时间:2015-05-26 13:07:32

标签: php sorting mysqli pagination

大家早上好!

我一直在做一个小项目,我以为我已经完成了。所以,我有一堆页面,但我有一个MYSQLi查询超过100k的结果,我认为不显示所有100k +结果会很好,所以我在网站上添加了分页。我遇到的问题是,每当有人对页面进行排序并点击下一页时,排序就会消失。

在我写这篇文章时,我有点想通了,但这是我的代码:

$sort = "id";
    if(isset($_GET['sort'])) {
        switch ($_GET['sort'] ) { 

        case 0:
                    $sort = 'id';
                    break;
        case 1:
                    $sort = 'priority DESC';
                    break;
        case 2:
                    $sort = 't_name'; 
                    break;  
        case 3:
                    $sort = 'loc'; 
                    break;
        case 4:
                    $sort = 'w_req';
                    break;
        case 5:
                    $sort = 'tel';
                    break;
        case 6:
                    $sort = 'maint_user';
                    break;
        }
    }

        // pagination
        $total_results = mysqli_num_rows(mysqli_query($mysqli,"SELECT w_status FROM w_o WHERE (w_status = 'active' OR w_status = 'open') ORDER BY $sort"));

        if(!isset($page_number))
            $page_number = (int)$_GET['page'] <= 0 ? 1 : (int)$_GET['page']; // grab the page number

            $perpage = 15; // number of elements perpage


        if($page_number > ceil($total_results/$perpage))
            $page_number = ceil($total_results/$perpage);


        $start = ($page_number - 1) * $perpage;

        $result = mysqli_query($mysqli,"SELECT * FROM w_o WHERE (w_status = 'active' OR w_status = 'open') ORDER BY $sort LIMIT $start, $perpage");

我认为我的问题是$ sort =&#34; id&#34 ;;每次我点击下一步,$ sort都会重置为=&#34; id&#34;所以我在想,也许在分页代码中包含$ sort?我感谢任何帮助。谢谢:))

这是html:

<form action="re_assign_a.php" method="post" name="view_order">    

  <table border="0" width="100%">
    <tr>
        <td align="left"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number-1)."'";?>" class="button_s">Previous</a></td>
        <td align="right"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number+1)."'";?>" class="button_s">Next</a></td>
    </tr>
  </table>
  <br>           
  <table border='2' style='width: 100%; margin: auto; border-width: 1px'>
    <tr>
        <th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=0";?>" title="Click to sort by order number." class="tooltip"><span title="More">Order #</span></a></th>
        <th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=1";?>" title="Click to sort by Priority." class="tooltip"><span title="More">Priority</span></a></th>
        <th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=2";?>" title="Click to sort by Tenant Name." class="tooltip"><span title="More">Tenant Name</span></a></th>
        <th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=3";?>" title="Click to sort by Apartment/Location" class="tooltip"><span title="More">Apartment</span></a></th>
        <th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=4";?>" title="Click to sort by Work Requested" class="tooltip"><span title="More">Work Requested</span></a></th>
        <th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=5";?>" title="Click here to sort by Phone Number" class="tooltip"><span title="More">Resident Phone #</span></a></th>
        <th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=6";?>" title="Click to sort by a good date to perform work" class="tooltip"><span title="More">Assigned to</span></a></th>
        <th>Check to Re-Assign</th>
    </tr>

 <?php

 $i = 0;
 while($row = mysqli_fetch_array($result))
    {
        $test_id = $row['id'];
        echo "<tr class='table_work'>";
        echo "<td align='center'><a href='one_order.php?id=$test_id'>" . $row['id'] . "</td>";
        echo
       "<td align='center'><a href='one_order.php?id=$test_id'>"; 
       if ($row['priority'] == '1') { echo "<div class='priority1'>&nbsp;</div>"; } elseif ($row['priority'] == '2') { echo "<div class='priority2'>&nbsp;</div>"; } elseif ($row['priority'] == '3') { echo "<div class='priority3'>&nbsp;</div>"; };
       echo "</a></td>
        <td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo1 ($row['t_name']); echo "</a></td>
        <td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo1 ($row['loc']); echo "</a></td>
        <td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo($row['w_req']); echo "</a></td>";
        echo "<td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo2($row['tel']); echo "</a></td>";
        echo "<td align='center'><a href='one_order.php?id=$test_id'>" . $row['maint_user'] . "</a></td>";
        echo "<td align='center'><input name='assign[$i]' type='checkbox' value='" . $row['id'] . "' ></td>";
        ++$i;
    }



 ?>

   </table><br>
   <table border="0" width="100%">
   <tr>
   <td align="left"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number-1)."'";?>" class="button_s">Previous</a></td>
   <td align="right"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number+1)."'";?>" class="button_s">Next</a></td>
   </tr>
   </table>

2 个答案:

答案 0 :(得分:2)

您只需调整链接以转到页面以将排序顺序包含为GET参数。将GET参数存储为默认为零的变量

final SpannableString s = new SpannableString(
        getString(R.string.app_name_short));
s.setSpan(
        new CustomTypefaceSpan(Typeface.createFromAsset(
        this.getAssets(), TypefaceUtils.TTF_ARDESTINE)), 0,
        s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setTitle(s);

现在,当单击下一页或上一页链接时,页码和排序顺序将传递到服务器。

答案 1 :(得分:0)

您必须扩展HTML中的网址。这是一个快速的&amp;脏解!您必须正确定义代码中的变量。

下一页网址

<td align="left"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number-1)."&sort=$sort'";?>" class="button_s">Previous</a></td>
<td align="right"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number+1)."&sort=$sort'";?>" class="button_s">Next</a></td>

排序网址

<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=0&page=$page";?>" title="Click to sort by order number." class="tooltip"><span title="More">Order #</span></a></th>