3

Perl CGI と SQLite をいじってみました。このようなものが仕事をすることができると思いました。

my $res = $dbh->selectall_arrayref("SELECT name, surename, phone FROM status;"),
print $cgi->table(
$cgi->Tr(
    { -align => "CENTER", -valign => "TOP" },
    $cgi->th( [ 'Name', 'Surename', 'Phone' ] )
),
foreach my $row (@$res){
    ( $name, $surename, $phone ) = @$row,
    print $cgi->Tr( $cgi->td($name), $cgi->td($surename), $cgi->td($phone) ),
  }
);

HTML ドキュメントのテーブルを手動で作成する必要がありますか?

4

2 に答える 2

1

CGI モジュールの POD に慣れておく必要があります。そこには、テーブル作成の例があります。

print table({-border=>undef},
           caption('When Should You Eat Your Vegetables?'),
           Tr({-align=>'CENTER',-valign=>'TOP'},
           [
              th(['Vegetable', 'Breakfast','Lunch','Dinner']),
              td(['Tomatoes' , 'no', 'yes', 'yes']),
              td(['Broccoli' , 'no', 'no',  'yes']),
              td(['Onions'   , 'yes','yes', 'yes'])
           ]
           )
        );

例からわかるように、テーブルに入れる材料を指定する必要があります。CGI モジュールの HTML タグ ヘルパーは魔法のようなものではありません。それらは、それらが表す HTML を厳密に反映する単なる Perl 関数 (モジュールの使用方法によってはメソッド) です。<table><tr><th>...HTMLを入力する必要がある場合、タグ ヘルパーはtableTrthなどである必要があります。出力を取得する HTML がブラウザーに理解できる限り、ループ内でタグまたはタグ ヘルパーの組み合わせを使用しても問題ありません。

CGI モジュールを使用するスクリプトは、コマンド ラインから実行できます。これは、生の HTML をダンプして画面を確認できるため、優れたデバッグ ツールです。

于 2012-07-13T07:28:05.533 に答える
0

答えは断然NOです。次の 2 行のコード:

my $cats = $db->selectall_arrayref("select * from pubs..authors");
print map { $q->Tr(undef, $q->td($_)) ."\n"} @$cats;

あなたに与えます(まあ、私..)

<tr><td>172-32-1176</td> <td>White</td> <td>Johnson</td> <td>408 496-7223</td>     <td>10932 Bigge Rd.</td> <td>Menlo Park</td> <td>CA</td> <td>94025</td> <td>1</td></tr>
<tr><td>213-46-8915</td> <td>Green</td> <td>Marjorie</td> <td>415 986-7020</td> <td>309 63rd St. #411</td> <td>Oakland</td> <td>CA</td> <td>94618</td> <td>1</td></tr>
<tr><td>238-95-7766</td> <td>Carson</td> <td>Cheryl</td> <td>415 548-7723</td> <td>589 Darwin Ln.</td> <td>Berkeley</td> <td>CA</td> <td>94705</td> <td>1</td></tr>
.... and however many more authors from pubs

完全を期すために、hashrefを使用すると、次のようにヘッダーを引き出すことができます

my $cats = $db->selectall_hashref("select * from pubs..authors", [ au_id]);

my @rows = values %$cats; # array of hashes now

print $q->Tr(undef, $q->th([keys( %$rows[0] )])),"\n"; #borrow keys from first guy 
print map { $q->Tr(undef, $q->td( [ values(%$_) ] ) ),"\n"; }  @rows;
于 2013-09-22T10:52:53.980 に答える