2012-05-03 17 views
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> 

答えて

2

簡単です。リクエストにはページ変数を保持します。とにかくそのような

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

何か:

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

そして、あなたのSQL文で

は、クエリの制限を調整するためにページ変数を使用して、このようなものを、入れてしまうでしょう。今、あなたはインクリメントできるように、このような何かを入れて、あなたの前と次のリンクのために、/ページ変数をデクリメント:

<? 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 ?> 
+0

私はどこにこのコードを置くべきかに問題があります。申し訳ありません...このPHPのものは私にトラブルを与える! –

+0

@ChristineAustinこれはカットアンドペーストサイトではありません。最初にコード内で何が起こっているのかを理解し、実装する必要があります。あなたが上記の項目をどこに置くべきかわからないと、あなたは彼らが何をしているのか分からないと信じて、Webエンジニアとそのサーバにとって非常に危険です。それぞれを通って、あなたが何をしているのか分からなければ、あなたがするまで研究してください。 – dqhendricks

+0

あなたは正しいです、私はそれに対して反対しません。私はこれに新しいので、私はそれを分解しようとします。ご協力いただきありがとうございます。 –

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"; 
+1

@JeffPigarelli MySQLは、実際に「TOP」を理解していません。代わりに "LIMIT"を使用する必要があります。 – dqhendricks

関連する問題