OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

ブラウザ上でsprintf関数の表示がうまくいかないのですが・・・。

  • すぐに回答を!
  • 質問No.131509
  • 閲覧数108
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 0% (0/3)

はじめまして、Perlをはじめたばかりの初心者です。
 
質問はCGIでOracleのデータベースにアクセスしその結果を
ブラウザ上で表示するというものなのですがこれが思ったように表示
できません。

結果を
1234     35687   98758
123458   7895    5783
  ・        ・       ・
  ・        ・       ・ 
という感じで綺麗に並べて表示したいのです。
そこで私は
       ・
       ・
while (@aRes = $hSt->fetchrow){
$a = sprintf("%-18s","$aRes[0]");
$b = sprintf("%-18s","$aRes[1]");
$c = sprintf("%-18s","$aRes[2]");
print "$a"."$b"."$c"."\n";
}
と記述したところ、上記に書いたような結果をえる事ができました。

しかし、HTML文も一緒に盛り込みたかったので、
print "Content-type: text/html\n\n";
と記述したところ、先ほどの結果が

12343568798758
12345878955783

のようにくっついてしまい、うまくいきません。

HTML形式で表示した場合、うまくsprintfでは表示できないのでしょうか?
もしくは、HTML文で同じ様に文字列を並べて表示するものがあるの
でしょうか?

どうしても、データベースの結果をHTML形式で綺麗に並べて表示したいのです。

よろしくお願いいたします。
  
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 40% (237/589)

HTML では、複数の(半角)空白が続いても1個の空白と見なされてしまうので、 普通に書くとくっついてたように見えます。 一つの方法として、ループの前に <PRE>、後ろに </PRE> を出力するようにすれば、固定ピッチで表示されるので、うまくいくと思いますが… print "<PRE>\n"; 数値を表示する処理 print & ...続きを読む
HTML では、複数の(半角)空白が続いても1個の空白と見なされてしまうので、
普通に書くとくっついてたように見えます。

一つの方法として、ループの前に <PRE>、後ろに </PRE> を出力するようにすれば、固定ピッチで表示されるので、うまくいくと思いますが…

print "<PRE>\n";
数値を表示する処理
print "</PRE>\n";

のような感じです。


  • 回答No.2

 あともう1つ。  これは Perl ではなく、HTMLの仕様です。  ですので、スペースの代わりに &nbsp; を使えば綺麗になります。  HTMLでは大部分のスペース文字は飛ばされてしまいますが、&nbsp; はスペースを表す文字で、飛ばされません。
 あともう1つ。

 これは Perl ではなく、HTMLの仕様です。
 ですので、スペースの代わりに &nbsp; を使えば綺麗になります。
 HTMLでは大部分のスペース文字は飛ばされてしまいますが、&nbsp; はスペースを表す文字で、飛ばされません。
  • 回答No.3
レベル5

ベストアンサー率 33% (1/3)

sprintfでうまくいかない理由はNo1,No2のかたが言っているので私はブラウザできれいに表示する方法を 結論から言えばテーブルを使います 以下は参考のスクリプトです。何かの役に立てば良いです。 ローカルのでの作業のため、配列の構成等は変えています ------------ [table.pl] @test = ( "1:2:3", "11:22: ...続きを読む
sprintfでうまくいかない理由はNo1,No2のかたが言っているので私はブラウザできれいに表示する方法を

結論から言えばテーブルを使います
以下は参考のスクリプトです。何かの役に立てば良いです。
ローカルのでの作業のため、配列の構成等は変えています
------------

[table.pl]
@test = (
"1:2:3",
"11:22:33",
"111:222:333",
"1111:2222:3333"
);

print "<table border=\"0\">\n";
foreach (@test){
@aRes = split ":",$_;
print <<END_TBL;
<tr>
<td>$aRes[0]</td>
<td>$aRes[1]</td>
<td>$aRes[2]</td>
</tr>
END_TBL
}
print "</table>\n";
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