• 締切済み

CGIプログラムを使ってレースの結果をHTMLに表示

CGIプログラムの件でご質問したいのですが、datファイルのレース結果をCGIプログラムを使ってHTMLに表示したいと思っています。 datファイルの内容は、レースの結果が1位から順に10位くらいまでA,B,Cクラス混合で並んでいます。 1,Aクラス,青チーム,12:50,山本太郎 2,Cクラス,赤チーム,11:23,山田花子 3,Bクラス,黄チーム,10:52,松本典子 4,Aクラス,桃チーム,10:32,加藤茶子 それをCGIプログラムによって、各クラスごとに表示します。 CGIのプログラムの内容は、 open (FILE, "<data.dat") || die "File 'data.dat' Open Error."; @all = <FILE>; close(FILE); foreach (@all){ ($data1, $data2, $data3, $data4,$data5) = split(/,/, $_); next unless ($data2 eq "A"); &one_data; } sub one_data { print << "END_OF_ONE"; <P>$data1位<BR> $data2<BR> $data3<BR> $data4<BR> $data5<BR> </P> END_OF_ONE } 1; だいたいこんな感じですが、この各クラスごとに表示したHTMLのファイルの順位のところが、もとのdatファイルの順位になってしますので、それを1位から順にクラス別の順位として表示したいのです。 それにはどのようにしたらよいでしょうか? すみません、あまりperlの言語の知識がないもので。。

  • CGI
  • 回答数1
  • ありがとう数2

みんなの回答

  • lucky111
  • ベストアンサー率30% (75/244)
回答No.1

