我的代码中有一个非常好的系统,它将我的SQL结果放在不同的页面上,每页10行。这很好,并且完全按照应有的方式工作,但我想限制生成的页数。我的结果是按照特定的顺序排列,但是在25页之后,我认为这已经足够了(这将是250个结果)。我将如何添加到下面的代码中以最大化创建的页面数量?提前谢谢!
<?php
// First I build my SQL which counts the amount of
// rows, how this SQL query looks like depends on the
// fields left blank and actually filled.
$sql = "SELECT COUNT(bedrijfsnaam) FROM profiles";
if ($bedrijfvariabele != " zoek op bedrijfsnaam.." &&
$bedrijfvariabele != "")
{
$sql .= " WHERE bedrijfsnaam = '".$bedrijfvariabele."'";
}
if ($rubriekvariabele != " zoek op rubriek.." &&
$rubriekvariabele != "" &&
$bedrijfvariabele != " zoek op bedrijfsnaam.." &&
$bedrijfvariabele != "")
{
$sql .= " AND (hoofdrubriek = '" . $rubriekvariabele . "' "
. " OR subrubrieken LIKE '%" . $rubriekvariabele . "%')";
}
if ($rubriekvariabele != " zoek op rubriek.." &&
$rubriekvariabele != "" &&
($bedrijfvariabele == " zoek op bedrijfsnaam.." ||
$bedrijfvariabele == ""))
{
$sql .= " WHERE (hoofdrubriek = '" . $rubriekvariabele . "' "
. " OR subrubrieken LIKE '%".$rubriekvariabele."%')";
}
if ($plaatsvariabele != " zoek op plaatsnaam.." &&
$plaatsvariabele != "" &&
(
($bedrijfvariabele != " zoek op bedrijfsnaam.." &&
$bedrijfvariabele != "") ||
($rubriekvariabele != " zoek op rubriek.." &&
$rubriekvariabele != "")
))
{
$sql .= " AND plaats = '".$plaatsvariabele."'";
}
if ($plaatsvariabele != " zoek op plaatsnaam.." &&
$plaatsvariabele != "" &&
(
($bedrijfvariabele == " zoek op bedrijfsnaam.." ||
$bedrijfvariabele == "") &&
($rubriekvariabele == " zoek op rubriek.." ||
$rubriekvariabele == "")
))
{
$sql .= " WHERE plaats = '".$plaatsvariabele."'";
}
// Now comes the interesting part for you guys
$rs_result = mysql_query($sql);
$row = mysql_fetch_row($rs_result);
$total_records = $row[0];
$total_pages = ceil($total_records / 10);
$template = '<a style="float:none;display:inline-block;color:white;'
. 'width:22px;text-align:center;text-decoration:none;'
. 'font-size:20px;background-color:#483435;margin-left:4px"'
. ' href="%s".php?page=%s">%s</a>';
for ($i=1; $i <= $total_pages; $i++)
{
echo sprintf($template, $plaatsnaam7, $i, $i);
}
答案 0 :(得分:3)
听起来你只需要在查询中使用LIMIT关键字。
尝试这样的事情: SELECT * FROM PEOPLE LIMIT 10
答案 1 :(得分:1)
来自
for ($i=1; $i<=$total_pages; $i++) {
echo "<a style=\"float:none;display:inline-block;color:white;width:22px;text-align:center;text-decoration:none;font-size:20px;background-color:#483435;margin-left:4px\" href='".$plaatsnaam7.".php?page=".$i."'>".$i."</a> ";
};
到
if $total_pages>25 $total_pages=25;
for ($i=1; $i<=$total_pages; $i++) {
echo "<a style=\"float:none;display:inline-block;color:white;width:22px;text-align:center;text-decoration:none;font-size:20px;background-color:#483435;margin-left:4px\" href='".$plaatsnaam7.".php?page=".$i."'>".$i."</a> ";
};
答案 2 :(得分:1)
我不会称之为'非常好的系统'。我最大的错误是加载了一些可能永远不会显示的数据量。您应该只加载您需要显示的切片 - 正如您所说的每页10行。你应该使用SLQ限制条款 - LIMIT offest, rowcount
- 示例select * from mytable order by id limit 20,10
- 将显示10行,从id排序的结果中的第20行开始。你应该传递一个GET或POST参数设置当前页面的数量'page = 2'和$ ofsset = 10 *($ page-1); $ rowcount = 10; 'select .... LIMIT '.$offset.','.$rowcount
。
看看这个古老但很好的课程,它完美地展示了一个好的寻呼机系统:split_page_results.php。应该重写一些部分以遵循新的PHP规则,但这个想法已经明确实现。
在这里,yopu可以找到一个用法提示:enter link description here。祝你好运。
答案 3 :(得分:0)
只需让if
语句检查您所在的页面。