2010-11-15 66 views
0

我试图为我的搜索结果做页面,我的搜索功能工作正常。但是,当我点击页码时。出现此错误(下图):分页错误

说明:未定义指数:用C搜索:\瓦帕\ WWW \ I-文献\ new.php第8行 ERROR:从下拉

此消息仅应显示选择当下拉菜单中没有输入并且没有搜索输入时。我不知道如何解决这个问题。请帮忙!感谢ü

<?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>"; 

?> 
+1

'$ record_count = mysql_num_rows(mysql_query(“SELECT * FROM document”));'是获得可以使用的行的最糟糕方式。它要求数据库返回表中的所有行。更好'选择COUNT(*)FROM文档'。然后你得到一行包含行数的一列。 – ThiefMaster 2010-11-15 02:18:22

+0

谢谢你..我改变了它。 – yash 2010-11-15 02:55:16

回答

0

当你点击一个链接时,你不再需要发送POST数据(它变成了一个简单的GET请求)。您需要创建一个表单,然后为每个页面提供一个提交按钮。或者在查询字符串搜索项,如谷歌(google.com/search?q=your+search+term+here)

+0

谢谢你的想法..将尝试这样做。 – yash 2010-11-15 02:56:24

0

这是有问题的行

$search = mysql_escape_string($_POST['search']); 

你的逻辑是

IF $_POST['submit'] IS NOT SET 
THEN 
    $search = mysql_escape_string($_POST['search']); 

这是一个相当安全的赌注,说如果$_POST['submit']没有设置,那么也不是$_POST['search']

另外,当你点击你的“页面”链接之一,th随时会发出GET请求,而$_POST将为空。您可以将POST参数通过GET连同分页数据一起传递给$_GET$_POST(或$_REQUEST,如果您感觉很好玩),或者将您的分页控件创建为“可定位”形式。

0

您已拥有所有代码。你只需要重写你的错误条件。

  1. 获取输入变量
  2. 对其进行编码
  3. 试验都存在或从你的描述死亡()的错误信息

所以:

$search = mysql_escape_string($_POST['search']); 

$dropdown = mysql_escape_string($_POST['dropdown']); 

if (empty($search) && empty($dropdown)) { 
    die("ERROR: whatever"); 
} 

在这你甚至可以在转义之后用empty()来测试,因为在任何情况下它都是空字符串。

+0

谢谢你..我改变了它。 – yash 2010-11-15 02:56:52

0
if (isset($_POST["search"])){ 

$search = mysql_escape_string($_POST['search']); 

}else{ 

$search = mysql_escape_string($_GET['search']); 

} 

为$ _ POST [“下拉”] 但时一样打印出每一页的链接,你应该在页面的href中添加& search =和& dropdown =。

+0

谢谢你..即时通讯工作。 – yash 2010-11-15 10:09:03