Twitterで有名人を一覧表示するページを作成しています。ページには、最初のループの場合と同様に 10 個の異なる結果が表示されますが、データベースから次の 10 個の値を取得するために $result を更新していないようです (次のページ セットなど)。
<?php
// connect to the database
$con = mysql_connect("localhost","someuid","somepwd");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("celebrity_twitter", $con);
$result = mysql_query("SELECT * FROM celebrities");
// number of results to show per page
$per_page = 10;
$total_results = mysql_num_rows($result);
$total_pages = ceil($total_results / $per_page);
// check if the 'page' variable is set in the URL (ex: view-paginated.php?page=1)
if (isset($_GET['page']) && is_numeric($_GET['page']))
{
$show_page = $_GET['page'];
// make sure the $show_page value is valid
if ($show_page > 0 && $show_page <= $total_pages)
{
$start = ($show_page -1) * $per_page;
$end = $start + $per_page;
}
else
{
// error - show first set of results
$start = 0;
$end = $per_page;
}
}
else
{
// if page isn't set, show first set of results
$start = 0;
$end = $per_page;
}
// display data in table
echo "<table class='table table-striped'>";
echo "<tr> <th>Avatar</th> <th>Celebrity Name</th> </tr>";
// loop through results of database query, displaying them in the table
for($i = $start; $i < $end; $i++ && $row = mysql_fetch_array($result) )
{
// make sure that PHP doesn't try to show results that don't exist
if ($i == $total_results) { break; }
// echo out the contents of each row into a table
echo "<tr>";
echo "<td><img height='73' width='73' src=" . "http://api.twitter.com/1/users/profile_image?screen_name=" . $row['avatar'] . "&size=bigger></td>";
echo "<td><a href=" . $row['url'] . " target='_blank'>" . $row['uid'] . "</td></a>";
echo "</tr>";
}
// close table>
echo "</table>";
// display pagination
echo "<strong>Page: </strong>";
for ($i = 1; $i <= $total_pages; $i++)
{
echo "<a href='index.php?page=$i'>$i</a> ";
}
?>