我是php的初学者。 我在我的html页面中可视化使用此php代码获得的结果,现在我想对结果进行分页并将搜索限制为每页6项。我怎么能得到这个?我的php代码如下:
<?php
$k = $_GET['k'];
$terms = explode(" ", $k);
$query = "SELECT * FROM table_name WHERE ";
$i = 0;
foreach ($terms as $each){
$i++;
if ($i == 1)
$query .= "keywords LIKE '%$each%' ";
else
$query .= "OR keywords LIKE '%$each%' ";
}
// connect
mysql_connect("hostname","databaseUser","databasePassword");
mysql_select_db("databaseName");
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
echo "<p><strong>Totale: {$numrows} risultati trovati</strong></p></br>";
if ($numrows > 0){
while ($row = mysql_fetch_assoc($query)){
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$keywords = $row['keywords'];
$link = $row['link'];
$date = $row['date'];
$caption = $row['caption'];
echo "<h4><a href='$link'>$title</a></h4>";
echo "<em>$description</em></br></br>";
echo "$caption</br>";
echo "$link</br></br>";
echo "<em>$date</em></br></br>";
}
}
else
echo "NO result found for \"<p><strong>$k</strong></p>\"";
// disconnect
mysql_close();
&GT;
答案 0 :(得分:0)
您需要在代码中添加页面变量。最简单的方法是通过$ _GET,就像你抓住关键字一样,所以你的网址应该是这样的:
foo.php?k=keywords%20here&p=1
其中p是当前页码。
然后你只需要为你的搜索结果添加一个限制,这样你就可以获得6,并且只需要6。像这样:
$query .= ' LIMIT '.(6*($pageNum - 1)).' 6';
此语句告诉SQL从给定页面的第一个条目开始,并获取6个结果。我们从页码中减去1,以便第1页从条目0而不是条目6开始。
此代码的结果:
page | statement | Rows Grabbed
---------------------------------
1 | LIMIT 0 6 | 1-6
2 | LIMIT 6 6 | 7-12
3 | LIMIT 12 6 | 13-18
---------------------------------
and so on...
在将$ _GET ['p']放入$ pageNum之前,您可能需要检查$ _GET ['p']是否为整数,这样您就不会遇到尝试将字符串乘以6的运行时问题。
如果您想要更改每页的结果,只需将该语句中的6更换为每页所需的结果数,例如
$query .= ' LIMIT '.($numResults*($pageNum - 1)).' '.$numResults;
这样你可以用另一个变量设置你想要的结果数,比如$ _GET ['n']或类似的东西,并且可以更好地控制。
编辑:
您应该添加错误检查:
$pageNum = (is_numeric($_GET['p']) ? intval($_GET['p']) : 1);
表示如果GET [p]是数字,则将pageNum设置为GET [p]的整数值。否则,将pageNum设置为1。
此外,您将变量放入字符串的方式有一些错误。有两种方法可以将变量连接到字符串中,您可以使用双引号和花括号,如下所示:
$string = "this string has {$variable} in it";
或者您可以使用单引号或双引号连接句点,如下所示:
$string = 'this string has ' . $variable . " in it";
在附加查询时,foreach循环中存在此问题,并且在输出结果的位置也会出现此问题。
答案 1 :(得分:0)
分页是我们大多数人多年来试图解决的问题。
你可以建立自己的库来做这件事,但你几乎肯定会重新发明轮子,可能不会发现/处理一些特殊情况。
如果您正在使用框架我建议使用内置的分页器,如果没有,您可以使用http://pear.php.net/package/Pager这样的PEAR包。