2013-02-13 2 views
0

Я работаю над сайтом для управляющей компании. На странице портфолио в настоящее время у меня есть карта Google со всеми известными гостиницами и таблица отелей, все из базы данных. Тем не менее, мне нужна форма с флажками, соответствующими гостиничным брендам. При выборе флажка будут отображаться только те отели, которые относятся к этой торговой марке. Я могу понять, как это сделать, используя только одну марку, но не с несколькими.Фильтрация запросов MySQL с использованием PHP с использованием флажков

Это код формы:

<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 Query для отображения таблицы

<?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

ответ

0

Простейший метод будет использовать запрос WHERE ... IN(), а не LIKE. например

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

Обратите внимание, что это всего лишь пример. Он уязвим для SQL-инъекций и не должен использоваться как есть.

Смежные вопросы