![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Newbie
![]() Registriert seit: 18.07.2001
Alter: 47
Beiträge: 11
|
![]() 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 ![]() 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 ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
![]() Registriert seit: 22.05.2002
Beiträge: 155
|
![]() 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 |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 30.09.2000
Beiträge: 267
|
![]() 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 |
![]() |
![]() |
![]() |
#4 |
Newbie
![]() Registriert seit: 18.07.2001
Alter: 47
Beiträge: 11
|
![]() war ja eh logisch
![]() ![]() 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 ![]() |
![]() |
![]() |
![]() |
#5 |
Veteran
![]() Registriert seit: 21.02.2001
Beiträge: 438
|
![]() 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
____________________________________
www.bensite.net |
![]() |
![]() |
![]() |
#6 |
Newbie
![]() Registriert seit: 18.07.2001
Alter: 47
Beiträge: 11
|
![]() yep, des wars natürlich
DANKE und guten Rutsch! |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() Kurze Zusammenfassung dieses Threads für den ungeduldigen Leser: RTFM!
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
#8 |
Veteran
![]() Registriert seit: 21.02.2001
Beiträge: 438
|
![]() 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...
![]()
____________________________________
www.bensite.net |
![]() |
![]() |
![]() |
#9 | |
Veteran
![]() Registriert seit: 30.09.2000
Beiträge: 267
|
![]() 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 |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|