2012-07-03 66 views
0

以下是我的search.php代碼:PHP和MySQL的搜索問題

<?php 
if(isset($_POST['action']) && $_POST['action'] == "Search Question") 
{ 
$search = mysql_real_escape_string(trim(htmlspecialchars($_POST['search']))); 
$err = array(); 

if(isset($search)) 
    { 
      if(empty($search)) 
       $err[] = "Please write your question name"; 
      elseif(is_numeric($search)) 
       $err[] = "Wrong values entered"; 
     } 
     if(!empty($err)) 
     { 
      foreach($err as $er) 
      { 
       echo "<font color=red>$er<br/></font>"; 
      } 
     } 
     else 
     { 

      $search_sql = mysql_query("SELECT * FROM questions WHERE q_name LIKE '%$search%'"); 


      //$search_sql = mysql_query("SELECT * FROM questions WHERE MATCH(q_name, answer) AGAINST '$search' ");    
      $numserach = mysql_num_rows($search_sql); 

      if($numserach == 1) 
      { 
       echo "<font color='green'><strong>$numserach Question found</strong></font><br/>"; 
       while($result = mysql_fetch_array($search_sql)) 
       { 
        $subid = $result['sub_id']; 
        $id = $result['id']; 
        $qquestionsname = $result['q_name']; 

        ////////////////////////////////////////////////// SEARCH SHOW START HERE /////////////////////// 
        //include("toppagi.php"); 
        $questions = $result['q_name']; 
        echo "<a href='answerdetails.php?id=$id&subid=$subid&questionname=$qquestionsname'>$questions</a><br/>"; 
        //include("bottompagi.php"); 
        ////////////////////////////////////////////////// SEARCH SHOW END HERE /////////////////////// 
       } 
      } 
      else 
      { 
       echo "<font color=red>No Result Found</font>"; 
      } 

     } 
    } 
    ?> 

在我的數據庫我試圖尋找「q_name」申請在我的所有問題名稱存儲。如..會計,書,O級,測試No水平等

好,但如果我搜索類似的東西交流 OR TE那麼它不會表現出任何結果。我需要在我搜索ACTE或別的東西,那麼它的表現一些結果..

感謝提前:)

回答

1

使用此行

if($numserach > 0) 
    {..... 

代替

if($numserach == 1) 
    {..... 
+0

不錯@Rab Nawaz現在工作!但我有另一個問題...找到我的搜索項目後,我看到每一個細節,但當我回去時,然後Firefox顯示「DOCUMENT過期」。 – Shibbir

+0

@Shibbir,這是'POST'方法的工作原理。您可以在另一個頁面中提供搜索結果,以便用戶返回時不會獲得此文檔已過期。 – Adi

+0

非常感謝。 – Shibbir

0

將以下指令更改爲th e最新:

if($numserach == 1) --> if($numserach >0) 

並重新執行腳本。

1

正如其他人已經提到的,你的問題通過更換

if($numserach == 1) 

if($numserach > 0) 

非常重要:

我這樣做是對每一個問題,其中OP的數據庫處理是作爲倡導更好實踐的一種方式,這是非常糟糕的。

請花些時間閱讀關於如何使用PDO的this fine tutorial。 當你的項目被黑客入侵時(如果這是專業的工作),你將會爲自己節約未來的尷尬,並且你將學習一種新的東西來保護自己,給自己一個提高應用程序性能的更好機會。

+1

本教程的隨機摘錄:* Oracle數據庫被許多'企業'公司使用,但是這些日子裏有更時髦的選擇。 –

+0

@ÁlvaroG.Vicario,:D |這是我見過的最容易理解的PDO教程之一。 – Adi

+0

謝謝@Adnan Shammout – Shibbir

1

更換

if($numserach == 1) 

if($numserach > 0) 

因爲此刻你只顯示如果有發現只有一個學期的結果。如果它找到多個,則不會顯示結果。