- ベストアンサー
既存のデーターを開く方法
データーファイルの中に 31<>9<>00<>名前<>男<>担当<>あり<>0123<> 31<>9<>05<>名前<>女<>担当<>なし<>0123<> というデーターが入ってるとして、 このデーターを一覧として表示させるにはどのようにすれば良いのでしょうか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
まずは、どういう理由でエラーなのか?を明確にするといいと思います。 > Internal Server Errorのままです。 ↑このエラーメッセージでは内容がわかりません。 内容はエラーログを調べるか、シェルから実行するなど方法がありますが、 もしブラウザからしか実行できない場合は、動かそうとしているスクリプトの、行頭にある #!/usr/bin/~ などと書かれた行の次の次あたりに、 use CGI::Carp qw(fatalsToBrowser); と入れて、あらためてブラウザから実行してみてください。 エラーの内容がブラウザに表示されます。
その他の回答 (8)
- taseki
- ベストアンサー率66% (155/233)
ええと…、何度も何度も繰り返しになってしまいますが……、 具体的に、きちんと書きましょう。読む側の人たちは、あなたの状況を想像するしかないわけです。状況を具体的に説明すれば、皆さんが答えやすいようになります。 >実行の結果ですが、 ↑と言われても、何の実行結果?? 下のリンクにあるcalender.zipのスクリプトの●行目に、use CGI::Carp~を入れただけのものをアップロードして、ブラウザでアクセスした、ということですか?? それともどこかを書き換えたものですか? それともサンプルコードですか? また、ANo.7でも聞きましたが、printをどこかに入れたのでしょうか? 何度も無駄なやり取りを少しでも省けるよう、具体的に説明すれば、皆さんが回答しやすくなると思いますよ。 たとえば、当初の質問文からずいぶんと、次々と新しい事実が判明している、という流れになってしまっています。少なくとも私の始めの想像とは、ずいぶん状況が違っていました。 もちろん初心者には難しいことかもしれませんが、少なくとも、やろうとしていること、試したこと、その結果、を可能な限り詳しく具体的に書かれることをおすすめします。
お礼
何度もすみません。。。 実行の結果というのは、calender.cgiの途中にサンプルコードを入力したらサーバーエラーが出てしまってたので ご指摘いただいたとおり、use CGI::~を入力し、そこで表示されたエラー箇所を修正しました。 そうしたら、Content-type: text/htmlという表示が出てきたのですが、 print で指定されている物に関しては何も表示されませんでした。 calender.cgiの中でmode=view2の部分が今回、一覧表示させようとしている所で、 サンプルコードもview2を実行する途中に入れました。 いろいろとforeach文やopenなど、検索しながらやっているのですが、 未だに元のCGIの実行結果は「予約は入っていません。」のままです。 文章で表現するのがなかなか上手くいかないのと、 自分でも何回もやり直しているために行数の増減があったりして 余計に説明出来なくなってしまいました。 もう少し試行錯誤してみます。 ありがとうございました。
補足
完成いたしました。 元々のカレンダーのリンクで来月を見る場合、month=8となっていたのですが、 month=08でないとファイルが存在しないので予約が表示されるわけがありません。。。 そんな簡単な事でした。。。 いろいろとありがとうございました。
- taseki
- ベストアンサー率66% (155/233)
問題を解決するには、まずは原因を絞り込むことです。 > このCGIは、「print」が使えないんです。 「printが使えない」と判断されたのは、どういう理由からですか? たとえば、どこどこにprint文を入れたらエラーが発生した、ということなら、使えないかどうかは別にして、まずはそこが原因の可能性が高いです。 > 使うとエラーになってしまいます。 エラーと言われても様々あります。 具体的に、どういうエラーメッセジが表示されましたか? 回答を得るために、できる限り具体的に状況を説明したほうが良いかと思います。
お礼
何度もありがとうございます。 完全にお手上げ状態です。サンプルデーターも入力し、 その文の意味について調べるために検索等しましたが、 Internal Server Errorのままです。 データーファイルの拡張子がDATではなくCGIになってるからでしょうか? 今は、データーが入っていても、表示されるのはデーターがないメッセージなので あと少しのような気もしますがさっぱりです。。。
- misaki356
- ベストアンサー率0% (0/6)
>このCGIは、「print」が使えないんです。 元のオリジナルの予約システムを改造して使用していますが表示に関して何の問題もありません。 あなたのCGIの書き方が文法的に間違っています。
お礼
やっぱり文法ですか。。。 もう少し頑張ってみます。
- to-zoku
- ベストアンサー率36% (16/44)
print が使えない。んじゃなくって、 print <<"_html_"; _html_ この2行のなかにperl文を書いていたりしたら、おもしろいかなー。 えーと、なんてったっけ? とにかく、この中では普通のタグを使ってOKって事。
- taseki
- ベストアンサー率66% (155/233)
私の環境では問題ないようでした。 まず下のサンプルコードは動きますか? 動けばprint自体は問題ないことになります。
お礼
どこにどうやってやればいいのか分からなかったので サンプルコードの件に関しては動作不明です。 ただ、CGIの中にprintという記述があったので問題ないと思います。 折角、教えていただいているのにわからなくてすみません。。。
- taseki
- ベストアンサー率66% (155/233)
printが使えないというのは考えにくいですね。 まず下のサンプルコードは動きますか? 動けばprint自体は問題ないことになります。 次に、エラーの個所を限定するため、 perl -wc スクリプト名 でチェックすると、どうなりますか?
お礼
ごめんなさい。 チェック方法が分かりませんでした。 使用しているCGIをUPしてみました。 http://www.emu-style.com/calender.cgiです。 お手数をお掛けしますが、よろしくお願いいたします。
- taseki
- ベストアンサー率66% (155/233)
一覧とはtableの表にしたいということですか? 言語はperl? たとえば以下のようなことでしょうか。 ------------------------------- #!/usr/bin/perl print <<'EOM'; Content-type: text/html <html> <body> <table> EOM open(FH, "★ファイルパス") or die; @list = <FH>; close(FH); foreach (@list) { print "<tr>\n"; foreach (split(/<>/)) { print "<td>$_</td>\n"; } print "</tr>\n"; } print <<'EOM'; </table> </body> </html> EOM
お礼
tableで表示させようと考えています。 言語はPerlです。 ただ、「print」を使用するとサーバーエラーになってしまいます。 CGIの中身を見てみると、 $yoyaku_html .= qq| <TR>・・・・ となっています。 これだけじゃ、情報不足だと思うのですが、 どこまで公開していいのかわからなくて。。。
補足
ちなみに、最初の31というのは日にちなのですが、 その31日の予約データーをみる場合には @roomdata = glob("room*"); $nowdate = stdio::getTime("%yyyy%mm%dd", 3600*9); $viewdate = ($param{'year'}.$param{'month'}.$param{'day'}); $shisetsu_cnt = '0'; $total = '0'; foreach(@roomdata){ # 変数をリセット $yoyaku_html = ''; $yoyaku_cnt = ''; # 施設名を取得 $room_dir = $_; $filename = $room_dir."/name.txt"; @datafile = &fileopen($filename); chomp $datafile[0]; $roomname = $datafile[0]; $shisetsulink[$shisetsu_cnt] = qq||; # 予約状況を書き出し $filename = $room_dir."/".$param{'year'}.$param{'month'}.".cgi"; if(-e $filename){ @datafile = &fileopen($filename); }else{ if(!open(OUT,">$filename")){ &error('システムエラー','ファイルをオープンできません。'); } close(OUT); } foreach(@datafile){ ($data_day,$data_time1,$data_time2,$data_name,$data_sex,$data_tantou,$data_biko,$data_xxx) = split(/<>/); $total = $total + '1'; if($param{'day'} ne $data_day){ next; } $yoyaku_cnt = '1'; $yoyaku_html .= qq| <tr> <td class="border2"><span class="fontal">$data_time1:$data_time2</span></td> <td class="border4"><a href="$self?mode=del&data=$data_day,$data_time1,$data_time2&roomname=$roomname&date=$param{'year'}年$param{'month'}月$param{'day'}日&filename=$filename">$data_name</a></td> <td class="border4">$data_sex</td> <td class="border4">$data_tantou</td> <td class="border4">$data_biko </td> </tr>|; } if(!$yoyaku_cnt){ $yoyaku_html = qq| <tr><td class="border2" colspan="5">予\約は入っていません</td></tr>|; } となっております。
- the845t
- ベストアンサー率33% (246/743)
foreach(@list){ print "$_<br />"; } どういう感じに一覧にしたいんでしょう?
お礼
このCGIは、「print」が使えないんです。 使うとエラーになってしまいます。 何か他に方法はありますか?
お礼
何度もご指導頂き、ありがとうございます。 実行の結果ですが、 Content-type: text/html と表示されました。 ですが、他は表示されません。