こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPの演算からファイルに書き込みまで

PHP初心者のものです。すみません、自分でもしらべたのですが、どうしても解決できなかったので質問させてください。単純にボタンを押すごとにテクストにある数字を減数させていく簡単なプログラムを作りたいんですけど、
どうもうまくいきません。
最初に、180とデータに入力して、最初のうちはボタンを押すごとに5づつ減数されているのですが、桁が2桁になるとき(89とか90にまで減数とか)にかならず、980とかの数字に増数してしまいます。桁数が変わる直後でどうも変な感じになってしまいます。どちらさまかわかるかたいらしゃったら、時間の空いているときにでもお教えください。

OS:XP
PHP:5.0
サーバ:apache
PHPのコードは下のようになっていて、count.txtを、データファイルとして使ってます。





<html>
<head>
<title>減数</title>
<body>
<h2>うにゅ</h2>

<!-- 【フォームよりデータ送信】 -->
<form name="form" action="./A.php" method="POST">
<input type="submit" value="縮小">
</form>
<p>現在の数は </p>
<b>
<?php
$CountFilePath = "./count.txt";
$fp = fopen($CountFilePath , "r+");
$count = fgets($fp,5);
rewind($fp);
fputs($fp,$count-5);
fclose($fp);
print $count;
?>

</b>です。
<p><hr></p>
</body>
</html>

投稿日時 - 2007-02-26 00:04:35

QNo.2784308

暇なときに回答ください

質問者が選んだベストアンサー

> $fp = fopen($CountFilePath , "r+");
> $count = fgets($fp,5);
> rewind($fp);
> fputs($fp,$count-5);
> fclose($fp);

これは3桁から2桁になったとき、ファイルの先頭の2桁だけ書くので
後ろの3桁目がゴミで残っていますね。

トランケテートしてファイルを短くします。

$fp = fopen($CountFilePath , "r+");
$count = fgets($fp,5);
rewind($fp);
ftruncate ($fp, 0);
fputs($fp,$count-5);
fclose($fp);

投稿日時 - 2007-02-26 00:48:43

お礼

なるほど、ゴミがたまってだめなんですね〆(∇ ̄〃) 。
トランケートというのをやってみましたらちゃんとできました。
ほんとうにありがとうございます!助かりました。

投稿日時 - 2007-03-15 21:31:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問