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

很簡單。你在請求中保留一個頁面變量。

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

而且在你的SQL語句,你會把這樣的事情,它使用的頁面變量調整的查詢範圍:

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

類似的東西反正。現在爲您上一頁和下一頁鏈接你把這樣的事情,這樣就可以增加/減少頁面變量:

<? 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這不是一個剪切和粘貼網站。您應該首先了解代碼中發生了什麼,然後再實現它。如果你不知道在哪裏放置上述項目,那會導致我相信你不明白他們做了什麼,這對網絡工程師和他們的服務器可能是非常危險的。仔細檢查每一項,如果你不瞭解他們正在做什麼,那麼就研究直到你做。 – 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

相關問題