KENT-WEB サポートコーナー 過去ログ [ 0469 ]


記事No: 8834
投稿日: 2011/07/24(Sun) 11:36:43
タイトルCSVファイルをHPに表示する方法について
ID情報: akari55
投稿者: あかり
URLhttp://iimonookinawanomegumi.info

サンプル大全集を購入して勉強中です。ありがとうございます。
大体の改造等ができます。もう少し教えてください。
表題の件についてcsvファイルの内容を表記したいです。何度試してもcsvファイルが表記できません。ご伝授ください。
(サンプル大全集のP219のカート3の商品情報を管理画面から登録できるようにしようは、改造できました。後はこころクリアしたいです。)
使うファイルは3つです。

1.average.cgi

#!C:/strawberry/perl/bin/perl.exe

#宣言
$tmpl_list = "./list.html";


# CSVデータを読む
my (@name,@koku,@ei,@suu);
open(IN,"average.csv");
while(<IN>) {
chomp;
my($id,$name,$koku,$ei,$suu) = split(/,/);

#名前、国語、英語、数学をハッシュ化
$name{$id}=$name;
$koku{$id}=$koku;
$ei{$id}=$ei;
$suu{$id}=$suu;
}
close(IN);

# テンプレートの読み込み
print "Content-type: text/html\n\n";
my ($flg,$loop);
open(IN,"$tmpl_list");
while(<IN>) {
if (/<!-- list_begin -->/) {
$flg = 1;
next;
}
if (/<!-- list_end -->/) {
$flg = 0;





# テンプレートへの挿入
my $tmp = $loop;
$tmp =~ s/!id!/$id/;
$tmp =~ s/!name!/$name{$id}/;
$tmp =~ s/!koku!/$koku{$id}/;
$tmp =~ s/!ei!/$ei{$id}/;
$tmp =~ s/!suu!/$suu{$id}/;

print $tmp;

next;
}
if ($flg) {
$loop .= $_;
next;
}
s/!tmpl_list!/$tmpl_list/;
print;
}
close(IN);

exit;

[EOF]

2.average.csv

1山田807569
2鈴木557075
3佐藤717389
4花田606563
5中島667882
6鶴岡919088

3.list.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<meta http-equiv="content-style-type" content="text/css">
<style type="text/css">
<!--
.panel {
background: #ddd;
}
.panel-item {
text-align: center;
padding: 4px;
}
.panel-now {
text-align: center;
color: #FF8000;
padding: 4px 6px;
}
.panel-step {
text-align: center;
color: #666;
padding: 4px 6px;
}
.cart-list {
margin-top: 0.2em;
margin-bottom: 1em;
border-collapse: collapse;
border: solid 1px #999;
}
.list-item {
border: solid 1px #999;
padding: 4px 6px;
background: #E5EAFF;
}
.list-data {
border: solid 1px #999;
padding: 4px 6px;
background: #fff;
}
-->
</style>
<title>ショッピングカート</title>
</head>
<body>
<h3>ショッピングカート</h3>

<table class="panel">
<tr>
<td class="panel-item">買物カゴ</td>
<td class="panel-item">→</td>
<td class="panel-item">情報入力</td>
<td class="panel-item">→</td>
<td class="panel-item">確認画面</td>
<td class="panel-item">→</td>
<td class="panel-item">買物完了</td>
</tr>
<tr>
<td class="panel-now">■</td>
<td></td>
<td class="panel-step">■</td>
<td></td>
<td class="panel-step">■</td>
<td></td>
<td class="panel-step">■</td>
</tr>
</table>

<p>▼買物カゴの中身は以下のとおりです。</p>
<table class="cart-list">
<tr>
<th class="list-item">id</th>
<th class="list-item">名前</th>
<th class="list-item">国語</th>
<th class="list-item">英語</th>
<th class="list-item">数学</th>
<th class="list-item">変更</th>
</tr>

<!-- list_begin -->
<tr>
<td class="list-data">!id!</td>
<td class="list-data">!name!</td>
<td align="right" class="list-data">!koku!</td>
<td align="right" class="list-data">¥!ei!</td>
<td align="right" class="list-data">¥!suu!</td>
<td align="center" class="list-data">!change!</td>
</tr>
<!-- list_end -->

</table>
<p></p>

</body>
</html>


記事No: 8837
投稿日: 2011/07/24(Sun) 17:30:44
タイトルRe: CSVファイルをHPに表示する方法について
ID情報: akari55
投稿者: あかり
URLhttp://iimonookinawanomegumi.info

すみません。average.cgiを間違えました。
こちらでお願いします。


1.average.cgiのファイルの内容です。

#!C:/strawberry/perl/bin/perl.exe

#宣言
$tmpl_list = "./list.html";


# CSVデータを読む
my (@name,@koku,@ei,@suu);
open(IN,"average.csv");
while(<IN>) {
chomp;
my($id,$name,$koku,$ei,$suu) = split(/,/);

#名前、国語、英語、数学をハッシュ化
$name{$id}=$name;
$koku{$id}=$koku;
$ei{$id}=$ei;
$suu{$id}=$suu;
}
close(IN);

