簡體   English   中英

兩個搜索字段(一個下拉列表)- PHP & MYSQL 代碼

[英]Two Search Fields (One a drop down list) - PHP & MYSQL Code

我真的很想得到一些幫助,因為我正在拔頭發,,。 我有兩個領域。 一個是輸入框,另一個是搜索數據庫並顯示結果的下拉列表。 但是我似乎無法弄清楚......這是我到目前為止所擁有的......

這是實際的搜索表單:

<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/>';

}

}

?>

該數據庫有一個名為 Restaurant 的表,它有兩個列,一個名為“Extra”,其中包含郵政編碼,另一個名為“Cuisine”,其中包含美食。 我希望它返回與“額外”和“美食”相匹配的餐廳列表。任何幫助將不勝感激。

  • 在腳本中的任何位置(甚至在表單操作中)回顯 $_SERVER['PHP_SELF'] 或 $_GET['searched'] 都會使您的站點受到 XSS 攻擊。 除非您先對其進行消毒,否則不要這樣做。

  • 對於所有新項目,建議對 mysql 查詢使用准備好的語句。 您可以使用 mysqli 或 PDO 來執行此操作。 您的代碼只是要求 SQL 注入您正在嘗試做的事情。

  • 您的代碼中缺少一個括號,最后還有一些額外的括號。 在 echo 之后,您還缺少引號。 我不確定那里發生了什么。 試着把那些修好。

  • mysql_fetch_array() 之前的@ 是什么? 在 PHP 中使用 @ 的情況確實很少。 這通常表明您的代碼中某處存在某種錯誤,應該修復而不是抑制。

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

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

  • 為什么要回顯一個空字符串,例如echo ''.$somevar; ? 只需回顯變量。

我不確定“顯示”是什么意思,但我認為是可以顯示的記錄。 首先要做的是更新您的查詢:

$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' = '')"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM