Hello,
<?php
$Minus = 2;$datei = fopen("geld.php","r+");
$Konto = fgets($datei, 5); ### liest 5 Zeichen inclusive der Zeilenende-Zeichen
$Konto = $Konto - $Minus;
echo $Konto;
rewind($datei);
fwrite($datei, $Konto);
fclose($datei);?>
Ich vermute, dass es an fgets() liegt.
http://de3.php.net/manual/en/function.fgets.php
<cite>Reading ends when length - 1 bytes have been read, on a newline (which is included in the return value), or on EOF (whichever comes first). If no length is specified, it will keep reading from the stream until it reaches the end of the line.</cite>
Wenn die Zeile durch ein CRLF abgeschlossen ist, dann bleiben für die Zahl eventuell sogar nur n-2 Zeichen übrig.
Um Zahlen in einer Datei abzuspeichern, sollte man sich auf ein Format festlegen, z.B. immer 16 Zeichen für jede Zahl. Diese werden ja bei PHP, wenn man nichts anderes bestimmt ( siehe http://de3.php.net/manual/en/function.pack.php ) als Strings abgespeichert, also in ihren Ziffernzeichen.
Nimm besser fread() zum auslesen der Datei. Das liest genau soviele Zeichen, wie man vorgibt, wenn sie denn in der Datei enthalten sind. Fülle die Zahl vor dem Wegschreiben auf eine definierte Stringlänge auf
http://de3.php.net/manual/en/function.str-pad.php oder mit einer eigenen Funktion.
Liebe Grüße
Tom vom Berg
Nur selber lernen macht schlau