CGI-BBS > 基礎 > エディタ > 任意のCSVを指定してオープンするのに困っています


カレッヂ
カレッヂ


質問者 sumi  投稿日 4/25(木) 21:21:48
はじめまして。
現在、エディタの前にフォームを作ってそこからファイル名を指定し、
postでエディタに渡して、ファイル名の指定をするように書き換えました。
しかし、指定した任意のCSVファイルの表示はできるのですが、
[更新]、-NEW-、-EDIT-、-DELET-をクリックするとエラーが返ってきます。
「File Not Found ./.csvが見つかりません」が表示されます。
書き換えた内容は下記のとおりです。
----line 50に追加-----
if ($ENV{'REQUEST_METHOD'} eq "POST") {
        read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
} else {
        $query_string = $ENV{'QUERY_STRING'};
}
@a = split(/&/, $query_string);
foreach $a (@a) {
        ($name, $value) = split(/=/, $a);
        $value =~ tr/+/ /;
        $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
        $FORM{$name} = $value;

        if ($name eq "place") {
                $place = $value;
        }
}
---------
----$fileを書き換え----
$file = "./"."$place".".csv";
---------
過去ログを呼んでみたのですが
なにぶんperl初心者なもので
よくわかりませんでした。
お手数おかけしますがどなたか詳しい解決策を
ご教授ください。
回答者 しあわせのツボ  [削除]  投稿日 4/26(金) 01:59:25
簡易データベースと別にHTMLを1枚置いて、そこから呼び出している、ということですよね?
だとすると、簡易データベースからの出力は$placeに相当する情報が引き継がれないので、ファイル"./" . ""($placeがないので空白になる) . ".csv"は存在しない、というエラーになります。
なので、簡易データベース内で次のページにも$placeの情報を渡してやる必要があります。
質問者 sumi  [削除]  投稿日 4/26(金) 11:27:33
ご回答ありがとうございます。
しあわせのツボさんのおっしゃるとおり
CSVエディタの前にHTMLを設置し環境変数にて
ファイル名を渡しています。
で、-NEW-ボタンを押す際にCSVエディタが
自分を読み込んでいるため環境変数がわたらずに
ファイル名の$place部分が空になっていることが解かりました。
ならばと、145行目(編集前ソースの場合)に次の行を追加しました。

<input type=hidden name="place" value="$place">

そしたら、-NEW-,-EDIT-,-DEL-ボタンを押すと
ボタンを押す前の画面(CSVの内容を表示する最初の画面)
に戻ってきてしまいました。

何か良い知恵は御座いませんでしょうか?
ずうずうしいのは百も承知ですが
返信おまちしております。
よろしくおねがいします。

質問者 sumi  [削除]  投稿日 4/26(金) 13:56:01
皆々様
どうもお騒がせしてすいませんでした。
CGIエディタ内部のフォームを生成する部分全てに
前述した行を追記することにより解決いたしました。

皆様には多大なご助力をいただき
まことにありがとう御座いました。

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

Web裏技