CGI-BBS > データベース > 簡易データベース > 検索部分の改造


カレッヂ
カレッヂ


質問者 hiro_1977  投稿日 2/14(水) 02:10:59
簡易データベースによる検索ですが、例えばニックネームがabcde
だと、最初のaを入力するだけでエラーにならずに検索されてしまいます。
(acとか入力するとエラーになりますが)
最初の文字だけ合ってればいいというのではあまりにルーズなので、全て
の文字が正確に入力されなければエラーになるようしたいのですが、どう
すればいいのでしょうか。

回答者 ヒロ  [削除]  投稿日 2/14(水) 13:42:31
#===================================

        # ニックネーム(マッチ)

        if ($FORM{'HANDLE'} ne '') {

                if ($HANDLE =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$FORM{'HANDLE'}/i) { ; } else { next; }
        }
#===================================
 ↑この行を
#===================================

        # ニックネーム(マッチ)

        if ($FORM{'HANDLE'} ne '') {

                if ($HANDLE eq $FORM{'HANDLE'}) { ; } else { next; }
        }

#===================================
としてやればできると思います。
間違いがあれば上級者の方のご指摘願います。
質問者 hiro_1977  [削除]  投稿日 2/14(水) 23:58:43
ヒロさんとりあえずレスありがとうございます。

早速試してみたのですがどうもうまくいきません。
data.csvにある名前を正しく入力しても「みつかりません」と
エラーが出ます。

入力値を正確に読みとってないのでしょうか?
私はPerlはほとんど素人なんでよくわかりません。
またどなたかレスお願いします。
回答者 羊相談員  [削除]  投稿日 2/15(木) 10:59:17
データが正しければヒロさんの方法できるはずです。
ただし、同じaでも
aaAA
の4種類があるので注意が必要です。
あとは行頭にカンマがないとか。
回答者 ヒロ  [削除]  投稿日 2/15(木) 18:17:14
search.cgiにある

#======================================

         &jcode'convert(*value,'euc');

                 &jcode'convert(*data,'euc');

#======================================
 を
#======================================

        &jcode'convert(*value,'sjis');

        &jcode'convert(*data,'sjis');

#======================================

に変えてみてください。

質問者 hiro_1977  [削除]  投稿日 2/16(金) 03:32:24
羊相談員さん、ひろさんレスありがとうございます。
おかげでうまくいきました。

検索条件の記入欄を変えていたのですが、search.cgi
をその変更に正確に対応させていなかったようです。

お時間を頂いてすみませんでした。

このページは終了したので返信(回答)は書きこめません

Web裏技