• 締切済み

データベースでの検索が今ひとつうまくいかない

データベースで簡単な検索窓を作りましたが、検索語に対して思うような結果かが得られません。 ページ分割の方法を学ぶために、実験的に簡単なスクリプトを作成してみました。 ですが、つぎのような問題にぶつかりました。 Mysqlデータベースに下記のデータをデータを格納します。 1 田所 33 2 中田 23 3 田里 23 4 加田藤 23 5 佐藤 23 6 南田 23 7 樋口 23 8 安倍 23 9 智恵 23 10 田仲田 23 11 北田 23 12 口 23 13 田 23 14 似多 23 15 田田 23 16 北田 23 問題: http://www.area7japan.com/mtest/bunkatsu.html にて、 検索窓に 「田」という文字を入れてみる。 そうすると、2の「中田」が出てこないのです。でも、「中田」を入れると、 「中田」は出てきます。「田」という文字では「田所は出てくるのに、なぜ「中田」が出て来ないのか、 これが分からないのです。 使用したスクリプト文→ http://www.area7japan.com/mtest/test.html 解決のためにヒントなりいただけば、ありがたいです。

みんなの回答

  • apple4u
  • ベストアンサー率0% (0/0)
回答No.2

foo LIKE BINARY '%bar%' とかとか?

tonbeisan
質問者

補足

書き込み ありがとうございます。 それにしても、どうもかわらないんですよね。 %$nm%  という match式に 田という文字を入れると、 %田% となりますけど、 その場合 データベースの 「中田」に matchして 当然なのですが、それがそうはならないんですよね。 どうもよくわかない。「田中」には matchするのですけど、 「中田」には matchしない。うーむ、わからないな。どうしてこうなるのか。 

  • celtJapan
  • ベストアンサー率31% (67/211)
回答No.1

先頭一致と完全一致はできるのに部分一致ができないということですよね... 文字コードのセットは確認されましたか? formからはutf-8で渡してますよね。 それとMySQL側が異なっていて照合順序に問題が起きてるのかなと思ったんですが。 思い付きです。 外してたらすいません。

tonbeisan
質問者

補足

ありがとうございます。 思いつきでもかまいません。ありがたいです。どんどんヒントをいただければありがたいです。 考える材料にしますので。  1) 「部分一致」に関しては、より正確に言いますと、 「田」の検索に対して、 1ページ目で、「加田藤」は表示されるのに、「中田」は表示されない。 ということは、最後尾の「田」が検索に引っかからないということになります。 2) ところが、二ページ目以降は、問題なく全て表示される。 3) 1ページ目は、 htmlのform文からの文字列入力ですが、 2ページ以降は、HTTP送信というのかな、 p01.php?nm=$nm&page_num=".($page_num-1)  という形式で 入力を 行っています。 4) ということは、誇示的の通り、form文からの分については、encodeになんらかの問題があるのかもしれません。

