2010-11-15 128 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