• ベストアンサー

textボックスに"手入力"して検索。

URL(1) http://riss.narc.affrc.go.jp/kssys/test/query.asp 今、↑このURL(1)のサンプルを参考にしながら 検索できるスクリプトを作っています。 このサンプルに 下記のURLの↓ "出版年"のところの、 ←1990年から1995年に出版された資料に限定する。という方法 をつけるにはどうしたらいいのでしょうか? URL(2) http://kototoi.dl.itc.u-tokyo.ac.jp/opac/help/expart-help.html よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.2

そのまま書いたら当然エラーになりますって(;´Д`) 実際にはこのSQL文をデータベース(mdb)へ投げてあげる必要があります。 http://riss.narc.affrc.go.jp/kssys/test/encode.asp?file=query を例に挙げれば、65~70行目でSQL文を作って、72行目でデータベースへSQLを投げて結果をレコードセット変数「rs」で受け取っています。 これと同じことを行えば良いのです。 yearがデータベース内の出版年のフィールド名nen1とnen2が検索条件となるASPでの変数名なら、上記サンプルを参考に SQL = "SELECT * FROM example WHERE year BETWEEN " & nen1 " AND " & nen2 Set rs = db.Execute(SQL) で結果がrsに入ります。 他の検索条件も組み合わせるなら、それらの条件もSQL文に追加してあげる必要 があります。 なお、nen1とnen2は「ただの変数」なのでフォームから値を受け取るには事前にRequest.QueryStringまたはRequest.Formで値を受け取っておく必要があります。 あと、上記の例もSQL文のサニタイジングを行っていませんのであくまで例としてご利用下さい。

その他の回答 (1)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

SQL文のヒントのみ書いておきます。 SELECT * FROM example WHERE 出版年 BETWEEN 1990 AND 1995 SELECT * FROM example WHERE 出版年 >= 1990 AND 出版年 <= 1995 あと少し気になったのはURL(1)に限らず、該当サイト内のASPサンプル全般にSQL InjectionやXSS(クロスサイトスクリプティング)脆弱性を始め、セキュリティ的に問題となるコードが多く含まれています。 最低でもSQL文で使用する入力データとHTMLへ出力する文字は無害化(サニタイジング)を行う必要があります。 これらはReplace関数とServer.HTMLEncodeで簡単に解決出来る問題なので 参考URLを熟読の上、安全なコードを書けるよう頑張って下さい。

参考URL:
http://www.atmarkit.co.jp/fsecurity/special/30xss/xss01.html
tanaba
質問者

補足

SELECT * FROM example WHERE 出版年 BETWEEN 1990 AND 1995 SELECT * FROM example WHERE 出版年 >= 1990 AND 出版年 <= 1995 のところ、有り難うございます。 私もBetweenまではたどりつきましたが、そこからがわからず 悩んでいました。本当に有り難うこざいます。 しかしながら、変数?がきちんと入り込めていないためか、 うまく検索にかかってくれません。 テーブル名 ・・example 出版年 ・・・mdbに登録されている名前year 上記サンプルとしてあがっている1990・・・テキストの名前 "nen1" 上記サンプルとしてあがっている1995・・・テキストの名前 "nen2" でSQLを作成した場合、 SELECT * FROM example WHERE year BETWEEN nen1 AND nen2 SELECT * FROM example WHERE year >= nen1 AND year <= nen2 で、よろしいのですよね? これでやると、 Microsoft VBScript コンパイル エラー (0x800A03FD) 'Case' がありません。 /db/nen.asp, line 252, column 7 SELECT * FROM example WHERE year BETWEEN nen1 AND nen2 となってしまいます。 これがずっと続いてるのですが、どこがおかしいのかおわかりになりますでしょうか・・・。 脆弱性があるんですね(^^;) 教えていただいたURLを読んで勉強します。

関連するQ&A

  • 質問:textボックスに"手入力"して検索【(2)】

    こんにちは。お世話になりまくっていますtanabaです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1089885 で、良回答をいただいたのですが、その後確認したところ…動きませんでした。 これで、できる!と思い込み、良回答のボタンを押してしまいはやまってしまいました。反省しています。 現在、[Microsoft][ODBC Microsoft Access Driver] クエリ式 'id AND shuppan1 between and' の 構文エラー : 演算子がありません。 というエラーが出ており、どこを修正したらいいのかわからない現状です・・・。 【(1)】 http://riss.narc.affrc.go.jp/kssys/test/encode.asp?file=query URL(1)を参考に(ほぼ同じですが…)、検索スクリプトを作っています。 当方、個人ホームページで"書籍を検索"できるようなものを作成したいと思っています。そして、この検索に追加したい機能というのが 【(2)】 http://kototoi.dl.itc.u-tokyo.ac.jp/opac/help/expart-help.html (2)のURLの"1990年から1995年に出版された資料に限定する。"という 検索方法です。 <input type="text" name="syuppan1">年~<input type="text" name="syuppan2">年 という感じです。 それで、【(1)】のURLと同様の方法で、【(2)】の検索方法をくっつけたい(追加したい)のですが 追加するのに必要な部分をどうしたらよいのかおしえていただけないでしょうか? ※データの保存はmdbで、syuppan1とsyuppan2の下限と上限のデータはmdbの「year」に格納されています。 当方初心者なものでじゅうぶんに理解できておらず申し訳ない気持ちでいっぱいです。 データベースをいじるので自分で作成してみよう!と思い、手を出したのですが、全然理解できず・・。 外注に出しておけばよかったかもしれません・・・。 お時間のある方、おわかりになる方よろしくお願い申し上げます。

  • 【断層の長さ1,300km】超巨大地震?

    http://repository.dl.itc.u-tokyo.ac.jp/dspace/bitstream/2261/26513/1/rgn39_1_3.pdf 2004年末、クリスマスの日にあったスマトラ沖地震で 動いた断層の長さって1,300kmもあったのですか? 当初、長さ850km程度の報道発表でしたが こんなに計算で変わることはあるのでしょうか??

  • リファラーのデータ送信について

    こちらの質問(http://okwave.jp/qa3205563.html)で一定の解決を見たのですが、新たな問題が発生してしまったので教えてください。 sample.htmlへの記述 <script type="text/javascript"> var ref = document.referrer ; document.write("<script type=\"text/javascript\" src=\"​http://hoge.com.info.php?ref="+ref+"​\"></script>"); </script> で、refを送信したのですが、 受け取ったrefが、googleだと、 「http://www.google.co.jp/search?hl=ja」になってしまい、&で区切られている以降のデータ(つまり「q」)が取得できません。 別質問(http://okwave.jp/qa3200959.html)で、 hrm_mmmさんの回答======================================= $_SERVER['HTTP_REFERER']が対象ならば、以下で、$query_hashに、$_GETと同様のurldecode済みデータがハッシュ配列として得られます。 $url_hash = parse_url( $_SERVER['HTTP_REFERER'] ); if( array_key_exists( 'query', $url_hash ) and strlen($url_hash['query'])>0 ){ parse_str( $url_hash['query'], $query_hash); } // あとは、$url_hash['host'] によって切り分けて検索キー取り出しをすればよいと思います。 $word = ''; if( preg_match ("/\.google\./", $url_hash['host']) ) { $word = $query_hash['q']; } elseif( preg_match ("/\.yahoo\./", $url_hash['host']) ) { $word = $query_hash['p']; } elseif( preg_match ("/\.goo\.ne\.jp/", $url_hash['host']) ) { $word = $query_hash['MT']; } ====================ここまで============================ こんなんでやればいいよ。と教えていただいたのですが、グーグルから送られたref自体にqが入っていません。 というか、?以降の1番目のクエリーしか入ってきません。 ヤフーなら ?p=~でOK gooなら ?MT=~でOK google は hl=jaが一番最初にくるので、qがとれません。 なぜ、送信されてくるreferrerに2番目以降のパラメータがついてこないのでしょうか。。。 ちなみにsample.htmlで document.write(document.referrer)をやるとちゃんと全て表示されます。

  • 社内独自用語の表記ゆれ抽出方法について

    業務で、マニュアル中にある表記ゆれを統一するという取り組みを行っています。表記ゆれとは、”同じこと、同じものを違った言葉で書くこと”であり、例としては以下のようなものがあげられます。 (1)漢字、かな書きによるもの(すべて、全て) (2)送り仮名によるもの(組み立て、組立て、組立) (3)カタカナ語によるもの(インターフェイス、インタフェース) (4)社内独自の用語によるもの(フラッシュROM、Flash ROM) 用語統一に取り組まれた方ならおわかりになるとは思いますが、(1)(2)(3)はJust Rightの表記ゆれチェックにより、チェックすることができます。 しかし、(4)については、機械的に見つけることはできませんが、専門用語抽出ツールによる抽出後、EXCELでソート後、比較的似たものを見つけるという方法を考えました。http://gensen.dl.itc.u-tokyo.ac.jp/gensenweb.html 他にあれば教えていただきたく思います。 よろしくお願いいたします。

  • MSオフィスのヘルプのポップアップが利用できない。

    こんにちは、以前に質問させていただきましたが 解決に至らなかったので再質問します。  ヘルプの「ここをクリック」などのスクリプトを 使用してるリンクをクリックしてもなにも反応ありません。 通常のリンクは表示されます。  解決方法をご存知の方どうか教えてください。 また、解決へのヒントになりそうなサイト、記事が ありましたら併せてお願いします。  OS Me IE 5.5sp2 office2000 sr1 ブラウザのスクリプトはONにしてます。 http://www.microsoft.com/japan/terminology/kbterm.asp?URL=/japan/support/kb/articles/j052/9/88.asp 拝見しましたが、問題は解消されませんでした。

  • C#にてDirectShowを使用するには?

    いつも参考にさせていただいております。 C#にてDirectXのDirectShowを使用する予定になっています。 参考になる資料がDirect3D等は、サイトに載っているのですが、 なぜか、DirectShowになるとDLLで取り込むことばかりが載っていて、 直接DirectShowをマネージドで制御するサンプルなどを見かけません。 どこかにないでしょうか。 出来れば、URLやオンラインヘルプでお願いします。 (本を買う余裕がないので・・・) 以上。よろしくお願いします。

  • 源三は、生後何日目に夭逝してしまった事になるのか?

    徳川吉宗の第三子の “源三” は、生後何日目に夭逝してしまった事になるのでしょうか? (⇩)下記の URL のページによれば、徳川吉宗の第三子の “源三” は、享保四年三月十四日に生まれた事になっています。 https://clioimg.hi.u-tokyo.ac.jp/viewer/view/idata/T38/1719/25-2-1/4/0026?m=all&s=0026 https://clioimg.hi.u-tokyo.ac.jp/viewer/view/idata/T38/1719/25-2-1/4/0030?m=all&s=0026&n=20 そして、(⇩)下記の URL のページによれば、徳川吉宗の第三子の “源三” は、享保四年五月六日に夭折してしまった事になっています。 https://clioimg.hi.u-tokyo.ac.jp/viewer/view/idata/T38/1719/25-2-1/5/0068?m=all&s=0068 (⇩)下記の URL のページによれば、徳川吉宗の第三子の “源三” は、享保四年三月十四日に生まれて、享保四年五月六日に夭折してしまった事になっています。 https://clioimg.hi.u-tokyo.ac.jp/viewer/view/idata/T38/1719/25-2-1/5/0071?m=all&s=0068&n=20 徳川吉宗の第三子の “源三” は、生後何日目に夭折してしまった事になるのでしょうか? 徳川吉宗の第三子の “源三” は、生後何日目に夭折してしまった事になるのかを、教えてください。

  • 検索のテキストボックス

    検索をかけるときにテキストボックスにキーワードを 入力しますが、クリックすると以前そこに入力したものがずらーっとでてきてしまいます。 便利といっては便利ですが、何を検索かけたのかバレてしまうのがいやです。 これをなくすにはどうしたらよいでしょうか。

  • テキストボックスの入力で困っています

    アクセス2010で請求書を作成しています 請求データベースの入力フォーム上の(商品コード)テキストボックス(非連結)に入力して、その値を使い、Dlookupで商品コードデータベースから商品名を入力フォーム上の(商品名)テキストボックスに表示させています 商品コードデータベース上で商品コードを長整数型で設定してあります 商品コードには、40011などの整数型の範囲を超えたデータがあります いろいろな理由から、商品コードは主キーに設定せず、インクリメント型でもありません 入力フォーム上の(商品コード)テキストボックスに整数型の範囲(-32768から32767)なら正常に動作します しかし整数型の範囲を超えて入力すると、「このフィールドに入力した値が正しくありません」が表示され、先に進めません 申し訳ありませんが、何か打開策をお知らせいただけると幸いです

  • テキストボックスへの入力

    アクセス97にてソフト開発をしております フォームAの「合計」テキストボックスに表示されている数字を、フォームAを閉じたときにフォームBの「金額」テキストボックスに入力できるようにしたいのですが、 どの様にすればいいのでしょうか この二つのテキストボックスはODBCリンクテーブルと連結しています

専門家に質問してみよう