解決済みの質問
▽ソースはこんな感じです。(商品アの在庫表の場合)
//まず、横軸に1~月最終日までの日付を入れる(ここはOK)
$da = 1;
$da2 = $date_of_month;
for($i=$da; $i<=$da2; $i++){
//データベースの在庫数を抽出、日付順に並べる
//データには、それぞれidを振ってありそれをキーにしています
$query="SELECT * FROM zaiko WHERE path = '商品(ア)'
and date='$year-$month-$i' order by date";
$result = pg_exec($pg, $query);
$在庫数 = pg_result($result, 0, 6);
$id = pg_result($result, 0, 0);
//前日の在庫数を出す
//次の行で今日-1で前日
$i2 = $i-1;
$query="SELECT * FROM zaiko WHERE path = '商品A'
and date='$year-$month-$i2' order by date";
$result = pg_exec($pg, $query);
//以上を元に累計を計算
$仕入れ数(A) = pg_result($result, 0, 4);
$前日在庫数(B2) = pg_result($result, 0, 6);
$在庫数(B) = $前日在庫数(C2)+$仕入れ数-$売れた数;
$sql="UPDATE zaiko SET pnumber='$pnumber' WHERE id='$id' ";
$result=pg_exec($pg, $sql);
if (!$result){
echo "処理に失敗しました";
pg_close($pg);
exit;
}
echo "<td width=40 align=right bgcolor=#FFFFFF>$在庫数(C)</td>";
}
これでやると、1度目はうまく計算&表示されるのですが、
ページをリロードしたりすると、
累計数が変わってしまいます。
1度目の計算で表示された最終日の在庫数が、
1日の在庫数に入ってしまうようにも見えますが、
どういう仕組みで、変わってしまうのかわからないのです。
どうぞよろしくお願いいたします。
関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=485588
投稿日時 - 2003-02-28 14:04:46
> 1度目の計算で表示された最終日の在庫数が、
> 1日の在庫数に入ってしまうようにも見えますが、
おっしゃるとおり、ただ単におなじクエリを2度出しているんじゃないですか?
ページがリロードされれば、当然そこへ書かれているプログラムがサイド実行されます。
こういうことを避けるために、
1.クエリするSQL文をいったんセッションに登録する。
2.クエリが実行されたら(ページが開いたら)そのセッションを破棄する。
これで大丈夫だと思います。
# 試してないので悪しからず
投稿日時 - 2003-02-28 14:23:50
補足
mirurinさん、kusukusuさん、ご回答大変ありがとうございます。
昨日から早速ご指摘を参考に修正作業に入っています。
うまく進展できたら、すぐご報告させていただきます。
投稿日時 - 2003-03-01 13:44:57
1人が「このQ&Aが役に立った」と投票しています
OKWaveのオススメ
おすすめリンク