2013-02-13 102 views
0

我正在爲酒店管理公司的網站工作。在投資組合頁面上,我目前有一張谷歌地圖,其中精確定位了所有酒店,並且酒店的一張桌子都來自數據庫。不過,我想要一個帶有與酒店品牌相對應的複選框的表單。選擇一個複選框將只顯示那個品牌名稱的酒店。我可以弄清楚如何只選擇一個品牌來做到這一點,但不能用多個品牌來做。使用複選框使用PHP過濾MySQL查詢

這是形式的代碼:

<form> 
<div class="form-block"> 
<input type="checkbox" name="Courtyard" value="true" <?php if (isset($_GET["Courtyard"])) { echo "checked"; } ?> /> Courtyard<br /> 
<input type="checkbox" name="HolidayInnExpress" value="true" <?php if (isset($_GET["HolidayInnExpress"])) { echo "checked"; } ?> /> Holiday Inn Express<br /> 
<input type="checkbox" name="BestWestern" value="true" <?php if (isset($_GET["BestWestern"])) { echo "checked"; } ?> /> Best Western<br /> 
</div> 
<div class="form-block"> 
<input type="checkbox" name="CrownePlaza" value="true" <?php if (isset($_GET["CrownePlaza"])) { echo "checked"; } ?> /> Crowne Plaza<br /> 
<input type="checkbox" name="HolidayInn" value="true" <?php if (isset($_GET["HolidayInn"])) { echo "checked"; } ?> /> Holiday Inn<br /> 
<input type="checkbox" name="SpringhillSuites" value="true" <?php if (isset($_GET["SpringhillSuites"])) { echo "checked"; } ?> /> Springhill Suites<br /> 
</div> 
<div class="form-block"> 
<input type="checkbox" name="HamptonInn" value="true" <?php if (isset($_GET["HamptonInn"])) { echo "checked"; } ?> /> Hampton Inn<br /> 
<input type="checkbox" name="HomewoodSuites" value="true" <?php if (isset($_GET["HomewoodSuites"])) { echo "checked"; } ?> /> Homewood Suites<br /> 
<input type="checkbox" name="Independent" value="true" <?php if (isset($_GET["Independent"])) { echo "checked"; } ?> /> Independent Properties<br /> 
</div> 
<button type="submit">Filter</button> 

和MySQL查詢顯示錶

<?php 
if (isset($_GET["BestWestern"])) { 
    echo "Brand=\"Best Western\""; 
} 
$result = mysql_query("SELECT Name, City, State, Website FROM markers WHERE Brand LIKE '%' ORDER BY City"); 
echo "<table border='1'> 
<tr> 
    <th>Hotel Name</th> 
    <th>City</th> 
    <th>State</th> 
    <th>Website</th> 
</tr>"; 
while($row = mysql_fetch_array($result)) { 
    echo "<tr>"; 
    echo "<td>" . $row['Name'] . "</td>"; 
    echo "<td>" . $row['City'] . "</td>"; 
    echo "<td>" . $row['State'] . "</td>"; 
    echo "<td><a href='" . $row['Website'] . "'>Visit Website</a></td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
?> 

任何幫助,將不勝感激。

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – thaJeztah 2013-02-13 21:11:45

回答

0

最簡單的方法是使用WHERE ... IN()查詢,而不是LIKE。例如

$brands = array('Brand X', 'Brand Y'); 
$sql = "SELECT ... WHERE Brand in ('" . implode("','", $brands) . "');"; 

請注意,這只是一個例子。它容易受到SQL注入攻擊,不應該按原樣使用。