• ベストアンサー

質問: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」に格納されています。 当方初心者なものでじゅうぶんに理解できておらず申し訳ない気持ちでいっぱいです。 データベースをいじるので自分で作成してみよう!と思い、手を出したのですが、全然理解できず・・。 外注に出しておけばよかったかもしれません・・・。 お時間のある方、おわかりになる方よろしくお願い申し上げます。

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

  • ベストアンサー
回答No.9

こんにちは。 ようやく解決しそうですね・・・多分。 エラーの原因 1.の場合 MDB側のYEARのカラムのデータ型と、条件で入力したデータ型が一致していない。 例えばYEARがDATE型で、条件がNUMBERなど。 この場合、検索条件を型変換する必要がある。 2.の場合 このSQLの場合、何も入れなければこけてしまうのは当然。 入れない可能性があるのなら、SQLの構文を作り変える必要がある。 後は大丈夫ですよね? (^^ゞ

tanaba
質問者

お礼

まさか型変換とは考えもつきませんでした…(汗) mdbを少し変更するだけで完了できました。 こんなに長いレス、お付き合いいただき誠に有り難うございます! 心より感謝いたします。12月にホームページ公開間に合いそうです。 ホッ。

その他の回答 (8)

回答No.8

こんにちは。 BETWEENと"の間にスペース(半角)がないのが原因です。 WHERE句の後は正確に、 WHERE year BETWEEN " & shuppan1 & " AND " & shuppan2 となってますか?(スペースが肝要) (^^ゞ

tanaba
質問者

補足

はい、教えていただいたように半角スペースも入っております。。。悩 SQL = "SELECT * FROM mdbの名前 WHERE year BETWEEN " & shuppan1 & " AND " & shuppan2 すべて上記の記述で検索した場合に発生するエラーを記してみました。 ----------------- 1.【BETWEEN後に半角スペース有りの場合】 [Microsoft][ODBC Microsoft Access Driver] 抽出条件でデータ型が一致しません。 2.【手入力するテキストボックスに何も入れないで検索した場合】 クエリ式 'year BETWEEN AND' の 構文エラー : 演算子がありません。

回答No.7

こんにちは。 syuppan1に値が入っていない(値が取得できてない)のが原因です。 テキストボックス側は「syuppan1」なので、 変数名 = Request.QueryString("syuppan1") でいいはずなんですが・・・。 生成前のSQLには問題がないので、値さえ取れれば動くはずです。 蛇足ですが、&shuppan1 ではなく、& shuppan1 としてますよね? (^^ゞ

tanaba
質問者

お礼

SQL = "SELECT * FROM db5 WHERE year BETWEEN " & shuppan1 & " AND " & shuppan2 でやってみたところ クエリ式 'year BETWEEN123 AND 123' の 構文エラー : 演算子がありません。 と出ました。ちなみに、shuppan1に「123」、shuppan2にも「123」と入れてみました。 BETWEEN123とつながってるここが原因でしょうか・・? すいません、回答してくれていたところと違うことを書いてしまいましたね。 スペースは、キチンと入っております!

tanaba
質問者

補足

度々有り難うございます。  <input name="shuppan1" type="text" size="20"> 年~  <input name="shuppan2" type="text" size="20"> 年 となっているので、shuppan1が正解です。すいません(汗) 途中から間違えてしまっていますね・・。 mdbの、検索の対象となるフィールドが「year」です。

回答No.6

こんばんは。 >>shuppan1= Request.QueryString("year") × >>shuppan1= Request.QueryString("syuppan") × >>shuppan1= Request.QueryString("syuppan1") これが正解 (^^ゞ

tanaba
質問者

補足

SQL = "SELECT * FROM mdbの名前 WHERE year BETWEEN" &shuppan1 & " AND " & shuppan2 shuppan1= Request.QueryString("shuppan1")と、 な・・なおしました! が、[Microsoft][ODBC Microsoft Access Driver] クエリ式 year BETWEEN AND' の 構文エラー : 演算子がありません。 と、まだ出てしまいます(汗) すいません、こんなお時間までおつきあいさせてしまいまして・・。 yearで、mdbのフィールドを指定しているから間違ってはいないと思うのですが、泣

回答No.5

こんばんは。 >>shuppan1= Request.QueryString("year") これっておかしくないですか? テキストボックスは「syuppan1」なんですよね? Request.QueryString("year")には、何か入ってるの??? (^^ゞ

tanaba
質問者

補足

度々、有り難うございます。 テキストボックスですが、名前はsyuppan1です。 yearは、mdbに入っているフィールドの「検索するデータ」なのです(汗) そもそも根本的に、shuppan1= Request.QueryString("year")のyearが間違いなんでしょうか(汗) ここをshuppan1= Request.QueryString("syuppan")にしてもなおらなかったのですが(^^;;;;

noname#25230
noname#25230
回答No.4

#2さんへの補足を見ました。 「'year BETWEEN AND'」でエラー、と指摘されているということは、プログラム内部で実際に処理されようとしているSQL文が「'year BETWEEN AND' 」というようになっているのではないですか? すなわち、nen1(本来はBetweenとANDの間に入る条件)に正しく値が設定されていないので、長さゼロの文字列としてSQL文に混じってしまい、1番目の条件が抜け落ちた「Between AND ~」というSQLになっているのでは? 推測でしかありませんが、1番目の条件にきちんと文字列(年月日かな?)が設定設定されているかどうかを確認してみましょう。

tanaba
質問者

補足

Yamane-D様。 度々、有り難うございます。感謝いたします。 一番目の条件と申しますのは、SQL = "SELECT * FROM mdbの名前 WHERE year BETWEEN" &shuppan1 & " AND " & shuppan2 の、shuppan1のことでよろしいでしょうか? こんな初心者な質問で申し訳ございません・・

回答No.3

こんにちは。 エラーから判断するに、 「syuppan1」に値が入っていません。 ご記載のSQLだと、実行時「syuppan1」と「syuppan2」は必須です。 BETWEEN と AND の間がなくて、続いてしまってますね。 (^^ゞ

tanaba
質問者

補足

度々有り難うございます…。貴重なお時間いただきまして(×_×) syuppan1に値が入っていないということは、 入力フォームの内容を取得、変数に代入したときに shuppan1= Request.QueryString("year") shuppan2= Request.QueryString("shuppan2") としてしまっているからでしょうか・・? これは関係あるのでしょうか。

回答No.2

こんにちは。 エラーの部分を拝見しましたが、多分、SQLを間違えてますね・・・。 BETWEENを使う場合、基本的には、 カラム名 BETWEEN 条件1 AND 条件2 です(ほかにもありますが・・・)。 SELECT ??? FROM  ??? WHERE  ???     AND year BETWEEN syuppan1 AND syuppan2 ですか。 (^^ゞ

tanaba
質問者

補足

ご丁寧にご回答有り難うございます! SQLが間違っているんですよね…。Yamane-D様に教えていただいたやり方で、 SQL = "SELECT * FROM mdbの名前 WHERE year BETWEEN " & shuppan1 & " AND " & shuppan2 とすると、、 [Microsoft][ODBC Microsoft Access Driver] クエリ式 'year BETWEEN AND' の 構文エラー : 演算子がありません。 と出ます。 taka451213様のAND year BETWEEN syuppan1 AND syuppan2というのは、andを追加ということでしょうか? 理解が出来なくて申し訳ございません・・(×_×)

noname#25230
noname#25230
回答No.1

元の回答にあるSQL文を作成する命令ですが、一部、文法上の抜けがあります。 SQL = "SELECT * FROM example WHERE year BETWEEN " & nen1 " AND " & nen2 Set rs = db.Execute(SQL) 上記SQL生成文の中にある 「& nen1 " AND " & nen2」 の部分、「nen1」と" AND "をつなぐ「&」が抜けていますが、これは修正されましたでしょうか? 正確には SQL = "SELECT * FROM example WHERE year BETWEEN " & nen1 & " AND " & nen2 Set rs = db.Execute(SQL) だと思います。 まずはここから確認してください。 元の回答は、ほぼ良回答だとは思いますが、ちょっとしたケアレスミスです。ま、これくらいは勘弁してあげてください。

tanaba
質問者

お礼

あ、有り難うございます!&がないことにも気づいていませんでした・・・。 ご丁寧に有り難うございます!

関連するQ&A

  • 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 よろしくお願いいたします。

  • ボタンを押すとテキストボックスが増えるJavaScriptについて教えてください

    Javascriptで質問です。 <input type="text" name="hoge1" value=""> <input type="text" name="hoge2" value=""> <input type="text" name="hoge3" value=""> というようなテキストボックスがあり、「追加」というボタンを押すと 新たなテキストボックス <input type="text" name="hoge4" value=""> が追加されるようなJavascriptを作成したいと考えています。 新たに作られたテキストボックスには name="hoge4" name="hoge5" ・ ・ ・ というように、nameの部分に「hogeの右にある番号に1ずつ加算された名前」を付けていきたいのです。 検索すると、テキストボックスを追加していくだけのサンプルはいくつかあったのですが、nameの部分を加算していく、という例が無くて行き詰っています。 よろしくお願いいたします。

  • なぜ?数日経つと使えなくなる検索フォーム

    ここに、http://opac.ndl.go.jp/index.html 「雑誌記事索引の検索/申込み」というのがありますが、そこにある 論題名、著者、雑誌名、検索ボタンの4つだけを切り出し、編集して 自作HTMLの検索フォームとして活用したいです。 (HDDに保管してIE6のスタートページにする) 自分なりに必要っぽいタグを切り貼りして使っていたのですが、数日経つと 「セッションの情報が存在しません。」などとエラーで使えなくなってしまいます。 例えば、下記もしばらくは使っていたのですが数日後に↑のエラーで使えなく なってしました。書かれた言語もよくわかりませんが、原因は何でしょうか? (↓EUCです) <form method="post" name="formlist" action="http://opac.ndl.go.jp/Process"> <input type="hidden" name="LS" value="6304253488"> <input type="text" name="TA_MTHEME" value=""> <input type="text" name="TA_MAUTHOR" value=""> <input type="text" name="TA_MTITLE" value=""> <input type="submit" name="MODE_10090002:S2" value="検索"> <select name="ACS"> <option value="SEARCH_CONDITION_AND" selected>AND</option> <option value="SEARCH_CONDITION_OR">OR</option> </select> <input type="hidden" name="SEARCH_WINDOW_INFO" value="06">

    • ベストアンサー
    • CGI
  • PHPでの検索

    初心者です。 ネットもさがしてみたのですが下記の意味がイマイアチわかりません。 <form name="form2" action="search.php" method="post"> <input type="text" name="keyword" size="25" value="<?= $keyword ?>"> <input type="submit" name="search" value="検索"><br /> <input type="radio" checked name="searchSelect" value="AND">AND  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR </form> (1)<form name="form2" action="search.php" method="post"> 検索ボタンを押すと「action="search.php"」が起動します。  どういう仕組みなのでしょうか。 (2) <input type="text" name="keyword" size="25" value="<?= $keyword ?>">  作者の説明で、  『前の画面でテキストボックスに入力した値を、デフォルトで表示しています。  <input type="text" name="keyword" size="25" value="<?= $keyword ?>">』  となっていますが、value="<?= $keyword ?>"でなぜそうなるのでしょうか。  また、<?= $keyword ?>の<?= ?>構文はどのような機能があるのでしょうか。 (3)<input type="radio" checked name="searchSelect" value="AND">AND  「value="AND">AND」の右側の「AND]はどういう意味でしょうか。 (4)<input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR  作者の説明で、  『(6)前の画面でORラジオボタンが選択されていた場合は、選択(checked)します。  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect"  value="OR">OR』  とありますが、<?= ($searchSelect == "OR")? "checked" : "" ?>でなぜそういうことができているのでしょうか。  また、『"checked" : 』の『:』は何の役目をしているのでしょうか。 上記4つの質問でどれでもいいですのでどなたかお教え願えないでしょうか。

    • 締切済み
    • PHP
  • PHPでTEXTと同様なcheckBoxの処理

    下記のフォームから検索キーワードを入力してANDとORの検索はちゃんとできていますが、 チェックボックスを使いテキストフォームと同様のロジックで「りんご■メロン」と 文字と文字の間にスペース「■」で結合して送信し、PHPコード側で受けとるにはどうしたらよいかアドバイス下さい。 ちなみに、PHPコード側では$_REQUEST['word']に<input type=text name=word size=35 value="">と同じような処理を入れたいです。 (1)検索キーワード --------------------------------------- りんご■メロン *■は半角スペース文字とします。 HTMLフォーム --------------------------------------- <form action="test.php" action="POST"> <input type=hidden name=mode value="search"> 検索キーワード:<input type=text name=word size=35 value=""> <select name=option> <option value="and"> AND</option> <option value="or"> OR</option> </select> <input type=submit value="Search"> </form> ↓この処理では全然だめでした。 <form action="test.php" method="post"> <input type="checkbox" name="word[]" value="りんご"> <input type="checkbox" name="word[]" value="メロン"> <input type=submit value="Search"> </form> PHPコード foreach($_REQUEST['word'] as $val){ $_REQUEST['word'] = " "."$val"; }

    • 締切済み
    • PHP
  • php mysql でチェックボックスによる検索

    お世話になります。 PHPにてDB(MySQL)に登録されたデータをチェックボックスで検索するスクリプトを組んでおります。 検索項目として(複数チェック可) 住所: □東京都 □神奈川県 □埼玉県 性別: □男   □女 とあります。 例えば東京都、神奈川県、男にチェックを入れた場合、 東京都+男、神奈川県+男のデータを取り出したいのですが、二つチェックを入れた場合、データが見つからないとなってしまします。 同じような質問は全て目を通して試してみたのですが、なかなかうまくいかない為、お力をかしていただければと思います。 スクリプトは以下となっております。 ------------------------------------------------------------- input.php <html> <head> <title>PHP SEARCH</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body bgcolor="#FFFFFF" text="#000000"> <form action="search.php" method="POST" > <form> <b>住所</b><br> <input type="checkbox" name="pref[]" value="東京都">東京都<br> <input type="checkbox" name="pref[]" value="神奈川県">神奈川県<br> <input type="checkbox" name="pref[]" value="埼玉県">埼玉県<br> <b>性別</b><br> <input type="checkbox" name="sex[]" value="男">男<br> <input type="checkbox" name="sex[]" value="女">女<br> <br> <input type="submit" value="検索開始"> </form> </body> </html> ------------------------------------------------------- search.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>サーチ</title> </head> <body> <?php $pear_path = 'c:/xampp/php/PEAR'; set_include_path(get_include_path() . PATH_SEPARATOR . $pear_path); require_once('MDB2.php'); // DSNの設定 $dsn = array( 'phptype' => 'mysql', 'username' => 'root', 'password' => '', 'hostspec' => 'localhost', 'database' => 'test01', ); // オプションの設定 $options = array( 'portability' => MDB2_PORTABILITY_ALL, ); // 接続 $mdb2 =& MDB2::connect($dsn, $options); if (PEAR::isError($mdb2)) { exit('データベースへの接続に失敗しました'); } // 初期化 $sql = 'set names utf8'; $res =& $mdb2->query($sql); $mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC); // 都道府県 if(isset($_POST['pref'])){ $a = implode(' OR ',$_POST['pref']); } // 性別 if(isset($_POST['sex'])){ $b = implode(' OR ',$_POST['sex']); } // 検索 $sql = "select * from sample where pref in ('$a') AND sex in ('$b')"; $result = $mdb2->query($sql); if (PEAR::isError(result)) { exit('接続に失敗しました'); } $num_rows = $result->numRows(); if($num_rows == 0){ exit('検索結果はありませんでした'); }else{ print $result->numRows()."件のデータがあります"; } print("<table border=\"1\">\n"); print("<tr>"); print("<th>id</th><th>性別</th><th>都道府県</th>"); print("</tr>"); while($row = $result->fetchRow()){ print("<tr>\n"); print("<td>" . $row['id'] . "</td>"); print("<td>" . $row['pref']. "</td>"); print("<td>" . $row['sex']. "</td>"); print("</tr>\n"); } // 接続を切る $mdb2->disconnect(); ?> </body> </html> 何卒よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 何種類かのチェックボックスグループを検索フォームに追加したい

    PHP 5、MySQL 4.0.14という組み合わせで、検索システムに挑戦中です。 入門書から動作まで確認できましたが、検索フォームにいくつかの チェックボックスを追加したいです。 例えば、好きな果物を任意に選択させ、チェックされた果物をOR条件で、 さらに他の検索条件(住所等)とAND条件で結びたいです。 ここで、(1)HTML側と、(2)<?php ~~?>内に、 具体的にどのように記述したらよいものでしょうか。 例示はしてませんが好きな果物(3つのチェックボックスグループ)だけでなく、 好きな動物(6つの 〃 )や、好きな飲み物(2つの 〃 )など、様々な チェックボックスを検索条件として絞り込めるようにしたいです。 ---検索フォーム-- <FORM method="POST" action="list.php"> 住所<input type="text" name="address"> を含む 好きな果物 <INPUT TYPE="CHECKBOX" NAME="kudamono">りんご <INPUT TYPE="CHECKBOX" NAME="kudamono">みかん <INPUT TYPE="CHECKBOX" NAME="kudamono">なし <input type="submit" name="exec" value="検索"> </FORM> ---検索結果PHP-- require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from t_mydata where (address like '%$address%') $sql .= " order by address"; $rst = mysql_query($sql, $con); $body .= "<table>"; for ($recnum = 0; $recnum < $recmax; $recnum++) { $body .= "<tr>"; $body .= "<td>" . $col["ADDRESS"] . "</td>"; $body .= "<td>" . $col["KUDAMONO"] . "</td>"; $body .= "</tr>"; } $body .= "</table>"; # だいぶ省略してます。

    • ベストアンサー
    • PHP
  • 検索フォームの入力値のチェック

    以下は、いくつもある検索フォームの中のテキストボックスの一つです。 ここに、次のエラーチェックを仕込みたいのですが。 (1) 17で始まる8桁数字以外はアラートを出す。NULLもダメ。 (2) 半角数字以外が入力されたときは、フォーカスが離れた時アラートを表示NULLはOK。 (3) ここに示していないその他のフォームを含め、一個でも上記エラーがあったら   検索ボタン押下時にアラートを出し、POSTを許可しない。 いろいろエラーになったり、(1) ができてなかったりで、すみませんが 完璧にするためのアドバイスいただけないでしょうか。IE6オンリーで十分です。 <html> <head> <script type="text/javascript"> function NullCheck() { if ( document.query.numberform.value=="" ) { alert( "必ず17で始まる半角数字8桁で指定してください。\n例:17910031" ); return 1; } return false; } function NumbCheck() { var str = document.query.numberform.value; if( str.match( /[^0-9]+/ ) ) { alert("不正な値がみつかりました。"); return 1; } return 0; } /* 全部チェック */ function AllCheck() { var check = 0; check += NullCheck01(); check += nmck09(); if( check > 0 ) { return false; } return check; } </script> </head> <body> <form method="post" action="list.php" target="list" id="query" name="query"> <input value="17000000" size="10" type="text" name="numberform" onblur="NumbCheck();NullCheck();">から <input type="submit" name="exec" value="検索" onclick="return AllCheck();"> </form> </body> </html>

  • 一つの検索窓で複数のサイトから一度に検索させる方法

    自分のホームページにサイト内検索の検索窓を設置しようと考えています。 私は知識に乏しいので、ネット上に紹介されているものをそのまま使おうと思い、以下を貼り付けることにしました。 <form action="http://www.google.com/search"> <input type="hidden" name="hl" value="ja"> <input type="hidden" name="hq" value="inurl:****.com/"> <input type="hidden" name="ie" value="Shift_JIS"> <input type="hidden" name="oe" value="Shift_JIS"> <input type="hidden" name="filter" value="0"> <input type="text" name="q" size="40" maxlength="256" value=""> <input type="submit" name="btnG" value="検索"> </form> しかし、私は、複数のレンタルサーバーを使用して一つのホームページのように見せているので、複数のURLからの検索が必要なのです。 一つの検索窓で複数のサイトから一度に検索させるようにするにはどのように書きかえればよろしいでしょうか? よろしくお願いいたします。

  • 入力値を引数として検索するには("?"がない場合)

    先日こちらで、html文でformを使って、submitボタンと入力ボックスを作成し、 「http://stocks.finance.yahoo.co.jp/stocks/detail/?code=7203.T」というサイトに 4ケタコードを入力するだけで接続する方法を教えていただきました。 (表現が分かりづらくて申し訳ありません。) その時の書き方は以下の通りでした:--------------------------------- <html> <body> <form action="http://stocks.finance.yahoo.co.jp/stocks/detail/" method="get"> <input type="text" name="code"> <input type="submit"> </form> </body> </html> -------------------------------------------------------------------- その後、以下のような「?」や「code=」という文字がURLに含まれないサイトで同様のことが できないか、いろいろ試しておりますが、なかなかできません。 「http://minkabu.jp/stock/7203」 上記のような末尾に4ケタコードを追加するだけのURLでの方法を教えていただけないでしょうか。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう