WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 27.12.2002, 12:51   #1
cedros
Newbie
 
Registriert seit: 18.07.2001
Alter: 47
Beiträge: 11


Standard 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
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
____________________________________
Ausgefallene Geschenke und Geschenkideen - geschenktipp.com
cedros ist offline   Mit Zitat antworten
Alt 27.12.2002, 13:48   #2
bev
Senior Member
 
Registriert seit: 22.05.2002
Beiträge: 155


Standard

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
bev ist offline   Mit Zitat antworten
Alt 28.12.2002, 13:42   #3
kingchaos01
Veteran
 
Registriert seit: 30.09.2000
Beiträge: 267


Standard

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
kingchaos01 ist offline   Mit Zitat antworten
Alt 29.12.2002, 12:22   #4
cedros
Newbie
 
Registriert seit: 18.07.2001
Alter: 47
Beiträge: 11


Standard

war ja eh logisch - so funktionierts natürlich

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
____________________________________
Ausgefallene Geschenke und Geschenkideen - geschenktipp.com
cedros ist offline   Mit Zitat antworten
Alt 29.12.2002, 13:02   #5
ben81
Veteran
 
Registriert seit: 21.02.2001
Beiträge: 438


Standard

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
ben81 ist offline   Mit Zitat antworten
Alt 29.12.2002, 18:19   #6
cedros
Newbie
 
Registriert seit: 18.07.2001
Alter: 47
Beiträge: 11


Standard

yep, des wars natürlich

DANKE und guten Rutsch!
____________________________________
Ausgefallene Geschenke und Geschenkideen - geschenktipp.com
cedros ist offline   Mit Zitat antworten
Alt 29.12.2002, 19:50   #7
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

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 .
_m3 ist offline   Mit Zitat antworten
Alt 29.12.2002, 20:07   #8
ben81
Veteran
 
Registriert seit: 21.02.2001
Beiträge: 438


Standard

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
ben81 ist offline   Mit Zitat antworten
Alt 30.12.2002, 12:26   #9
kingchaos01
Veteran
 
Registriert seit: 30.09.2000
Beiträge: 267


Standard

Zitat:
Original geschrieben von _m3
Kurze Zusammenfassung dieses Threads für den ungeduldigen Leser: RTFM!
Wohl wahr!
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])
Da sollte dann klar sein, dass man die Gänsefüsse benötigt.

Ok, genug gerschulmeistert.....
Ein gutes neues Jahr
wünscht
Roland
kingchaos01 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:46 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag