0

我的代码中有一个非常好的系统,它将我的 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); 

}
4

4 回答 4

3

听起来您只需要在查询中使用 LIMIT 关键字。

尝试这样的事情:SELECT * FROM PEOPLE LIMIT 10

于 2012-10-18T21:40:02.550 回答
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); $行数 = 10; 'select .... LIMIT '.$offset.','.$rowcount.

看看这个古老但很好的类,它完美地展示了一个好的寻呼系统:split_page_results.php。有些部分应该被重写以遵循新的 PHP 规则,但这个想法已经很明确地实现了。

在这里yopu可以找到一个使用提示:enter link description here。祝你好运。

于 2012-10-18T21:51:27.353 回答
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> "; 

};
于 2012-10-18T21:38:15.120 回答
0

只需让一份if声明检查您所在的页面。

于 2012-10-18T21:39:09.710 回答