- 締切済み
MySQL+PHPでキーワード検索をもとに五十音検索を作りたいです
キーワード検索のソースを元に五十音検索を作りたいです。 キーワード検索のソースを元に五十音検索を作りたいのですが、”あ”という文字を押したら”あ”の頭文字の一覧が出るようにするにはどうしたらいいでしょうか。 キーワード検索ではすでにキーワードを入れたら検索結果の一覧が出るようになっています。 以下が必要そうなコードの抜粋です。 <?php //抽出条件を組み立てる $array = explode(" ", $keyword); $cnt = count($array); $where = "WHERE "; for($i=0; $i < $cnt; $i++){ $where.= "koji OR kana LIKE '%".$array[$i]."%'"; if($i < $cnt-1){ $where .=" ".$searchSelect." "; } } // クエリを送信する $sql = "SELECT * FROM sampletable ".$where; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //表示するデータを作成 if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "<tr>"; $tempHtml .= "<td>".$row[no]."</td><td><A href='result2.php?koji=$row[koji]' target='_blank'>".$row[koji]."</A></td><td>".$row[kana]."</td>"; $tempHtml .= "</tr>\n"; } $msg = $rows."件のデータがあります。"; }else{ $msg = "データがありません。"; } ?> <h3>キーワード検索</h3> 故事成語用検索フォーム(複合語検索ができます) <form name="form2" action="search2.php" method="post"> <input type="text" name="keyword" size="25"> <input type="submit" name="search2" value="検索"><br /> </form>
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- maenet1972
- ベストアンサー率68% (26/38)
No1です。 ラジオボタンのNAME属性を間違えました。 <form name="kana_search" method="post" action="search.php"> <input type="radio" name="s_kana" value="あ"> あ<br> <input type="radio" name="s_kana" value="い"> い<br> <input type="radio" name="s_kana" value="う"> う <br> <input type="submit" name="Submit" value="ひらがな検索"> </form> が正しいソースです。
- maenet1972
- ベストアンサー率68% (26/38)
No1です。 テキストリンクでやりたいという事ですね。 通常、日本語文字をテキストリンクにする場合だと、URLエンコードが必要になってくるので、手間を省きたいなら、ラジオボタンなどを使ってPOST送信した方が楽だと思います。 ///ひらがな検索用のFORMを用意 <form name="kana_search" method="post" action="search.php"> <input type="radio" name="s_form" value="あ"> あ<br> <input type="radio" name="s_form" value="い"> い<br> <input type="radio" name="s_form" value="う"> う <br> <input type="submit" name="Submit" value="ひらがな検索"> </form> 選択されたひらがなと$row[kana]の頭文字とを比較して、一致しないものはスルーする形で、前の回答でソースを提供させていただきました。 if( (isset($_POST['s_kana']) && !empty($_POST['s_kana']) ) && mb_substr($row[kana],0) != $_POST['s_kana'] ){ continue; } ちなみにテキストリンクの場合だと、 <a href="search.php?s_kana=%82%A0">あ</a> <a href="search.php?s_kana=%82%A2">い</a> <a href="search.php?s_kana=%82%A4">う</a> のようになり、変数も$_POST['s_kana']ではなく、$_GET['s_kana']に変わります。
- maenet1972
- ベストアンサー率68% (26/38)
五十音の検索元の変数がはっきりわかりませんが、$row[kana]の頭文字の事ですかね? それなら単純にmb_substr($row[kana],0)で頭文字を取得することでは駄目ですか?それともmb系は利用できないとか、、、。 //表示するデータを作成 if(mysql_num_rows($result) > 0){ //カウント開始 $rows=0; while($row = mysql_fetch_array($result)) { //ここで頭文字を取得 //検索対象の頭文字を仮に$_POST['s_kana']とする if( (isset($_POST['s_kana']) && !empty($_POST['s_kana']) ) && mb_substr($row[kana],0) != $_POST['s_kana'] ){ continue; } $tempHtml .= "<tr>"; $tempHtml .= "<td>".$row[no]."</td><td><A href='result2.php?koji=$row[koji]' target='_blank'>".$row[koji]."</A></td><td>".$row[kana]."</td>"; $tempHtml .= "</tr>\n"; $rows++; } if($rows > 0){ $msg = $rows."件のデータがあります。"; }else{ $msg = "データがありません。"; }
補足
ご回答ありがとうございます! えっと、HTMLで あ い う え お と表記し、「あ」にリンク指定をして「あ」の文字を押すとが$row[kana]のデータの頭文字「あ」の一覧が出るようにしたいのですが、「あ」をリンクしたときに検索キーワードが「あ」であるとsearch.phpに認識させる方法がわかりません。 初心者のため、質問内容からわかりづらくて大変申し訳ございません。 もし解決方法がわかるようでしたら教えて頂けるととても助かります…!
お礼
とても丁寧なご回答ありがとうございました!! テキストリンクだと難しそうですね…!!これの応用で固定キーワードの検索も作ってみたいと思っていたのですが…! ひとまずラジオボタンで試してみます。 本当にありがとうございました!