2011-07-22 63 views
0

我真的很想在這個幫助,因爲我拉頭髮! 我有兩個字段,一個是輸入框&另一個是下拉列表,它搜索數據庫並顯示結果,但我似乎無法弄清楚...這是我迄今爲止...兩個搜索字段(一個下拉列表) - PHP和MYSQL代碼

這是實際的搜索表單:

<form id="myform" name="myform" action="<?php echo $_SERVER['PHP_SELF']?>"    method="get"><br /> 
<div class="T1"><br /><p></div> &nbsp;&nbsp;<input name="term" type="text" value="<? php echo $_GET['searched']; ?>" size="10" maxlength="4" placeholder="e.g.  BS1"/> 
<select> 
    <option value="">I feel like...</option> 
    <option value="">Anything</option> 
    <option value="Indian">Indian</option> 
    <option value="Chinese">Chinese</option> 
    <option value="Thai">Thai</option> 
</select> 
<input type="submit" name="submit" value="Go"/> 
</form> 

這是PHP代碼:

<?php 

if (isset($_GET['submit'])){ 
mysql_connect ("host", "user","password") or die (mysql_error()); 
mysql_select_db ("database"); 
$term = $_GET['term']; 
$term = $_GET['option value']; 

} 

else 

$sql = mysql_query("select pagetitle from Restaurant where extra like '%$term%' and  showing like '1'"); 
$sql = mysql_query("select cuisine from Restaurant where cuisine like 'option value'  and showing like '1'"); 

echo Restaurants in $term and Cuisine $option value:"; 


} 

while ($row = @mysql_fetch_array($sql)){ 
    echo ''.$row['pagetitle']; 
    echo '<br/>'; 

} 

} 

?> 

該數據庫有一個名爲餐廳的桌子兩把coloumns,一個叫「額外」其中包含了郵編&另一種叫做「美食」的美食。 我希望它返回一個匹配'Extra'和'Cuisine'的餐廳列表。 任何幫助都會大大提高。

回答

0
  • 呼應$ _ SERVER [「PHP_SELF」]或[「搜索」]在您的腳本(即使在表單的動作)的任何地方打開你的網站允許XSS攻擊$ _GET。除非你先給他們消毒,否則不要這樣做。

  • 對於所有新建項目,建議使用mysql語句的準備語句。你可以用mysqli或PDO來做到這一點。你的代碼只是通過你想要做的事情來尋求SQL注入。

  • 您在代碼中缺少括號,並且在結尾處還有一些額外的元素。同樣在回聲後,你錯過了一個引號。我不確定那裏發生了什麼。試着讓這些修復。

  • mysql_fetch_array()之前的@是什麼?實際上,在PHP中使用@的情況確實很少。它通常是一個指示器,代碼中的某處出現某種錯誤,應該修正而不是抑制。

  • 如果您希望能夠在PHP中使用它,您需要一個名稱屬性。

  • 在你的SQL查詢中,當你應該使用equals時,你不應該使用LIKE。另外,你不應該引用整數。

  • 你爲什麼迴響一個像echo ''.$somevar;這樣的空字符串?只是迴應變量。

0

我不確定「顯示」是什麼,但我認爲是可以顯示的記錄。要做的第一件事是更新查詢:

$sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and  (showing like '1') and (cuisine like 'option value')"); 

您還需要檢查,如果用戶沒有輸入選項或選擇了「什麼」在這種情況下,查詢需要改變一點:

$sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and  (showing like '1') and (cuisine like 'option value' or 'option value' = '')");