私の場合、sortを使います。 例えば、 a,100 b,300 c,200 というデータがあって、後ろの番号順にしたい場合は、 foreach (@all){ chop;←改行を消す ($data1, $data2) = split(/,/);←$_は無くてもOK $data{$data2} = $_; } foreach (sort $a <=> $b keys(%data)){ print "$_\n"; } とすれば、 a,100 c,200 b,300 となると思います。 b,300 c,200 a,100 にしたい場合は、 foreach (sort $b <=> $a keys(%data)){ にします。(もしかしたら、逆かも・・・) ちなみに、文字をソートしたい場合は、<=>をcmpにすればできます。

ponsuke777
質問者

お礼

ありがとうございました。 でも、結局、 # クラス毎順位カウンタ $Rank = 1 ; # すべてのデータについて繰り返す foreach (@all){ # 1行の文字列をコロンを目印にして項目に分割する ($data1, $data2, $data3, $data4,$data5, $data6, $data7, $data8, $data9) = split(/,/, $_); next unless ($data3 eq "A"); # 1件分のデータを表示するサブルーチン &one_data; # カウントダウン(順位を下げる) $Rank++ ; } というふうにしました。 ご協力ありがとうございました。

関連するQ&A

  • CGIのログをHTMLで表示

    CGIのログ(カウント)をHTMLにSSIで表示させようと思い下記のCGIを考えたのですがうまく表示されません。 皆様のお力をお貸し下さい! [log.dat] L内容 DataSu='***'; (***にはカウント数字が入っています) 上のカウントログをHTML表示させる為にCGIを作る [count.cgi] #!/usr/local/bin/perl #カウントログ読み込み open(IN,"ログまでの相対パス"); # カウンターを読み出す $count = <IN>; #ファイルを閉じる close(IN); #サイト数の表示。 print "Content-type: text/html\n\n"; print "$count"; 上記のCGIを表示させるとDataSu='***';とファイル内容が全て表示されてしまいます。 ***のカウント数だけ表示させるにはどうしたらいいのでしょうか?

    • 締切済み
    • CGI
  • CGIの処理結果をHTML内に表示したい!

    はじめまして。 CGI初心者です。 現在、とあるフリーのアンケートのCGI(perl)を改良していて、それは、アンケートに答えて、送信ボタンを押すと、CGIファイルの処理結果として、これまでのアンケートの集計結果がグラフで表示されるというものです。 その集計結果のみを、別ページ(左側や上部にメニューがあるもの)のHTML内に収めたいのです。 ※新しいウィンドウが開かなくてもOKです。 ※その別ページというのが私のオリジナルのページになります。 イメージとしては、 1)anket.html(アンケートに答える)  ↓ 2)anket.cgi(返答内容とこれまでの集計を処理)  ↓ 3)anket.html(集計結果が埋め込まれたHTMLファイルが表示される) 初心者なので、用語の使い方等間違っていましたらすいません。。 よろしくお願いします!

  • HTML、CGIについて

    HTMLをCGIプログラムに組み込んで実装させようと考えています。 用件はそのプログラムファイルの拡張子は.htmlでも動くのかということです。もしいけない場合はどの拡張子を使えばいいのかアドバイスください。 よろしくお願いします。

  • HTMLスキン型CGIを作るには?

    フォームメールの制作を行っているのですが、汎用性を高めるために、HTML部分はすべて外部に書き出して処理に関するところだけをCGIに記述しようと考えています。 まず、デザインテンプレート(HTMLスキン)に$html_contentsなどと挿入位置を記述しておき、 CGIへのアクセスがあった際に、スキンを読み込み、その挿入位置に結果を代入するというものです。 できるなら、エラーメッセージや完了メッセージの部分も外部(HTMLを記述した*.datかな?)ファイルとしたいです。 参考になるサイトもしくは、プログラムをご存知の方はご教授願います。

    • 締切済み
    • CGI
  • CGIでのHTMLとプログラムコードの分離について

    CGIでのHTMLとプログラムコードの分離について CGIプログラミングのフレームワーク的なアイデアについてご教示願いたいです。 CGIを記述する場合、その多くは下記のようなスタイルになるのではないかと思います。 1.formタグのactionからcgiを呼び出す     ↓ 2.cgiの中で計算やsendmail等の処理を実行     ↓ 3.結果をブラウザ上に表示するためprint等を利用してhtmlタグを表示 この手法を用いると、手順2のところでHTML部分とプログラムコード部分が混合してしまい、見栄え(html部分)を変更しようと考えた時、HTML部分の記述があるcgiプログラムを編集し、該当する部分のタグを表示させているであろうprint文の表示内容を変更する必要があります。 見栄えのhtml部分とCGIのコードを完全に分離することは出来ないのでしょうか??? 上記手順の「1」に関してはhtmlファイルを編集する事だけで、cgiファイルを編集する必要はありません。 手順「3」もリダイレクトを利用すれば可能だと思います。 問題は、手順「2」の部分です。 この部分の見栄え部分を変えようとすると、どうしてもcgiプログラムを開いて編集する必要に迫られてしまいます。 下記の例のような処理(見栄え用のhtmlファイルを読み込む方法)は出来ないものでしょうか? <例:アンケートフォーム> 1.アンケートフォーム(html)のformタグにあるactionからcgiを呼び出す     ↓ 2.cgiでformタグ内のテキストエリアやラジオボタン等の情報を収集     ↓ 3.収集結果を表示させるための「hantei.html」を読み込む     ↓ 4.読み込んだ「hantei.html」の中に収集結果を埋め込んで表示     ↓ 5.問題なければアンケート結果をsendmail等でメール送信   問題あれば手順1のアンケートフォーム(html)へ戻る     ↓ 6.無事にメール送信出来れば、有難うございましたページ(html)へリダイレクト 上記手順の3と4が実現できれば、見栄えを変えたい時はhtmlファイルを編集すればよく、cgiプログラムを触る必要がなくなるのではないかと思います。 私が考えている事について、「自分はこうしている」とか「そうではなくてこうすれば良いよ」などなどありましたら、是非ご教示願いたいです。

    • ベストアンサー
    • Ruby
  • CGIだとうまくいかない!

    まずは下記ソースをご覧ください。 これを実行させると上下2のフレームができまして、上フレームにある「Jump C」と いうリンクをクリックすると、下フレームが「ccccccccc」というところまでジャンプ するように作りました。 まずは実験版としてCGIでなくPC上でHTMLファイルを作成(main.cgiがmain.htmになる) しました。その時はうまく下フレームの「cccccccc」までジャンプしたのですが、これを CGIに作り直して実行させたところ、何も動作しないままでした。 CGIでもHTML上同様の動きをさせるにはどのようにしたらよろしいでしょうか? どなたかご存知の方いましたら、ご鞭撻のほどお願い致します。 -------------- main.cgi ------------------------------------- <HTML> <HEAD><TITLE>フレームテスト</TITLE></HEAD> <FRAMESET ROWS="20%,*"> <FRAME SRC="top.cgi" NAME="FRAME2"> <FRAME SRC="btm.cgi" NAME="FRAME3"> </FRAMESET> </HTML> -------------- top.cgi ------------------------------------- <HTML> <head> </head> <body> <a href="right_btm.cgi#c" target="FRAME3">Jump C</a> </body> </html> -------------- btm.cgi ------------------------------------- <HTML> <head> </head> <body> <A NAME="#a">aaaaaaaaa<br><br><br><br><br><br><br><br><br> <A NAME="#b">bbbbbbbbb<br><br><br><br><br><br><br><br><br> <A NAME="#c">ccccccccc<br><br><br><br><br><br><br><br><br> <A NAME="#d">ddddddddddd<br><br><br><br><br><br><br><br><br> </body> </html> ------------------------------------------------------------ このCGIを実行すると、

  • CGIのちょっとしたこと

    CGIをいろいろと実験しているのですが、わからないことが2点あります。ローカルな環境で実行しています。 1.データファイル(実行ファイルではない)の拡張子なんですが、data.datとかdata.cgiとかありますよね。セキュリティ的にはcgiの方が安全なんですか?.datだとエディッタで中身がみれてしまうので・・。 2.実行ファィル内にパスワードを記述することがありますよね。そこで、実行形式のprogram.cgiファイルの中身をみられてしまうことがあるのでしょうか?rootにはみられてしまうかもしれないが、通常のユーザーがファイルのソースコードをみれてしまうということはないのでしょうか。私は多分みれないと思うのですが、特殊なソフトウェアなどが存在したりしますか。 3.実行から10秒後にファイルを作成するプログラムがあったとして、このプログラムを実行した直後にブラウザを閉じたとします。しかし、10秒後にはちゃんとファイルが作成されています。ブラウザを閉じてしまってもプロセスは残るものなのでしょうか。 ※プログラムはすべてブラウザで実行しています。

    • ベストアンサー
    • CGI
  • HTMLからCGIの呼び出しができません。

    既に作ってあるHTMLファイルをコピーして、CGIファイルの名前を変えて送信ボタンをクリックしました。CGIファイルはTITLEだけの記述にしましたが、TITLEは表示されず、http://~のようにアドレスが表示されます。HTMLファイルの方は、<form action="./A.cgi" method="post">のように修正し、CGIファイルの方には、以下のように記述してあります。何が原因でTITLEが表示されないのでしょうか? #!/usr/local/bin/perl use CGI qw(:standard); print<<END_OF_HTM; Content-type:text/html <HTML> <HEAD> <TITLE>XXXXXX</TITLE> </HEAD> </HTML> END_OF_HTM

    • ベストアンサー
    • Perl
  • CGIの出力結果をHTMLに表示したい(SSI使用)

    http://wa-ka.net/mash/sozai/tenshin/index.html 上記のサイトのアンケートCGIを利用しています。 アンケートの集計結果を、HTML上に表示したいのですが、どのようにしたら良いのかアドバイスをお願い致します。 HTMLのページの中に <!--#exec cgi="./tenshin.cgi?mode=reportfile"--> と記載しても上手く表示されません。 ですが、 <!--#exec cgi="./tenshin.cgi"--> と記載すると、一応 tenshin.cgiにアクセスした時に表示される内容が表示されます。 HTMLファイルと、cgiは同じ階層においてあります。 <!--#exec cgi="./tenshin.cgi"--> と <!--#exec cgi="./tenshin.cgi?mode=reportfile"--> の違いは、「?mode=reportfile」があるか無いかなのですが、このようにcgiの後に何か付いてしまうと、SSIでCGIを呼び出しHTMLに表示する事はできないのでしょうか? アドバイスをお願い致します。

    • ベストアンサー
    • Perl
  • 「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表

    「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)Ajaxでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 Ajaxを使えばいいと教わったのですが、色んなサイトを調べてみたのですが、Ajaxが初心者で、よくわからず、コードなどございましたら教えて頂けましたら嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • AJAX

専門家に質問してみよう