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


how to count specific rows based on data in table fields for 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';
     ?>

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

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