1

フォーラムが長くなると、背景画像を超えて見栄えが悪くなるため、自分が持っているフォーラムの前のボタンと次のボタンを入力したいと思います。誰かがそれを行う簡単な方法か、前と次のボタンを探すことができる何かを知っていますか?各ページが1ページあたり5件の投稿に制限されるようにしたいと思います。

それがまったく役立つ場合は、ここにコードがあります。これがばかげた質問でしたらごめんなさい。

<?php 
$dbc=mysql_connect('host','user','password','database') or die(mysql_error());
mysql_select_db('database',$dbc) or die(mysql_error());
?>

View Posts <br>
<form method="get" action="view_forum.php">
  <label>Select Weather to Filter </label><br />
  <select name="weather">
    <option value="all">all</option>
    <option value="cloudy">Cloudy</option>
    <option value="sunny">Sunny</option>
    <option value="windy">Windy</option>
    <option value="snowy">Snowy</option>
    <option value="mixy">Wintery Mix</option>
    <option value="rainy">Rainy</option>
  </select>
  <input type="submit" value="view" />
</form>

<div id="view">
 <center><img src="images/forum.png" width="589" height="97"></center>
</div>  
  <div id="white">
    <div id="blue">
      <div id="grey">
       <div id="container">
<?php
$weather = mysql_real_escape_string( $_GET["weather"] ); // keep your input clean

if ( $weather == "all" ) {
  $sql = "SELECT * FROM stories ORDER BY id DESC";
} else {
  $sql = "SELECT * FROM stories WHERE weather = '$weather' ORDER BY id DESC";
}

$result = mysql_query( $sql ) or die( mysql_error() );

while ( $row = mysql_fetch_assoc( $result ) ) {

    echo "<div class=\"names\"> {$row['name']}<br /></div>";
    echo "<div class=\"weathers\">{$row['weather']}<br /></div>";
   echo "<div class=\"stories\">{$row['story']}<br /></div>";



        echo "<img src=\"images/line.png\" width='800' height='3'>";

         echo "<br />"; 
}

?>
</div>
</div>
</div>
</div>
4

2 に答える 2

2

それは簡単です。リクエストにはページ変数を保持します。以下に示すように

if (!isset($_GET['page'])) {
   $page = 1;
} else {
   $page = (int)$_GET['page'];
}

そして、SQLステートメントには、次のようなものを入れます。これは、ページ変数を使用してクエリの制限を調整します。

$query = 'SELECT * FROM someTable WHERE 1 LIMIT ' . (($page - 1) * $recordsPerPage) . ' ' . $recordsPerPage;

とにかくそのようなもの。次に、PreviousリンクとNextリンクに次のようなものを配置して、ページ変数をインクリメント/デクリメントできるようにします。

<? if ($page > 1) : ?>
   <a href="self.php?page=<?= $page - 1 ?>">Prev</a>
<? endif ?>
<? if ($page != $maxPages) : ?>
   <a href="self.php?page=<?= $page + 1 ?>">Next</a>
<? endif ?>
于 2012-05-03T17:25:31.943 に答える
0

ページ付けする必要があります。MySQLではTOPを使用できます。

-- Fist 10 results:
SELECT * FROM stories ORDER BY id DESC TOP 10 

-- 10 results from the number 11 (0 is the first)
SELECT * FROM stories ORDER BY id DESC TOP 10,10

-- 10 results from the number 50
SELECT * FROM stories ORDER BY id DESC TOP 50,10

合計結果を知るには、SQL_CALC_FOUND_ROWSを使用できます。

SELECT SQL_CALC_FOUND_ROWS as total, stories.* FROM stories ORDER BY id DESC TOP 10 

PHPから、ページネーションを計算できます。

$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;

if ($page < 1) $page = 1;

$sql = "SELECT SQL_CALC_FOUND_ROWS as total, stories.* FROM stories ORDER BY id DESC TOP " . ($page-1) .  ",10";  
于 2012-05-03T17:19:00.830 に答える