プロが教えるわが家の防犯対策術!

現在チェックボックスとフリーワード検索をしようしたサイトを作ろうとしているのですが、どうしても仕様通りにいきませんでしたのでここで
質問をさせて頂きました。
検索画面ですが、簡単な2ページ構成になっております。(kensaku.phpとresult.php)

コードのどこが間違っているのかが分かりません。
どなたかお分かりになる方がいましたらお伺い出来ませんでしょうか。
宜しくお願い致します。
1,kensaku.php

<form action="result.php" method="POST" >
<table class="font12" cellpadding="5" cellspacing="10" width="430" align="center">
<tr>
<td>
<span class="checkbox"><input type="checkbox" name="sejyutu[]" value="1" />aaa</span>
<span class="checkbox"><input type="checkbox" name="sejyutu[]" value="2" />bbb</span>
<span class="checkbox"><input type="checkbox" name="sejyutu[]" value="3" />ccc</span><br />
</td>
</tr>
<tr>
<td><input type="text" name="sejyutu_else" value="フリーワード検索" size="30" /></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="検索する" /></td>

<?php

//DB接続・選択
if (!$int_connect = @mysql_connect('localhost','bbb','aaa')) {
die("can't connect mysql server.");
}
//データベースに接続
if (!@mysql_select_db("database", $int_connect)) {
die("can't use selected database.");
}

// SQLクエリ
$sql = "select * from table";
$where = array();

// sejyutuカラムの条件を調べる
if (isset($_POST['sejyutu']) && is_array($_POST['sejyutu'])) {
foreach ($_POST['sejyutu'] as $sejyutu) {
$where[] = "sejyutu like '%" . mysql_real_escape_string($sejyutu) . "%'";
}
}

// sejyutu_elseカラムの条件を調べる
if (isset($_POST['sejyutu_else']) && strlen($_POST['sejyutu_else'])) {
$where[] = "sejyutu_else like '%" . mysql_real_escape_string($_POST['sejyutu_else']) . "%'";
}

// 検索キーワードの有無により処理分岐
if (!$where) {
echo "検索キーワードを入力して下さい";
} else {
// SQL文を生成する
$sql .= " where " . implode(' OR ', $where);
$res = mysql_query($sql,$int_connect);

if (!mysql_num_rows($res)) {
echo "<p>該当データがありません</p>";
} else {

// TABLEタグを書く
while ($row = mysql_fetch_array($res)) {
// 各結果をTR,TDタグで整形して表示する
?>

<table width="430" cellpadding="5" cellspacing="0" class="font12">

<tr>
<td colspan="2"><p class="salon_name"><?php echo mb_convert_encoding(trim($row["salon_name"]),"sjis","euc-jp") ?></p></td>
<td><a href="salon_page.php?code=<?php echo $row['id'];?>">詳しくはこちら</a></td>
</tr>
<tr>
<td valign="top"><p class="salon_item">最寄り駅:</p></td>
<td class="salon_detail"><?php echo mb_convert_encoding(trim($row["station"]),"sjis","euc-jp") ?></td>
</tr>
<tr>
<td valign="top"><p class="salon_item">住所:</p></td>
<td class="salon_detail"><?php echo mb_convert_encoding(trim($row["address"]),"sjis","euc-jp") ?></td>
</tr>
<tr>
<td valign="top"><p class="salon_item">施術名</p></td>
<td class="salon_detail"><?php echo mb_convert_encoding(trim($row["sejyutu"]),"sjis","euc-jp") ?></td>
</tr>
<?php
}
}
}
?>

A 回答 (1件)

><input type="checkbox" name="sejyutu[]" value="1" />aaa


送信されるデータは「1」なのだけど、データベース内では、「aaa」で検索したいのじゃなかろうか?
通常、value="aaa" にした方が楽ですけど、文字コード問題などがあるなら、受信してから変換が必要ですね。
    • good
    • 0
この回答へのお礼

さっそくのご返答ありがとうございます
hrm_mmm様が申しておりました通り変更してみましたら
無事にうまくいきました。
プログラムの方ばかりに目がいっており、肝心な所がおろそかになっておりました。
ご指摘どうもありがとうございました。

お礼日時:2007/06/30 18:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!