![]() |
php-Problem
Ich hab da folgendes Problem:
Beim Absenden eines Formulars wird eine fortlaufende, 6stellige Nummer vergeben. Das ganze läuft über eine einfache txt-Datei (nummer.txt), in der die Nummer gespeichert wird (also keine DB) und in der Variable $nummer ausgegeben wird. sieht folgendermaßen aus: // Generieren der nummer $filename = "nummer.txt"; // Öffne angegebene Datei zum Lesen und Schreiben $fp = fopen("$filename","r+"); // Lese den Inhalt der Datei ein und speicher ihn in der Variable $nummer $nummer = fgets($fp); // Neue Nummer ist gleich Nummer + 1 $nummer = $nummer + 1; // Gehe wieder an den Anfang der Datei rewind ($fp); // Scrheiben in die Datei den Inhalt der Variable nummer fwrite ($fp, $nummer); // Schliesse Datei fclose ($fp); // Formatiere die Nummer 6 stellig $nummer = sprintf("%06d",$nummer); Wenn ich nun das Formular absende passiert folgendes: Beim ersten mal wird ganz richtig die Zahl um 1 erhöht. Beim zweiten mal wird nicht die letzte, sondern die erste Stelle der Zahl um 1 erhöht, danach läufts wieder normal weiter :eek: Wenn ich also zu Beginn 000000 in der txt-Datei habe, wird daraus beim ersten absenden 000001, dann 100001, 100002, 100003 etc. Hat irgendwer vielleicht eine Idee worans liegt? Ich komm net drauf :heul: |
hi
habs getestet, bei mir auch das gleiche... wenn du aber ins txtfile 0 und nicht 000000 schreibst zählt er richtig für die weiterverarbeitung formatierst du die zahl ja mit $nummer = sprintf("%06d",$nummer) auf 6 stellen. hoff der tipp bringt dich ein bisschen weiter gruß bev |
Das hat mit dem rückgabewert von fgets() zu tun. Der ist nun mal tringstring (vgl. Manual). Du müsstest also casten.
schau mal unter http://www.php.net/manual/en/languag...es.typecasting Da wird das erklärt. Falls du nicht wirklich auf die "genau" 6 Stellen angewieen bist, würd ich dir - wie mein Vorredner - sprintf empfehlen. hth Roland |
war ja eh logisch :rolleyes: - so funktionierts natürlich :cool:
DANKE! Bescheiden, wie ich bin, hab ich gleich noch ein kleines Problem: In der e-mail, die da verschickt wird, wird auch das Datum ausgegeben. Also, ich bestimme einfach die Variable $datum = date(d.m.Y); und gebe sie dann in der mail mit $datum aus - so weit so gut - funktioniert auch. Nur wird das Datum ohne Punkt nach Tag und Monat ausgegeben - also 29122002 - sieht irgendwie net so besonders auch - wie bekomm ich da einen Punkt dazwischen rein :confused: |
Du hast beim date-Aufruf die Anführungszeichen vergessen.
Versuche es so: $datum = date("d.m.Y"); Siehe auch hier: http://www.php.net/manual/en/function.date.php |
yep, des wars natürlich
DANKE und guten Rutsch! |
Kurze Zusammenfassung dieses Threads für den ungeduldigen Leser: RTFM!
|
Hat meiner Meinung nach nix mit RTFM zu tun, sowohl Funktion als auch Parameter waren ja korrekt. Das mit den vergessenen Anführungszeichen war halt ein kleiner Schlampigkeitsfehler, weiter nichts... :rolleyes:
|
Zitat:
Besonders die verschiedenen Typen von Rückgabewerten und Parametern werden gerne (auch von mir) überlesen/ignoriert. Genaues lesen spart hier aber gewaltig Ärger/Zeit. Auch die "date-Frage" ist hier ein gutes Beispiel: Code:
string date ( string format [, int timestamp]) Ok, genug gerschulmeistert..... Ein gutes neues Jahr wünscht Roland |
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag