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

から

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 に答える
1

私はこれを「かなりいいシステム」とは呼びません。私の大きな間違いは、表示されない可能性のある大量のデータをロードすることです。1ページあたり10行と言ったように、表示する必要のあるスライスだけをロードする必要があります。SLQ制限句を使用する必要があります---LIMIT offest, rowcount例-idselect * from mytable order by id limit 20,10で並べ替えられた結果の20番目から始まる10行が表示されます。現在のページの数'page=2'および$ofsset= 10 *($ page-1);を設定するGETまたはPOSTパラメーターを渡す必要があります。$ rowcount = 10; 'select .... LIMIT '.$offset.','.$rowcount

優れたページャーシステムを完全に示す、この古くて素晴らしいクラスを見てください:split_page_results.php。一部の部分は新しいPHPルールに従うように書き直す必要がありますが、アイデアは明確に実装されています。

ここでyopuは使用上のヒントを見つけることができます:ここにリンクの説明を入力してください。幸運を。

于 2012-10-18T21:51:27.353 に答える
0

どのifページを表示しているかをステートメントで確認してください。

于 2012-10-18T21:39:09.710 に答える