6.おにぎりチェーン

参照 URL http://horiuchi.akira.ne.jp/cgi/rei-06.html
■概要  ここでは "おにぎり" 例にとっていますが、一般に複数の場所にある個別の売り上げや在庫状況を リアルタイムで知る1つの方法を示しています。1画面に表示できる個数には限界があるので、「ボ タン」によって、フレーム画面を切り換えるか、複数のアドレスに情報を割り振ればかなりの個数の 情報を一覧することができます。入力部分は簡略化できるので、携帯電話用に入力フォームをつくれ ば、全国どこにいても情報を発信することができます。新製品の売れ行き情報のチェックに利用して みるのもよいと思います。 一覧表画面 ■データファイルの変化 * 書面の都合上改行されていますが、実際は1行のデータです。 rei-06-shiten.txt
八重洲,0,0,0,0,0,0,0,0,0;新宿西,0,0,0,0,0,0,0,0,0;新宿東,0,0,0,0,0,0,0,0,0;
渋谷ハチ公,0,0,0,0,0,0,0,0,0;池袋西,0,0,0,0,0,0,0,0,0;
サンシャイン,0,0,0,0,0,0,0,0,0;自由が丘,0,0,0,0,0,0,0,0,0

  ・
  ・
  ・
八重洲,15,12,18,14,8,16,4,21,108;新宿西,31,22,15,43,28,19,18,30,206;新宿東,28,19,17,34,31,23,12,35,199;
渋谷ハチ公,18,12,8,23,14,12,19,17,123;池袋西,14,19,12,24,16,7,3,18,113;
サンシャイン,26,14,9,21,14,18,12,21,135;自由が丘,12,16,11,18,17,20,14,18,126
外枠を構成する HTML rei-06.html
<HTML>
<HEAD>
<TITLE>Rei 06</TITLE>
</HEAD>
<BODY BGCOLOR="#7ffffe">
<BR>
<CENTER>
<H2> おにぎりチェーン ASUKA</H2>
<H4>売り上げ一覧表 / 2003.4.1</H4>
<P>
<iFRAME SRC="rei-06.cgi" NAME="uriage" WIDTH="640" HEIGHT="250"></iFRAME>

<FORM ACTION="rei-06.cgi" TARGET="uriage">
<PRE>
<H5>
 <SELECT NAME="shiten">
<OPTION VALUE="">▼支店</OPTION>
<OPTION VALUE="0">八重洲</OPTION>
<OPTION VALUE="1">新宿西</OPTION>
<OPTION VALUE="2">新宿東</OPTION>
<OPTION VALUE="3">渋谷ハチ公</OPTION>
<OPTION VALUE="4">池袋西</OPTION>
<OPTION VALUE="5">サンシャイン</OPTION>
<OPTION VALUE="6">自由が丘</OPTION>
</SELECT> おかか <INPUT SIZE="5" NAME="okaka"> ツナ <INPUT SIZE="5" NAME="tuna"> 梅 <INPUT SIZE=
"5" NAME="ume"> 鮭 <INPUT SIZE="5" NAME="sake"> イクラ <INPUT SIZE="5" NAME="ikura">

 明太子 <INPUT SIZE="5" NAME="mentai"> 鶏五目 <INPUT SIZE="5" NAME="tori"> カルビ <INPUT SIZE=
"5" NAME="karubi"> <INPUT TYPE="submit" VALUE="送信">  <INPUT TYPE="reset" VALUE=
"リセット"> / 変更点を送信</H5></PRE>
</FORM>
</BODY>
</HTML>
スタート時のフレーム CGI / 現在の状況を表示 rei-06.cgi
#!/usr/local/bin/perl

require 'cgi-lib.pl';
&ReadParse(\%moji);

# 支店データの読み込み
  open F,"+<rei-06-shiten.txt";
  @data = split ";", <F>;

# 売り上げデータの更新
  @koshin = split /,/, $data[$moji{shiten}];
  @gu = qw (okaka tuna ume sake ikura mentai tori karubi);
  for (@gu) {$koshin[++$i] = $moji{$_} if $moji{$_} ne ""}

# 横計の再計算
  for (1..8) {$yoko += $koshin[$_]}  
  $koshin[9] = $yoko;

# 支店データの書き込み
  $data[$moji{shiten}] = join ",", @koshin;
  $data2 = join ";", @data;
  seek F,0,0;
  print F "$data2";
  close F;

# 縦計の計算
  $tate[0] = '小   計';
  for (@data) {
    @gyo = split /,/;
    for (1..9) {$tate[$_] += $gyo[$_]}}
  $data[7] = join ",",@tate;

# 出力リストの作成
  @top = split /, /, "支店 / 品目, おかか, ツナ, 梅, 鮭, イクラ, 明太子, 鶏五目, カルビ, 小 計";
  for (@top) {$row .= "<TH>$_</TH>"}
  $uriage[0] = qq |<TR BGCOLOR="#8080ff">$row</TR>\n|;
  for (@data) {
    undef $row;
    @temp = split /,/;
    $row = "<TD>$temp[0]</TD>";
    for (1..9) {$row .= "<TD>$temp[$_]</TD>"}
    push @uriage,"<TR>$row</TR>\n"}

# 本文
print &PrintHeader;
print <<EOH;
<HTML>
<HEAD>
<meta http-equiv="Content-Type" Content="text/html; charset=SHIFT_JIS">
<TITLE>Rei 06</TITLE>
</HEAD>
<BODY BGCOLOR="#00ff00">
<CENTER>
<TABLE FRAME="hsides" CELLSPACING="0" CELLPADDING="4" BORDERCOLOR="#0a0c5e" 
 STYLE="font-family:'MS ゴシック'; font-size:9pt">

<COLGROUP  SPAN="10" ALIGN="right" WIDTH="50">
<COL ALIGN="left" BGCOLOR="#ff8080" WIDTH="85"><COL SPAN="8" BGCOLOR="#e7e896">
<COL BGCOLOR="#ffc0c0" WIDTH="55">
</COLGROUP>

@uriage
</TABLE>
</CENTER>
EOH
print &HtmlBot;