• ベストアンサー

perl内のhtml文を、ループさせたいのですが、これってできないんでしょうか?

たびたび申し訳ありません。周りに聞く人もいなく、まったくの初心者ですので、なにとぞお願いいたします。 下記の「ここから~ここまで」の$iの値を変えながらループさせたいのですが、まったくうまくいきません。なにかいい方法あったら教えてください。 それとも、こんな書き方じゃダメなんでしょうか? #!/user/bin/perl open(IN,"data.csv"); #flock IN,2; @line = <IN>; #flock IN,8; close(IN); $cnt = 0; foreach(@line){ ($sina[$cnt],$jpg[$cnt],$pr[$cnt],$kakaku[$cnt]) = split(/\,/,$_); $cnt++; } print<<"EOF"; Content-type: text/html <HTML> <HEAD> <TITLE>やぁ!</TITLE> </HEAD> <BODY> EOF ###################ここから print<<"EOF"; <TABLE border="1"> <COL span="4" width="100"> <TBODY> <TR> <TD width="300">$sina[$i]</TD> <TD width="300">$jpg[$i]</TD> <TD width="300">$pr[$i]</TD> <TD width="300">$kakaku[$i]</TD> </TR> </TBODY> </TABLE> EOF ##################ここまで print<<"EOF"; </BODY> </HTML> EOF

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

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

