[英]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> <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.