関連するQ&A

  • 簡単な検索、データベースについて

    会員情報をデータベース化したいと思っています。 複雑なものではなく、簡単な検索、表示ができるものです。 下記のようなものを考えています。 社内だけでなく、WEB上に公開するものです。 http://www.teachernavi.net/ http://www.best-teacher.net/index1.htm フリーソフトの、 http://www.sugawa.com/takayuki/shop/shop_main.html http://www.yumemaboroshi.net/cgi2287/ で上記のような簡単な検索、データベースの作成はできないでしょうか?(このような事ができるフリーウェア、シェアウェアがあれば教えてください。) データは将来的には、最大1500人位を想定しています。 カスタマイズが難しいようなら、ABI-STATIONのみんなのプロフィールも考慮に入れてます。 http://www.abi-station.com/cgi/profile/ ただ、セキュリティーに問題があるという話も聞きますが実際はどうなんでしょうか?(公開プロフィールには住所詳細、氏名等は公表しない予定です。) また、このようなCGIを業者に外注するといくら位かかるものなのでしょうか?(お勧めの業者などがあれば、教えてもらえるとありがたいです。) 詳しい方、宜しくお願いします。

    • ベストアンサー
    • CGI
  • 巨大なデータに対する検索に適したデータベース

    巨大なデータベースに対する検索をなるべく高速にこなせるフリーのデータベースを探しています(windows)。 これまでmySQL5.5を使って比較的簡単なデータ検索を行ってきました。 データ構造自体は簡単で例えば下記のように name[char] / weight_gram[int] / country [char] 数桁のintと十数文字の文字列情報をもつエントリーで構成されるテーブルとします。 ただ問題がデータの量で、ある事情で10-100億件のエントリー(rows)があり、そのせいで単純なクエリー、例えば select * from my_big_table where weight in (51000,60000,82000) のような簡単な検索にも非常に時間がかかります。 パーティショニング、インデクスを試し、速度は向上しましたがまだ時間がかかりすぎてしまいます(数分)。 最近になってnoSQLのことを知り。その多くは大量のデータ処理に適していると聞き、簡単な比較なども見ましたがどれが最適なのかいまいちよく分かりません。 特に大半がunix/linux環境用でwindowsで利用可能なものは限られているようです。 そこで -Windows 7/vista 64 bitで動く -フリーで利用できる -大量のデータをもつテーブルに対するquery(検索)が高速 -C++ API (mysql connectorのようなもの)がある の条件に合うnoSQLを教えていただけないでしょうか。

  • 検索をする際一文字ずつ入れてデータベースを反映したい

    質問タイトルが分かりにくくてすいません。 現在、データベースに登録しているユーザのデータを 引っ張ってくるアプリを作っています。 普通にテキストエリアにユーザー名を入れて 検索ボタンを押して、 検索結果を出すのは可能なのですが、 最近よく見かける「郵便番号入力による住所検索」のように 郵便番号を入力し終わると勝手に結果が表示される見たいな物を 作りたいと思っております。 データベースはMySQLを使っているので きっとAJAX+PHP+MySQLで実現できると思うのですが具体的に どのようにプログラムを書くのか分かる方 ご教授ください。

  • 画像つきで、商品検索ができるデータベース?!CGI

    こんにちは。 現在、自社運営で、商品を販売しているホームページがありまして、 ここで、商品を写真付きで検索できるようなシステムを入れたいと 考えております。 理想は、Yahoo!のオークションのようなシステムで、 欲を言えば、登録したデータごとにレビューがつけられたら最高です。。 使い勝手が良さそうな、データベースのCGIを探しています。 条件としては、 【登録できるデータ】 ●商品の写真 ●50文字~100文字程度 ●URL ●金額の入力。 【検索】 ●キーワードでの検索 ●商品画像の表示 ●データの並び替え ●登録したURLへのリンク 自分でも、色々探してみているんですが、今一番理想に近いのが、 KENT WEBの NET CRUISER(http://www.kent-web.com/pubc/navi/cruiser.cgi) Data Cabinet(http://www.kent-web.com/pubc/cabinet/cabinet.cgi) というのが、近いかな?というカンジです。 ※NET CRUISERは、画像の登録ができません。 ※Data Cabinetは、画像の登録ができますが、リンクができません。 他に何かよさそうなCGIがあれば、ご紹介下さい。 フリーで探していますが、理想に違い物があれば、 お金が出してでもいいかな?と考えてます。 よろしくお願いします。

    • 締切済み
    • CGI
  • 大量のデータベースから検索結果を表示する方法を教え

    http://note.chiebukuro.yahoo.co.jp/detail/n15842 この方法で、テキストボックスに検索文字を入れて、mydata.txtから該当のデータを表示させてるのですが データ量が10000レコード以上あるためか、ずっと"データを読み込み中...."になってしまいます。 jQueryだと私の環境だと、7000行が限界なのですが ほかの方法で、データベースから検索して結果を表示する方法を教えてくだ差し。 ちなみにOKWAVEはどのような方法で表示させてるのでしょうか? 上記のjQueryの方法だと、1ページ目で検索して、1ページ目に検索結果を表示させていますが OKWAVEは1ページ目で検索して、2ページ目で検索結果を表示させてますね? その方法でよいので、大量のデータベースから検索結果を表示する方法を教えてください。 ちなみに今はHTML、cssの知識しかありません。

  • 検索できる文字とできない文字

    PostgreSQLでデータベースを構築している初心者です. 現在ブラウザから文字を入力し検索をかけることで, 検索結果を表示するプログラムを作っているのですが, その際に検索できる文字とできない文字があり困惑しています. 例えば,「医学」と入力するとデータベースからデータがブラウザに表示 されるのですが,「秋山浩二」と入力するとデータはあるのに 表示されないという状況に陥っています.他にも検索できる文字 とできない文字があり,なぜこうなってしまうのか分かりません. このようなことは何かの設定ミスにより起こりうることなのでしょうか. 何かお気づきの方がいらっしゃいましたら,ご教授をお願いします. 【環境】 Windows XP PostgreSQL8.0.4

  • 簡易データベース

    会員情報をデータベース化したいと思っています。 複雑なものではなく、簡単に検索、表示ができるものです。 イメージとしては、下記のようなものを考えています。 http://www.faj-net.com/cgi-bin/form/search.cgi http://www.best-teacher.net/index1.htm このような事ができるフリーウェア、シェアウェアがあれば教えてください。 データは将来的には、最大2000人位を想定しています。 当方PC初中級レベルです。 また、業者に外注するといくら位かかるものなのでしょうか? 宜しくお願いします。

  • 検索関数を使って検索窓を作成したいんですが・・・

    検索関数を使って検索窓を作成したいんですが・・・ 仕事でExcelを使っていて他の人に聞いても解決できなかったのでこちらでご質問させて頂きます。 質問内容は検索です。 データの範囲内にある数値、文字など、全てが対象になります。 条件は下記の通りです。 1.検索窓のようなセルに毎回関数など入力せず、文字や数字を入力するだけ。googleなどの検索窓と同じです。 2.検索結果は検索窓の右側に自動的に表示。検索内容を変更した時に自動的に反映される。 3.検索例 例1) 岡田 ←名前だけで検索 例2) 2010/01/20 ←日付で検索 例3) 岡田 A-102W ←名前と型番で検索 例4) 岡* ←ワイルドカードも使用可能 4.データ範囲はシートをまたぐこともあり。 上記の条件でやりたいんですが、マクロやVBAなどは全くわかりませんので、 エクセルの関数のみで何とかならないでしょうか。 よろしくお願いします。

  • Access2007 フォームでの検索について

    お世話になります。 accessはあまり使わないので、自己流でどうにか作っている状況で わからなければネットで調べているのですが、 どうしても自力で解決できないので、よろしければ教えて下さい。 テーブル名、T_機器データ一覧 フォーム名、F_機器登録 F_機器登録に入力したものがT_機器データ一覧に保存されます。 すでに登録しているか調べる為に、このフォームのヘッダーに 「検索窓」と「検索」ボタンと「次へ検索」ボタンという名前で設置し、 「検索窓」に入力した文字を、T_機器データ一覧から探して、もしあれば 詳細部分の入力用のボックスに表示されるフォームにしました。 T_機器データ一覧のフィールドは番号や機器名等々で20個ほどあり、 1つの検索窓ですべてのフィールドのデータを検索させたく、 某サイト様に載っていた方法を使わせて頂きました。 (番号や機器名という特定フィールドの情報ではなく、とにかく 「検索窓」に入力した文字がT_機器データ一覧にあるかどうかで調べたいです。) ----------------- ↓「検索」ボタン ----------------- Private Sub 検索_Click() On Error Resume Next Dim v Me.番号.SetFocus v = Me.検索窓 Me.検索窓 = Null DoCmd.FindRecord v, acAnywhere, False, acSearchAll, , acAll, True Me.検索窓 = v End Sub ------------------- ↓「次へ検索」ボタン ------------------- Private Sub 次へ検索_Click() On Error Resume Next Dim v Screen.PreviousControl.SetFocus Screen.ActiveControl.SelStart = 255 v = Me.検索窓 Me.検索窓 = Null DoCmd.FindRecord v, acAnywhere, False, acDown, , acAll, False Me.検索窓 = v End Sub ------------------- これで思った通りに検索してくれるのですが、 検索した文字が無かった場合に、"見つかりません"という様な メッセージBOXを表示させたいのですが、方法を見つけられませんでした・・。 Microsoftのサイトに、 「FindRecordメソッドは、成功または失敗を示す値を返しません。」 とあり、FindRecordを使わずに別の方法がないかと探したのですが、 特定のフィールドのみから「検索窓」に入力した文字を探す方法はあるのですが、 1つの「検索窓」へ入力したものをテーブル上のすべてのデータから 検索させる方法がわかりませんでした。 書き方がおかしな所があるかもしれません。 その場合は大変申し訳ありません・・。 どうかよろしくお願い申し上げます。

  • PHPからデータベースへの登録について

    はじめまして。現在、仕事の関係でPHPのプログラムを勉強している者です。 早速ですが、質問させていただきます。 PHPで作成したフォームメールから別で用意したデータベースに 入力データを登録しようとしているのですが、エラーでうまく動作しません。 PHP側のコードミスもあるかもしれませんが、PHPを動作させているサーバーと データベースサーバーの文字コードが違う点も原因しているのでは?と調べている状況です。 フォームからのデータを送るPHP ⇒ Shift_jis PHPをアップしているWebサーバー ⇒ Shift_jis データベースサーバー ⇒ EUC-JP データベースへの接続は問題なく行えているようですので、 登録処理するコードの部分のみを書きます。(↓) ******************************************************************************** // データベースへの登録 $sql = "INSERT INTO FORM_DATA(DataNumber, Time, Name, Email, Area, Sex, Interest, Commnet, OS, IP) VALUES('$tsvcount', '$ymdhis', '$sender_name', '$mail_address', '$mail_area', '$mail_sex', '$mail_interest', '$mail_body', '$os', '$ip')"; $sql = mb_convert_encoding($sql, 'EUC-JP', 'sjis'); mysql_query("SET NAMES 'EUC-JP'"); $db_result = mysql_query($sql); print $sql; print $db_result; if (!$db_result) { exit('Error! データを登録できませんでした。'); } // データベースとの接続解除 $db = mysql_close($db); if (!$db) { exit('データベースとの接続を閉じれませんでした。'); } **************************************************************************** PHP&Webサーバーとデータベースの文字コードを統一すればいい話かもしれませんが、 事情により異なる文字コードの環境で開発しております。 上記の通り、データベースに送信するSQL文はmb_convert_encoding()で「EUC-JP」に変換し、 mysql_query($sql);でデータベースに送信している形です。 この状態で送信すると、エラーとなり送ったSQL文を処理してくれません。 文字コードの変換処理、コードの記述など何が原因なのか分からず困っています。 考えられる原因と、解決策があればご教授いただきたいです。 ちなみに私はPHPはもちろんプログラム自体もまだ経験が浅く、 基礎的なことも理解していないことがかなりあります。 その上でご説明いただけますと大変有難いです。 ではよろしくお願い致します。

    • 締切済み
    • PHP