ループさせたいのなら、ループの命令を使いましょう(^^; for ($i=0; $i<@sina; $i++) {   # ここから     :   # ここまで }  ただこれだとテーブルがたくさん出来てしまうので、makitoさんが回答されているように、<TR>~</TR>のループでいいような気もしますが。

Iam2888
質問者

お礼

$#を使わないでの方法ありがとうございます。 $#はみなさん多用しているみたいですけど、文献で調べてみると$#は時代遅れなので今後使わないようにとの文があり、初心者にとって、なんとなく不安なものがありました。助かります。

その他の回答 (1)

  • makito
  • ベストアンサー率21% (3/14)
回答No.1

この前回答させていただいた、初心者です。(^^; ###################ここから print<<"EOF"; <TABLE border="1"> <COL span="4" width="100"> <TBODY> EOF for($i = 0; $i<=$#sina; $i++){ print<<"EOF"; <TR> <TD width="300">$sina[$i]</TD> <TD width="300">$jpg[$i]</TD> <TD width="300">$pr[$i]</TD> <TD width="300">$kakaku[$i]</TD> </TR> EOF } print<<"EOF"; </TBODY> </TABLE> EOF ##################ここまで 自分ならこうします。 print<<"EOF"; EOF この間は、別にループするとかそういうことはやらないので、自分でループさせる必要があります。 そこで、for文を使いますが、$#sinaというのは、 @sinaの最後の添え字を表しています。 つまり、10個データがあれば、0,1,2・・・・9ですから、$#sinaには9が入ります。 for文で$iを0から$#sinaまで増やすと、データを全部 書き出すのに便利です。 あと、これくらいの事なら、専門書に載ってますので、 もしお買いになってなければ買ってみてはどうでしょうか?

Iam2888
質問者

お礼

どもすみません。ありがとうございます。 その前に自分でfor文でやってみたんですが、どうもうまくいきませんでした。 うまくいかないもんなので、もしかして、htmlのループじたいができないのかと思ったしだいです。 ちなみに、本はいっぱい買い込みました。ただし初心者用です(笑) つまんない質問でどうもすみませんでした、ありがとうございます。

関連するQ&A

  • 半角だけだとtableタグのwidth指定が無効になってしまう。

    半角だけだとtableタグのwidth指定が無効になってしまいます。半角を入力した際にwidth指定を有効にする方法をご教授お願いします。 <TABLE border="1" width="110"> <TBODY> <TR width="110"> <TD width="110">0123456789012345678901234567890123456789</TD> </TR> </TBODY> </TABLE> <BR> <TABLE border="1" width="110"> <TBODY> <TR width="110"> <TD width="110">0123456789012345678901234567890123456789012345678901234567890</TD> </TR> </TBODY> </TABLE>

    • ベストアンサー
    • HTML
  • テーブルサイズ指定

    こんにちは。 困ったことがあるのですが、 <TABLE BORDER="1"CELLSPACING=1 CELLPADDING=1 BGCOLOR="#FFFFFF"> <TBODY> <TR> <TD width=170文字</TD> <TD width=638>文字</TD></TR> <TR> <TD>文字</FONT></TD> <TD>文字</TD></TR> </TR></TBODY></TABLE> <BR> <TABLE BORDER="1"CELLSPACING=1 CELLPADDING=1 BGCOLOR="#FFFFFF"> <TBODY> <TR> <TD width=170>文字</FONT></TD> <TD width=638>文字</TD></TR> <TR> <TD>文字</FONT></TD> <TD>文字</TD></TR> </TBODY></TABLE> (それぞれの文字の長さは違います。) という2つのテーブルで、 2つともテーブルの幅が異なるんです。 これを、両方とも同じ幅にすることはできないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • HTML
  • select ループ

    セレクトBOXの中をループさせて表示したいのですが? 上手く表示されません。 エラーメッセージ ・webサイトがメンテナンス中 ・webサイトにプログラム上の問題が  あると出ます。 下記ソースでおかしいところあれば お教え願えませんでしょうか? <html> <head><title>session.html</title></head> <body> <?php print"<table border="1"><tr>"; print"<td>"; print"<select name=kosu>\n"; for ($i=0; $i<5; $i++){ print"<option value=$i>$i\n"; } print"</select>"; print"</td>"; print"<td><input type=submit value="登録"></td>"; print"</tr>"; print"</table>"; ?> </body> </html>

    • 締切済み
    • PHP
  • カレンダ-の表示

    下記はカレンダ-を表示するプロガラムです、 画面の一番上から表示したいのですが何行か下に表示されます、 一番上から表示するのは、どうしたら良いですか、 よろしくお願いします。 #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>カレンダ-</TITLE>\n"; print "</HEAD>\n"; ########################################## @youbi = ('日', '月', '火', '水', '木', '金', '土'); print "<BODY BGCOLOR=\"WHITE\">\n"; print "<CENTER>\n"; print "<TABLE BORDER=\"0\" cellpadding=\"1\" cellspacing=\"2\"><TBODY><TR VALIGN=\"top\" BGCOLOR=\"BLUE\"><TD>\n"; $tuki = 0; for ($k = 1; $k <= 12; $k++) { print "<TABLE BORDER=\"0\" BGCOLOR=\"BLUE\" cellpadding=\"2\" cellspacing=\"1\" width=25%><TBODY>\n"; print "<TR ALIGN=\"middle\"><TD colspan=\"7\"><FONT SIZE=\"2\" COLOR=\"WHITE\">$year年 $ntuki月</FONT></TD></TR>\n"; print "<TR>\n"; for ($i = 0; $i < 7; $i++) { print "<TH BGCOLOR=\"SKYBLUE\"><FONT SIZE=\"2\" COLOR=\"BLACK\">$youbi[$i]</FONT></TH>\n"; } if (($k == 4) || ($k == 8)){ print "</TBODY></TABLE></TD></TR><BR CLEAR=\"all\"><BR><TR VALIGN=\"top\" BGCOLOR=\"BLUE\"><TD>\n";} elsif ($k == 12) { print "</TBODY></TABLE></TD></TR></TBODY></TABLE><BR CLEAR=\"all\"><BR>\n";} else { print "</TBODY></TABLE></TD><TD>\n";} $kuuhaku = 0; $hiduke = 0; } print "</CENTER>\n"; print "</BODY>\n"; print "</HTML>\n";

    • ベストアンサー
    • CGI
  • for文が全然ループしていない

     下のようなfor文を作って回してみましたが、チェックのために一番最後に書いたPRINT文で「0」が表示され、その下に下線表示だけです。  一体どこが悪いのでしょうか。全く分かりません。  また「$i==9」を「$i=<9」と書いていましたら、エラー表示になりました、何が原因でしょうか。  エディター(TeraPad)の認識に原因があるのでしょうか。  文法のエラー表示は出ていません。  9*9の表を表示させるだけの簡単なコードなのですが。 <html><head><title>make_matrix_html</title></head> <body> <table border="1"> <?php for($i=1;$i==9;$i++){ print ("<tr><br />"); for($j=1;$j==9;$j++){ print ("<td>".($i*$j)."</td>"); } print ("</tr>"); } print ($i*$j); ?> </table></body></html>

    • ベストアンサー
    • PHP
  • 添付のような飾り枠内に箇条書きを配したものを作ったところ、1行目が枠の

    添付のような飾り枠内に箇条書きを配したものを作ったところ、1行目が枠の下端に近づくのですが、枠の内側に均等に余白を入れ、文章全体が中央に行くようにするにはどうしたらよいでしょうか。 <TABLE cellspacing="3" bgcolor="#dfe8bd"> <TBODY> <TR> <TD> <TABLE background="red.gif"> <TBODY> <TR> <TD></TD> <TD height="5"></TD> <TD></TD> </TR> <TR> <TD width="10"></TD> <TD align="center"> <TABLE bgcolor="#e1e9c2" width="100%" cellspacing="2"> <TBODY> <TR> <TD bgcolor="#e6ffe6" width="649" height="147"> <IMG src="tyoutin.gif" width="70" height="90" border="0" hspace="15" vspace="20" align="right"> <dl> <DD>日付 ○○○○○○○○○○○○○○○<br><br> <DD>日付 ○○○○○○○○○○○○○○○<br><br> <DD>日付 ○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○ </dl> </TD> </TR> </TBODY> </TABLE> </TD> <TD width="10"></TD> </TR> <TR> <TD></TD> <TD height="5"></TD> <TD></TD> </TR> </TBODY> </TABLE> </TD> </TR> </TBODY> </TABLE></center>

  • CGI コメント欄の文章を行替えしたいのです

    お世話になります。 野球スコアボードのCGIなのですが、コメント欄の文章がどうしても1列になってしまい、行替えができません。 文章で<br>を書き加えると、1行分のみしか表示されず、改行の2行目以降が表示されません。   以下の構成でどのようにすれば、文章の行替えが可能になりますか? アドバイスよろしくお願い致します。 <tr><td colspan=\"2\"> <font color=white>スコアボード<center> <table border=\"1\" bgcolor=\"#009933\" cellspacing=0 bordercolor=\"black\"> "; for($i=0;$i<@score;$i++){ print "<tr>"; @team_score=split(/,/,$score[$i]); if($i eq 0){ print "<tr>"; for($s=0;$s<@team_score;$s++){ if($s eq 0){ print "<td width=80> <font color=\"white\"> <center><i>チーム名 </td>"; }else{ print "<td width=\"20\"> <font color=\"white\"> <center><i>$s </td>"; } } print "<td width=40><font color=\"white\"><center><i>合計</td>"; print "</tr><tr>"; } $point=0; for($j=0;$j<@team_score;$j++){ print "<td><font color=\"white\">"; print"<center>"; if($team eq $team_score[$j]){ print "<b>" } print"$team_score[$j]</td>"; if($j eq 0){ }else{ $point=$point+$team_score[$j]; } } if($cnt[$i-1] eq $j || $i eq 0){ print "<td><font color=\"white\"><center>$point</td>"; }else{ print "<td> <font color=\"white\"><center>× </td> <td> <font color=\"white\"><center>$point </td>"; } print "</tr>"; $cnt[$i]=$j; } print "</table><p></td></tr>"; print "<tr><td bgcolor=\"#778899\" height=100> <font color=white>コメント </td> <td bgcolor=\"#f8f8ff\"> $cmt[$p] </td></tr>"; print "</table>"; print "<p><hr width=500><p>"; } } print " </body></html>"; exit;

    • ベストアンサー
    • CGI
  • ASP修正について

    下記のソースを書いています。 印刷ボタンと閉じるボタンがうまく表示されない。ボタンクリック表示されない。 不要なところは削除してもかまいません。 教えてください。 sResult = sResult & _ " </TR></TBODY></TABLE><BR>" & _ "<TABLE border=^0^><TBODY>" & _ " <TR>" & _ " <TD width=^354^><FONT size=^-1^ color=^#0099ff^></FONT></TD>" & _ " </TR><TR>" & _ " <TD><FONT size=^-1^>" & _ "  " & _ "  " & _ "  " & _ "  " & _ "  " & _ "  </FONT></TD>" & _ " </TR>" & _ "</TBODY></TABLE>" & _ "<input type=^button^ value=^印 刷^ onclick=^window.print()^>  <input type=^button^ value=^とじる^ onclick=^link()^>" & _ "<BR><BR><TABLE border=^0^ align=^center^><TBODY>" & _ " <TR><TD align=^center^>" & _ " <br><B>処理が完了しました。ご依頼ありがとうございます。<BR>" & _ " [印刷] ボタンをクリックすると、このページの内容をプリントアウトできます。<BR>" & _ " [印刷] ボタンが表示されない場合は、ブラウザの印刷機能をご利用ください。</B>" & _ " </TD></TR>" & _ "</TBODY></TABLE>" & _ "<BR></CENTER>" & _ "<TABLE border=^0^><TBODY>" & _ " <TR><TD><FONT size=^-1^>" & _ " " & _ " </FONT></TD>" & _ " </TR>" & _ "</TBODY></TABLE>" & _ "<BR></FONT>" & _ "<TABLE border=^0^ width=^660^ cellpadding=^1^ align=^center^><TBODY>" & _ " <TR><TD width=^911^ align=^center^>" & _ " <A href=^^>" & _ " <IMG src=^img/index.gif^ alt=^indexページへ^ border=^0^ height=^20^ width=^80^ align=^center^></A>" & _ " </TD></TR>" & _ "</TBODY></TABLE>" & _ "</FORM></BODY>" & _ "</L>"

  • tableでレイアウトが崩れる場合

    技術の足りなさからCSSにできなかったので、再度テーブルでサイズを指定してやってみようとしているところです。 どこかの数字がおかしくなっていると思うのですが、どうしてもわかりません。 ちゃんと表示できるブラウザとそうでないブラウザがあり、Firefoxは環境設定により表示が崩れる場合があります。 使用ソフトはビルダーの11です。 なんでも良いのでどうぞアドバイスをよろしくお願い致します。 <body> <div ALIGN="center"> <table> <tbody> <tr> <td CLASS="td4" HEIGHT="70"> <table WIDTH="600" CELLSPACING="1" CELLPADDING="0"> <tbody> <tr> <td VALIGN="top" CLASS="td1" WIDTH="400" ALIGN="left" HEIGHT="180"> <b>文字 <textarea ROWS="15" COLS="70">文字</textarea><br> <br> </td> <td VALIGN="top" CLASS="td1" WIDTH="100" HEIGHT="180"> <table CELLSPACING="0" CELLPADDING="4"> <tbody> <tr> <td CLASS="td2" HEIGHT="16" WIDTH="100">文字</td> </tr> </tbody> </table> 文字 <br> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br> </div> </body>

    • ベストアンサー
    • HTML
  • テーブルの隙間をなくす

    テーブルの中に作ったテーブルを一番上に配置したいのですが、どうすれば良いでしょうか?テーブルの下で改行すると上に行くのですが、それだとしたがあまります。 HTMLはこれです。よろしくお願いします。 <table width="800" border="0" cellspacing="0" cellpadding="0" height="600"> <tr> <td> <TABLE width="100%"> <TBODY> <TR> <TD width="241" height="2">  </TD> <TD width="511" align="right" valign="bottom" style="font-size : 8pt;" height="2"> </TD> </TR> </TBODY> </TABLE> </td> </tr> </table>

    • ベストアンサー
    • HTML