如何根据表字段中的数据计算特定行的分页?

时间:2016-04-29 17:01:14

标签: php mysql sql select pagination

我有一个来自不同国家/地区的用户的数据库。我的分页工作正常,因为查询计算所有行。所以它给你5页,让我们说总记录由第3页完成。

我的问题是:

1)我如何只计算来自一个国家的记录,让我们说“澳大利亚”?分页应该只给我带有结果的页面,没有额外的页面没有结果?

我的分页代码如下:

        <?php

       $per_page = 1;
       $pages_query = mysql_query("SELECT COUNT(*) FROM `users`");
        $pages = ceil(mysql_result($pages_query,0)/$per_page);

        if (!isset($_GET['page']))

        {
          header("location: blood.php?page=1");

        }
        else

          {
           $page = $_GET['page'];

          }

          $start = (($page - 1)*$per_page);

          $colours = mysql_query("SELECT * FROM users WHERE country ='australia'   LIMIT $start,$per_page");

          while($row = mysql_fetch_assoc($colours))
          {
             $username = $row['first_name'];

            echo "$username<br>";

          }

          for($number=1; $number<=$pages; $number++)
          {
             echo '<a href= "?page='.$number.'">'.$number.'&nbsp;</a>';
             echo"&nbsp;";
          }

         echo "<br>Current Page: $page";
      ?>

如何将上述代码与下面代码中建议的更正结合在一起,在用户搜索用户名和姓氏后返回结果。

      <?php 

      include 'core/init.php'; 
      include 'includes/overall/oheader.php';
      ?>

       <?php
      if(isset($_POST['submit']))
      {
        $query = $_POST['uname_search'];
        $queryl = $_POST ['lname_search'];

        $min_length = 3;
       if(strlen($query) >= $min_length && strlen($queryl) >= $min_length)
      {
        $query = htmlspecialchars($query);
        $query = mysql_real_escape_string($query);
        $queryl = htmlspecialchars($queryl);
         $queryl = mysql_real_escape_string($queryl);
      echo "<table border='1' width='250px' align='center' cellpadding='1' cellspacing='1'>";
    echo "<tr align='center' bgcolor='#002C40' style='color:#FFF'>
    <td height='30px' width='150px'>Username</td> <td>first_name</td>    <td>last_name</td><td>email</td><td>Mobile_Number</td><td>gender</td><td>county</td><td>blood_group</td>


  $raw_results =

    mysql_query("SELECT * FROM `users` WHERE (`username` LIKE  '%".$query."%') AND (`last_name` LIKE '%".$queryl."%')");
     if(mysql_num_rows($raw_results) > 0)
    {
    while($results = mysql_fetch_array($raw_results))
    {

     $image = "images/profile/1a4671c319.jpg" ; 

     echo "<tr align='center' bgcolor='#002C40' style='color:#FFF'>


    <td rowspan='4'>"."<img src=".$results['profile']." width=100px  height=100px> "."</td>
    <td >Username</td>
    <td >first_name</td>
    <td>last_name</td>
    <td>email</td>


    </tr>";

     echo "<tr align='center' bgcolor='#0f7ea3'>
      <td>".$results['username']."</td> 
     <td>".$results['first_name']."</td> 
     <td>".$results['last_name']."</td> 
     <td>".$results['email']."</td> 

     </tr>" ;

    echo "<tr align='center' bgcolor='#002C40' style='color:#FFF'>




     <td>Mobile_Number</td>
     <td>gender</td>
     <td>county</td>
     <td>blood_group</td>

     </tr>";

      echo "<tr align='center' bgcolor='#0f7ea3'>

      <td>".$results['Mobile_Number']."</td> 
       <td>".$results['gender']."</td> 
      <td>".$results['county']."</td> 
      <td>".$results['blood_group']."</td> 

     </tr>" ;
    }

   }
    else{
     echo "<tr align='center' bgcolor='#6C0000'>

       <td colspan='8' height='25px'>No results</td><tr>";
    echo "</table>";
     }
    }
    else{
       echo "Minimum length is ".$min_length;
     }

      }

       include 'includes/overall/ofooter.php';

     ?>

1 个答案:

答案 0 :(得分:2)

您可以将相同的where子句应用于计算用户的第一个查询:

$pages_query = 
    mysql_query("SELECT COUNT(*) FROM `users` WHERE country ='australia'");
    # Here -----------------------------------^