ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:Hwakami 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>
質問投稿日時:09/11/06 23:46
質問番号:5427599
最新から表示回答順に表示

回答

 

回答者:maenet1972 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>
が正しいソースです。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:09/11/08 00:19
回答番号:No.3
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼とても丁寧なご回答ありがとうございました!!
テキストリンクだと難しそうですね…!!これの応用で固定キーワードの検索も作ってみたいと思っていたのですが…!
ひとまずラジオボタンで試してみます。
本当にありがとうございました!

回答

 

回答者:maenet1972 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']に変わります。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:09/11/08 00:14
回答番号:No.2
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:maenet1972 五十音の検索元の変数がはっきりわかりませんが、$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 = "データがありません。";
}
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:09/11/07 02:32
回答番号:No.1
この回答への補足ご回答ありがとうございます!

えっと、HTMLで

あ い う え お

と表記し、「あ」にリンク指定をして「あ」の文字を押すとが$row[kana]のデータの頭文字「あ」の一覧が出るようにしたいのですが、「あ」をリンクしたときに検索キーワードが「あ」であるとsearch.phpに認識させる方法がわかりません。

初心者のため、質問内容からわかりづらくて大変申し訳ございません。
もし解決方法がわかるようでしたら教えて頂けるととても助かります…!
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示