PHPでMySQLを使った検索のプログラム
「たったコレだけでPHPプログラミングが理解できる本」を参考にPHPでプログラムを書いていまして、
ビジネスホテルの検索機能をチェックボックス機能を余分につけて検索できないか試したのですが、
チェックボックスにチェックを入れると全く検索できず他のテキストボックスに入力するだけなら検索できます。
なんとかチェックボックスを有効にできないかいろいろなサイトを調べたり本を読んだりしましたが解決策が見つかりません。
いろいろな機能に対応できるようなプログラムを組みたいと思ったのでかなりの初心者で大変恐縮ですが、どなたかご教授お願いできないかと思っております。
あと参考になるサイトがございましたら、教えていただきたいと思っております。
何卒よろしくお願い致します。
前半省略
<form name="search_form" action="" method="post" >
<input type="hidden" name="cmd" value="search" />
<table>
<tr>
<th>物件種別</th>
<td>
<input type="checkbox" name="kodawari_key[]" value="温泉" <?php if( $_REQUEST["kodawari_key"] == "温泉" ){ print( 'checked' ); } ?>/>
温泉
<input type="checkbox" name="kodawari_key[]" value="ランチ" <?php if( $_REQUEST["kodawari_key"] == "ランチ" ){ print( 'checked' ); } ?>/>
ランチ<br />
<input type="checkbox" name="kodawari_key[]" value="ディナー" <?php if( $_REQUEST["kodawari_key"] == "ディナー" ){ print( 'checked' ); } ?>/>
ディナー</td>
</tr>
<tr>
<th>価格帯</th>
<td>
<input type="text" name="price_min" value="<?php print( htmlspecialchars( $_REQUEST["price_min"] ,ENT_QUOTES ) ) ?>" size="8"> ~
<input type="text" name="price_max" value="<?php print( htmlspecialchars( $_REQUEST["price_max"] ,ENT_QUOTES ) ) ?>" size="8"><br />
</td>
</tr>
<tr>
<th>住所</th>
<td><input type="text" name="address" value="<?php print( htmlspecialchars( $_REQUEST["address"] ,ENT_QUOTES ) ) ?>" size="20"></td>
</tr>
</table>
<input type="submit" value="検索" class="Btn-gray button">
</form>
<p> </p>
<?php
if( $_REQUEST["cmd"] == "search" ){
$pdo = new PDO("mysql:host=localhost; dbname=hotel_reservation; charset=utf8", "koredake", "koredake123", array( PDO::ATTR_EMULATE_PREPARES => false ) );
$sql = "select * from hotels where 1 = 1 ";
$condition = array();
if( !empty( $_POST["kodawari_key"] )){
$sql = $sql . " and kodawari_key = :kodawari_key";
$condition["kodawari_key"] = $_REQUEST["kodawari_key"];
}
if( !empty( $_REQUEST["price_min"] ) ){
$sql = $sql . " and price >= :price_min ";
$condition[":price_min"] = $_REQUEST["price_min"];
}
if( !empty( $_REQUEST["price_max"] ) ){
$sql = $sql . " and price <= :price_max ";
$condition[":price_max"] = $_REQUEST["price_max"];
}
if( !empty( $_REQUEST["address"] ) ){
$sql = $sql . " and ( pref like :pref or city like :city or address like :address ) ";
$condition[":pref"] = "%{$_REQUEST["address"]}%";
$condition[":city"] = "%{$_REQUEST["address"]}%";
$condition[":address"] = "%{$_REQUEST["address"]}%";
}
$statement = $pdo->prepare( $sql );
$statement->execute( $condition );
$results = $statement->fetchAll();
?>
<table border="1">
<caption>検索結果</caption>
<tr>
<th></th>
<th>ホテル名</th>
<th>宿泊料金</th>
<th>住所</th>
</tr>
<?php
foreach( $results as $result ){
?>
<tr>
<td><img src="hotel/<?php print( htmlspecialchars( $result["id"], ENT_QUOTES )); ?>.png" /></td>
<td><?php print( htmlspecialchars( $result["hotel_name"], ENT_QUOTES )); ?></td>
<td>\<?php print( htmlspecialchars( number_format( $result["price"] ),ENT_QUOTES ) ); ?></td>
<td>
<?php print( htmlspecialchars( $result["pref"], ENT_QUOTES ) ); ?>
<?php print( htmlspecialchars( $result["city"], ENT_QUOTES ) ); ?>
<?php print( htmlspecialchars( $result["address"], ENT_QUOTES ) ); ?>
</td>
</tr>
<?php
}
}
?>
</table>
</div>
</body>
</html>
補足
すみません、焦っていたもので。 例えば、 search.php?cate=日本語 みたいな具合に直接的に検索したい単語を入れて検索できるような受け渡しをしたいのですが、どうしたら良いでしょうか?