# テンプレートの読み込み
print "Content-type: text/html\n\n";
my ($flg,$loop);
open(IN,"$tmpl_list");
while(<IN>) {
if (/<!-- list_begin -->/) {
$flg = 1;
next;
}
if (/<!-- list_end -->/) {
$flg = 0;





# テンプレートへの挿入
my $tmp = $loop;
$tmp =~ s/!id!/$id/;
$tmp =~ s/!name!/$name{$id}/;
$tmp =~ s/!koku!/$koku{$id}/;
$tmp =~ s/!ei!/$ei{$id}/;
$tmp =~ s/!suu!/$suu{$id}/;

print $tmp;

next;
}
if ($flg) {
$loop .= $_;
next;
}
s/!tmpl_list!/$tmpl_list/;
print;
}
close(IN);

exit;



記事No: 8840
投稿日: 2011/07/24(Sun) 19:51:39
タイトルRe^2: CSVファイルをHPに表示する方法について
ID情報: kent
投稿者: KENT

> すみません。average.cgiを間違えました。
> こちらでお願いします。

よく意味がわからないのですが、科目成績と買物カートで何をしようとしているのですか?
CSVファイルもコンマで区切られていないようですし・・。

ざっと見た感じでは、

# テンプレートへの挿入
my $tmp = $loop;
$tmp =~ s/!id!/$id/;
$tmp =~ s/!name!/$name{$id}/;
$tmp =~ s/!koku!/$koku{$id}/;
$tmp =~ s/!ei!/$ei{$id}/;
$tmp =~ s/!suu!/$suu{$id}/;

のところで、変数$idに当てはまる値がないようですが。


記事No: 8845
投稿日: 2011/07/25(Mon) 01:44:30
タイトルRe^3: CSVファイルをHPに表示する方法について
ID情報: akari55
投稿者: あかり
URLhttp://okinawanomegumi.info

初めてなので見よう見まねです。
こうすればいいのかなという感じで作成しました。
あんまり内容がわかっていません。
作成しようとする目的はcsvファイルの中身をHTMLの表の中にcsvファイルの内容を表示をしたいだけです。

csvファイルは大丈夫です。エクセルで立ち上げそのままコピーしたのでカンマは入っていませんが、実際はカンマは入っています。すみません。

書籍に掲載されているショッピングカートは、価格が固定されている商品に対しては有効で自由に変更ができます。しかし、価格が変動する商品に対しては変動したときに変更のアップロードが必要でその手間を省きたいと考えました。
 HP上の管理画面で商品情報を変更できるのだから、HPの画面に修正した商品情報に変わってほしいのです。
 科目成績のcsvファイルを使用して、買い物シートに掲載できたら商品登録情報で自由に項目を自由に追加したり、訂正できたらWEBアプリができると考えました。
 だから、簡単なcsvファイルをHTMLに掲載しようと考えました。

 初めてパールを使うのでわからないことばかりです。
 いろいろな書籍を読んで試行錯誤しています。
 P219で商品情報の項目の追加がcsvででき、一覧表にできました。しかし、最新情報のCSVファイルを読み込んでHTMLを自由に表示できれば価格変動型(時価ものの生魚)の買い物シートが作れると考えました。

見ていただいてありがとうございます。
変数$idに当てはまる値がないという言葉がわかりません。初めてなのでケントさんの本を読んでみよう見真似で作成しています。
前に宣言みたいなものをしないといけないのでしょうか?csvファイルをHTMLのファイルに挿入する方法を教えてください。


記事No: 8846
投稿日: 2011/07/25(Mon) 07:50:01
タイトルRe^4: CSVファイルをHPに表示する方法について
ID情報: kent
投稿者: KENT

> 前に宣言みたいなものをしないといけないのでしょうか?csvファイルをHTMLのファイルに挿入する方法を教えてください。

Perlの場合は、宣言はなくても構いません。
単純に、CSVファイルの中身を画面に表示させるだけならば、次のようなものになると思います。
後はご自分でお願いいたします。

[ item.csv ]
1,たい,2000
2,スズキ,1200
3,鮪,1500

[ item.cgi ]
#!C:/strawberry/perl/bin/perl.exe

print "Content-type: text/html\n\n";
print "<html><body>\n";

open(IN,"item.csv");
while(<IN>) {
my ($id,$name,$price) = split(/,/);

print "$name $price円<br>\n";
}
close(IN);

print "</body></html>\n";
exit;


記事No: 8851
投稿日: 2011/07/26(Tue) 05:32:45
タイトルRe^5: CSVファイルをHPに表示する方法について
ID情報: akari55
投稿者: あかり
URLhttp://okinawanomegumi.info

ありがとうございます。表記はできました。
やりたいのは、htmlに表記をしたいです。
後はがんばってみます。(なかなかhtmlの中に表記ができないです。本を読んでみます。)

item.cgi

#!C:/strawberry/perl/bin/perl.exe
$tmpl_list = "./list.html";
print "Content-type: text/html\n\n";
print "<html><body>\n";

# csvの読み込み
open(IN,"item.csv");
while(<IN>) {
my ($id,$name,$price) = split(/,/);
print "$id $name $price円<br>\n";
}
close(IN);

# テンプレートへの表示
my ($flg,$loop);
open(IN,"$tmpl_list");
while(<IN>) {
if (/<!-- list_begin -->/) {
$flg = 1;
next;
}
if (/<!-- list_end -->/) {
$flg = 0;

# ここに何か入ると思いますのでがんばります。

my $tmp = $loop;
$tmp =~ s/!id!/$id/;
$tmp =~ s/!name!/$name/;
$tmp =~ s/!price!/$price/;
print $tmp;
next;
}
if ($flg) {
$loop .= $_;
next;
}
s/!tmpl_list!/$tmpl_list/;
print;
}
close(IN);

print "</body></html>\n";

exit;


[検索ページ]