Weiterzählen
Stahl Florian
- php
0 Dennis0 afra0 Ingo Turski1 MudGuard
Hallo an alle,
Habe ein kleines Problem aber ich komm einfach net drauf.
Ich habe eine Variable $nummer. Diese ist in ein Script eingebunden und jedes mal wenn es ausgeführt wird soll die Variable um eine Zahl grösser werden. Habe es so gemacht, aber es wird immer nur 1 angezeigt.
$nummer = 0;
$nummer = $nummer++;
Bitte um Hilfe.
Mit freundlichen Grüssen
------------------------
Stahl Florian
------------------------
Hi Stahl,
$nummer = 0;
=> Setze $nummer auf 0.
$nummer = $nummer++;
=> Erhöhe $nummer um 1, also von 0 auf 1.
Beim nächsten mal durchführen:
$nummer = 0;
=> Setze $nummer auf 0.
$nummer = $nummer++;
=> Erhöhe $nummer um 1, also von 0 auf 1.
usw.
MfG, Dennis.
Hallo an alle,
Ich denke ich habs falsch beschrieben. Stellt euch das so vor:
Ich fülle ein Formular aus und schicke es ab. Es wird in einer Textdatei gespeichert und wieder ausgelesen.
Dieser erste ausgelesene Datensatz soll die Ziffer 1 haben. Der nächste die 2. Also immer wenn ich das Formular ausfülle soll automatisch die nächste Zahl vergeben werden und angezeigt. Also durchnummeriert von Einträge z.B.
Mit freundlichen Grüssen
------------------------
Stahl Florian
------------------------
Hi Stahl
Dieser erste ausgelesene Datensatz soll die Ziffer 1 haben. Der nächste die 2. Also immer wenn ich das Formular ausfülle soll automatisch die nächste Zahl vergeben werden und angezeigt. Also durchnummeriert von Einträge z.B.
Du solltest eine "Schlaufe" verwenden.
$nummer = 0;
// $anzahl gibt an wie viel mal die Schlaufe ausgeführt wird
while ($nummer<$anzahl) {
// hier kommt der Code um das Formular abzuschicken, usw..
$nummer++;
};
MfG
splinter
Hallo Florian!
Dieser erste ausgelesene Datensatz soll die Ziffer 1 haben. Der nächste die 2. Also immer wenn ich das Formular ausfülle soll automatisch die nächste Zahl vergeben werden und angezeigt. Also durchnummeriert von Einträge z.B.
Du liest _vor_ dem Speichern die Textdatei als Array aus und bestimmst die Länge von diesem. Danach speicherst Du den neuen Wert +1.
Da Du aber die Werte in der Textdatei immer als Array verarbeiten kannst, wäre es natürlich auch möglich gänzlich auf eine Nummerierung innerhalb der Datei zu verzichten und immer mit den Arraypositionen zu arbeiten. (In Datenbanken macht ein eindeutiger Index aber natürlich auch Sinn)
Schönen Gruß
Afra
Hallo Florian!
Dennis hat Dir ja schon den Fehler in deinem Aufruf beschrieben. Wenn Du aber den berechnten Wert in einer Session speicherst, dann könntest Du bei erneutem Aufruf ($nummer != 0) den Wert nicht mehr neu auf 0 setzen und dagegen den Wert aus der Session nehmen (Oder aus einem Query String, oder oder oder...
Da wir aber nicht die Anwendung Deiner kleinen Berechnung kennen, ist die Hilfe nun auch etwas dünn.
Schönen Gruß
Afra
Hi,
abgesehen vom Gesagten - diese Anweisung ist doppelt gemoppelt.
$nummer = $nummer++;
besagt: $nummer = ($nummer = $nummer + 1);
freundliche Grüße
Ingo
Hi,
abgesehen vom Gesagten - diese Anweisung ist doppelt gemoppelt.
Überseh ich was?
Meiner Meinung nach ist das etwas anders:
$nummer = $nummer++;
besagt: $nummer = ($nummer = $nummer + 1);
Das wäre m.E. $nummer = ++$nummer;
(Deine Klammer entspricht dem Pre-Inkrement)
$nummer = $nummer++; sagt m.E.:
$temp = $nummer;
$nummer = $nummer + 1;
$nummer = $temp;
Also erstmal den Wert auslesen, dann erhöhen (Post-Inkrement), dann die Zuweisung durchführen.
Wobei die letzten beiden Schritte je nach Programmiersprache (bzw. sogar je nach Compiler/Interpreter) auch in umgekehrter Reihenfolge stattfinden können.
Grundregel:
Taucht eine Variable mit Post/Pre-In/De-krement-Operator in einem Ausdruck auf, darf sie kein weitere Mal darin auftauchen, da sonst das Verhalten unvorhersehbar wird.
cu,
Andreas
Hi,
$nummer = $nummer++; sagt m.E.:
$temp = $nummer;
$nummer = $nummer + 1;
$nummer = $temp;
korrekt. Und da hast Du auch schon den vielleicht relevanten Fehler entdeckt.
freundliche Grüße
Ingo