在我的网站上使用PHP链接到MySQL中的库数据库。我似乎无法做到的一个领域是结果的分页。我已经尝试了大约20种不同的代码片段并且每次都有相同的问题 - 不能超过要显示的第一页结果。尽管在这个上阅读了很多论坛帖子,但是无法通过它。我的选择查询稍微复杂一点,因为可以组合多个关键字并搜索多个字段。显示结果时,它们还会从不同的表中提取数据。我真的希望有人能找到我出错的地方。使用的Switch语句取决于用户请求的搜索类型,因此下面给出了一个案例的代码。
$term = trim($_REQUEST['term']);
$searchterm = mysql_real_escape_string($term, $link);
$index = $_REQUEST['index'];
switch ($index)
{
case "title":
$array = explode(" ", $searchterm);
$sql = "select identifier, title, publication_date from publication where";
foreach ($array as $key => $keyword) {
$sql .= " (title like '%$keyword%' or alternative_title like '%$keyword%')";
if ($key != (sizeof($array) - 1)) $sql .= " and ";
if ($key == (sizeof($array) - 1)) $sql .= " order by title";
}
if(!$result = mysql_query($sql, $link)) {
showerror();
}
else {
$numrows = mysql_num_rows($result);
if ($numrows == 0) {
echo "<h2>No records found</h2>";
}
//start pagination
$perPage = 10;
$page = (isset($_REQUEST['page'])) ? (int)$_REQUEST['page'] : 1;
$startAt = $perPage * ($page - 1);
$totalPages = ceil($numrows / $perPage);
$links = "";
for ($i = 1; $i <= $totalPages; $i++) {
$links .= ($i != $page ) ? " <a href='search.php?page=$i&search=$term'>
Page $i</a> " : "$page ";
}
echo "<h3>Displaying page $page of $totalPages:</h3><br />";
$counter = 1;
$sql = "select identifier, title, publication_date from publication where";
foreach ($array as $key => $keyword) {
$sql .= " (title like '%$keyword%' or alternative_title like '%$keyword%')";
if ($key != (sizeof($array) - 1)) $sql .= " and ";
if ($key == (sizeof($array) - 1)) $sql .= " order by title
LIMIT $startAt, $perPage";
}
$result = mysql_query($sql, $link);
echo "<table class=\"results\">\n";
while($row = mysql_fetch_array($result))
{
//echo data
}
echo "</table><br />\n";
echo $links; // show links to other pages
echo "<p> </p>";
}
break;
答案 0 :(得分:0)
如上所述,-1投票决定放置别人的代码,而不是亲自尝试。对于分页脚本应该执行的操作,此代码非常简单。您可以添加更具体的代码段和更好的问题。不过我会试着看一下。
由于你不能比第1页更进一步,似乎有些事情在$page = (isset($_REQUEST['page'])) ? (int)$_REQUEST['page'] : 1 ;
或稍下面出错了。为每个页面尝试echoëing
您的SQL代码,看看LIMIT是否正确,或者它是否保持不变,可能是最后一个。至少这为您提供了从哪里查看代码的起点。
它能为您提供适量的链接吗?