[PHP-users 19123]PHP+MySQLでの検索システムについて

聖 悠香 youka_hijiri @ hotmail.com
2003年 11月 26日 (水) 11:52:57 JST


お世話になっております。1週間ほど前に検索システムについてのメーリングを投稿
させていただきました悠香です。
あれから、みなさんのメールと様々なサイトなどを照らし合わせていろいろやってみ
ましたがなかなかうまく行きません^^;

イメージとしてはアスキーデジタル用語辞典(http://yougo.ascii24.com/)と同じ
ような検索システムで50音順の索引検索と文字入力によるフォームでの検索を考えて
います。
50音順の検索はできたもののフォームを使った検索がうまく動いてくれません。

構造的には、index.htmlに検索フォーム用の1行テキストボックスがありメソッドを
POSTでsearch.phpにデータを受け渡します。
search.phpでは、MySQL接続を行い受け取ったデータを出力させています。
search.phpのソースは以下の通りです。

<?php
function secho ($str) {
	echo htmlspecialchars($str);
}

$con = mysql_connect("サーバー名", "アカウント", "パスワード");
mysql_select_db("DB名"); //MySQLへの接続

$sql = 'select * from テーブル名 where name like "'.$_POST['space'].'%"'; 
//検索フォーム用

$yomi = $_GET['yomi']; //50音順索引検索用
if($yomi=="あ"){
$sql = 'select * from DB名.テーブル名 where yomi between "あ" and "お" 
order by yomi';
}elseif($yomi=="か"){
$sql = 'select * from DB名.テーブル名 where yomi between "か" and "こ" 
order by yomi';
}elseif($yomi=="さ"){
$sql = 'select * from DB名.テーブル名 where yomi between "さ" and "そ" 
order by yomi';
}elseif($yomi=="た"){
$sql = 'select * from DB名.テーブル名 where yomi between "た" and "と" 
order by yomi';
}elseif($yomi=="な"){
$sql = 'select * from DB名.テーブル名 where yomi between "な" and "の" 
order by yomi';
}elseif($yomi=="は"){
$sql = 'select * from DB名.テーブル名 where yomi between "は" and "ほ" 
order by yomi';
}elseif($yomi=="ま"){
$sql = 'select * from DB名.テーブル名 where yomi between "ま" and "も" 
order by yomi';
}elseif($yomi=="や"){
$sql = 'select * from DB名.テーブル名 where yomi between "や" and "よ" 
order by yomi';
}elseif($yomi=="ら"){
$sql = 'select * from DB名.テーブル名 where yomi between "ら" and "ろ" 
order by yomi';
}elseif($yomi=="わ"){
$sql = 'select * from DB名.テーブル名 where yomi between "わ" and "ん" 
order by yomi';
}elseif($yomi=="A"){
$sql = 'select * from DB名.テーブル名 where yomi between "A" and "Z" order 
by yomi';
}elseif($yomi=="num"){
$sql = 'select * from DB名.テーブル名 where yomi between "0" and "9" order 
by yomi';
}

$res = mysql_query($sql);

mysql_close($con); //MySQLへの切断
?>

■search.phpのbody内に

<table width="100%" border="1" cellpadding="5" cellspacing="0" 
bordercolor="#339999">
                        <tr bgcolor="#006666">
                          <td width="25%"><font color="#FFFFFF" 
size="2"><strong>検索文字</strong></font></td>
                          <td width="30%"><font color="#FFFFFF" 
size="2"><strong>読み方</strong></font></td>
                          <td width="45%"><font color="#FFFFFF" 
size="2"><strong>解説</strong></font></td>
                        </tr><?php while ($row=mysql_fetch_array($res)) { 
?>
                        <tr valign="top">
                          <td><font size="2">
                            <?php secho($row['name']); ?>
                          </font></td>
                          <td><font size="2">
                            <?php secho($row['yomi']); ?>
                          </font></td>
                          <td><font size="2">
                            <?php secho($row['imi']); ?>
                          </font></td>
                        </tr><?php } ?>
                      </table>

前回申していました「ANDOR検索」なんですが
AND検索、OR検索のことです。
index.htmlのフォームでテキストボックスの右となりあたりにリストメニューでAND
とORを選択させた方が良いということなのでしょうか?

どこがどうおかしいのかも見当付かず再度送らせていただきました。お気付きの点な
どご指摘いただければと思っています。
また、どこかいい参考サイトなどあるようでしたらぜひ教えてください。
どうぞよろしくお願いします。

P.S
このようなMLにまだ慣れておらず返信の仕方が分かってません^^;
本来ならRE.で返すべきなのでしょうが・・・申し訳ありません。

      ○−−−−−−−−−−−−−−−−−−−−−−−−−○
A___A ♪   youka.hijiri
o・_・o     
(v   v)/    hobby:CGサイト「お子さまランチ」
              http://www.yukiweb.org/~kids-lunch/
      ○−−−−−−−−−−−−−−−−−−−−−−−−−○

_________________________________________________________________
あなたのPCを守るために定期的なセキュリティ対策を。マイクロソフト セキュリ
ティ情報センター http://www.microsoft.com/japan/protect/hm.asp 



PHP-users メーリングリストの案内