Seite 1 von 2
Probleme mit Counter rückwährtszählen
Verfasst: 23.06.2006, 10:16
von Matze1963
Hallo!
Ich weis nicht ob ich hier richtig bin aber da ja viele Ihre Hompage selber programieren frage ich mal.
<?
$datei = fopen("../eintraege/neue/counter.txt","r+");
$counterstand1 = fgets($datei, 10);
$counterstand1--;
rewind($datei);
echo $counterstand1;
fwrite($datei, $counterstand1);
fclose($datei);
?>
Mit $counterstand1++ funktioniert das zuzählen wunderbar doch beim rückwährtszählen macht er mir nach 10 eine 90 und nicht die 9.
Vieleicht weiss ja von euch jemand weiter.
Cu Matze
Re: Probleme mit Counter rückwährtszählen
Verfasst: 23.06.2006, 10:44
von haha
Matze1963 hat geschrieben:Code: Alles auswählen
02 $datei = fopen("../eintraege/neue/counter.txt","r+");
03 $counterstand1 = fgets($datei, 10);
04 $counterstand1--;
05 rewind($datei);
06 echo $counterstand1;
07 fwrite($datei, $counterstand1);
Mit $counterstand1++ funktioniert das zuzählen wunderbar doch beim rückwährtszählen macht er mir nach 10 eine 90 und nicht die 9.
Gib mal den Inhalt von $counterstand1 zwischen Zeile 3 und Zeile 4 mittels var_dump() aus, jeweils von 11 abwärts zählend bis der Fehler auftritt.
Falls Du nicht gleich drauf kommst, überlege Dir, was oder genauer gesagt wieviel fwrite() in eine Datei schreibt und was bzw. wieviel vorher in der Datei drin war.
Verfasst: 23.06.2006, 10:51
von Matze1963
Hi!
Ja in der Variable gibt er ja den richtigen Wert aus. Aber in der Textdatei steht dann später nach 10 die 90.
Cu Matze
Verfasst: 23.06.2006, 10:55
von derHund
Lies den Post von haha bitte nochmal, notfalls schreib mal etwas anderes (ein Wort etc.) in die Datei, bevor die 9 hineingeschrieben wird (Code anpassen). Siehstes?
Verfasst: 23.06.2006, 10:57
von Matze1963
Hi!
Ja ich weiss weshalb er aus der 1o eine 90 macht weil bei rewind die Datei auf anfang gesetzt wird dann schreibt er eine 9 dazu und die Null von der Zehn ist noch da > deshalb die Neuzig. Aber ich weiss nicht wie ich das ändern könnte.
Cu Matze
Verfasst: 23.06.2006, 10:59
von Bogomir
Hallo,
Problem sollte sein, daß die Datei nicht kleiner wird, also nach der 10 eine 9 an die erste Stelle geschrieben wird. Die 0 wird nicht überschrieben. Versuchs einfach mal mit fwrite($datei, $counterstand1." ");
LG
Bogomir
Verfasst: 23.06.2006, 11:00
von Bogomir
... bzw
fwrite($datei, "$counterstand1 ");
Verfasst: 23.06.2006, 11:01
von Kristian
Hallo
Du willst die Datei löschen, bevor du neuen Kontent reinschreibst.
truncate() in echten Sprachen.
Bislang überschreibst du bei Zahlen kleiner 10 ja nur die erste erste Stelle der Zahl.
Siehe:
https://www.tizag.com/phpT/filetruncate.php
Kaum zu glauben wie kaput das in PHP ist...
Gruss
Kristian
Verfasst: 23.06.2006, 11:31
von Matze1963
Hallo!
@bogomir
Das funktioniert nicht.
@Kristian
Gibts das auch in Deutsch
Cu Matze

Verfasst: 23.06.2006, 12:12
von Kristian
@Matze
> Gibts das auch in Deutsch
Frag doch einen der Ahnung davon hat.
Mein alter weiser Freund Google sollte es wissen aber der ist leider ein bisschen verrückt und bietet daher keine SiteMap an, man muß sich alles über eine Suchanfrage rauskramen.
SCNR Kristian
Verfasst: 23.06.2006, 12:14
von SloMo
Ach herrje... was für ein Stuss... guck mal lieber da:
https://de.php.net/manual/de/function.ftruncate.php
if( !ftruncate($datei,0) ) echo( 'ftruncate() fehler' );
Verfasst: 23.06.2006, 12:34
von net(t)worker
Code: Alles auswählen
<?
$datei = fopen("../eintraege/neue/counter.txt","r+");
$counterstand1 = trim(fgets($datei, 10));
$counterstand1--;
rewind($datei);
echo $counterstand1;
$counterstanddatei=$counterstand1." ";
fwrite($datei, $counterstanddatei);
fclose($datei);
?>
Verfasst: 23.06.2006, 12:38
von SloMo
Jetzt lasst doch mal die Kinderkacke mit dem $counterstand1." " bleiben. Wegen sowas hat PHP seinen beschissenen Ruf

Verfasst: 23.06.2006, 12:53
von Airport1
> Wegen sowas hat PHP seinen beschissenen Ruf
..und wegen seiner Frickler

Verfasst: 23.06.2006, 13:00
von Kristian
Hallo
@SloMo
> Ach herrje... was für ein Stuss... guck mal lieber da:
Ahhh jetzt ja, dann nehme ich das mit dem kaputen PHP zurück

Dann braucht man ja nur noch ein flock($fh,LOCK_EX) und das Ganze sollte auch in PHP frickelfrei funktionieren.
Super, wieder was gelernt.
Gruss
Kristian