我试图为我的搜索结果做页面。我的搜索功能正常。但是,当我点击页码时。出现此错误(如下):
注意:未定义的索引:在第8行的C:\ wamp \ www \ I-Document \ new.php中搜索 错误:从下拉列表中选择
仅当下拉列表中没有输入且没有搜索输入时,才会显示此消息。 我不知道如何纠正这个问题。请帮忙!谢谢你
<?php
//connecting to the database
include 'config.php';
$search = mysql_escape_string($_POST['search']);
$dropdown = mysql_escape_string($_POST['dropdown']);
if (empty($search) && empty($dropdown)) {
die("Please choose your Search Criteria");
}
//max displayed per page
$per_page = 10;
//get start variable
$start = $_GET['start'];
//count records
$record_count = mysql_query("SELECT COUNT(*) FROM document WHERE $dropdown LIKE '%$search%'");
//count max pages
$max_pages = $record_count / $per_page;
if (!$start)
$start = 0;
//display data
$query = mysql_query("SELECT *
FROM document
WHERE $dropdown LIKE '%$search%'
LIMIT $start, $per_page");
echo "<b><center>Search Result</center></b><br>";
$num=mysql_num_rows($query);
if ($num==0)
echo "No results found";
else {
echo "$num results found!<p>";
}
echo "You searched for <b>$search</b><br /><br /><hr size='1'>";
echo "<table border='1' width='600'>
<th>File Reference No.</th>
<th>File Name</th>
<th>Owner</th>
<th>Borrow</th>
</tr>";
while ($rows = mysql_fetch_assoc($query)) {
echo "<tr>";
echo "<td>". $rows['file_ref'] ."</td>";
echo "<td>". $rows['file_name'] ."</td>";
echo "<td>". $rows['owner'] ."</td>";
echo "<td><a href=add_borrower.php?id=" . $rows['id'] . ">Borrow</a></td>";
echo "</tr>";
}
echo "</table>";
//setup prev and next variables
$prev = $start - $per_page;
$next = $start + $per_page;
//show prev button
if (!($start<=0))
echo "<a href='new.php?start=$prev'>Prev</a> ";
//show page numbers
//set variable for first page
$i=1;
for ($x=0;$x<$record_count;$x=$x+$per_page) {
if ($start!=$x)
echo " <a href='new.php?start=$x'>$i</a> ";
else
echo " <a href='new.php?start=$x'><b>$i</b></a> ";
$i++;
}
}
//show next button
if (!($start>=$record_count-$per_page))
echo " <a href='new.php?start=$next'>Next</a>";
?>
答案 0 :(得分:0)
这是违规行
$search = mysql_escape_string($_POST['search']);
你的逻辑
IF $_POST['submit'] IS NOT SET
THEN
$search = mysql_escape_string($_POST['search']);
如果没有设置$_POST['submit']
,那么这是一个非常安全的选择,那么$_POST['search']
此外,请考虑点击其中一个“网页”链接时,会发出GET
个请求,$_POST
将为空。您可以通过POST
通过GET
参数和分页数据传递$_GET
参数,并在$_POST
或$_REQUEST
(或{{1}}中查找感觉很好,或者将你的分页控制创建为“可以放置”的形式。
答案 1 :(得分:0)
您已拥有所有代码。您只需要重写错误条件。
所以从你的描述:
$search = mysql_escape_string($_POST['search']);
$dropdown = mysql_escape_string($_POST['dropdown']);
if (empty($search) && empty($dropdown)) {
die("ERROR: whatever");
}
在这种情况下,即使在转义之后也可以使用empty()进行测试,因为在任何情况下它都是空字符串。
答案 2 :(得分:0)
在我看来,当您点击链接时,您不再有POST数据被发送(它变成一个简单的GET请求)。您需要创建一个表单,然后为每个页面都有一个提交按钮。或者在查询字符串中设置搜索字词,例如Google(google.com/search?q=your+search+term+here)
答案 3 :(得分:0)
if (isset($_POST["search"])){
$search = mysql_escape_string($_POST['search']);
}else{
$search = mysql_escape_string($_GET['search']);
}
为$ _POST ['dropdown']做同样的事情 但是当打印出每个页面链接时,你应该在页码的href中添加&amp; search =和&amp; dropdown =。