【发布时间】:2016-08-24 22:34:39
【问题描述】:
我有一个包含来自不同国家/地区的用户的数据库。我的分页正在工作,因为查询计算了所有行。所以它给了你 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.' </a>';
echo" ";
}
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';
?>
【问题讨论】:
-
为什么需要
SELECT COUNT(*) FROM "users"?如果您想显示14 users from Australia / 100 users in total类似消息,我只能想象这样一个查询 -
如果我让用户搜索,我如何包含变量。我尝试了以下方法,但它只给了我 1 个结果而不是 3 个,并且没有指向其他页面的链接。
mysql_query("SELECT COUNT(*) FROM users WHERE country =" . $country . " ");
标签: php mysql sql select pagination