0

私はホテル管理会社のウェブサイトに取り組んでいます。ポートフォリオ ページには現在、すべてのホテルを特定した Google マップと、すべてデータベースから取得したホテルの表があります。ただし、ホテルのブランドに対応するチェックボックスを備えたフォームが必要です。チェックボックスを選択すると、そのブランド名のホテルのみが表示されます。1 つのブランドを選択するだけでそれを行う方法はわかりますが、複数のブランドを選択することはできません。

これはフォームのコードです:

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

どんな助けでも大歓迎です。

4

1 に答える 1

0

最も簡単な方法はWHERE ... IN ()、の代わりにクエリを使用することLIKEです。例えば

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

これは単なる例であることに注意してください。SQL インジェクション攻撃に対して脆弱であり、そのまま使用しないでください。

于 2013-02-13T21:14:33.393 に答える