Hallo Leute,
ich habe im letzten Jahr ein Skript programmiert, welches automatische eine fortlaufende Nummer generieren soll. Soweit, so einfach. Jedoch soll diese Nummer Jahresabhängig sein. Im Jahr 2013 beginnen alle Nummern mit 2013 und dann folgt eine vierstellige Ziffer, aufsteigend.
Im alten Jahr hat alles gut funktioniert, doch mit dem Jahreswechsel gab es ein Problem. Ich hatte eine MySQL-Abfrage geschrieben, die schauen soll, ob es für das jeweilige Jahr bereits eine Nummer gibt, wenn ja, die höchste nehmen, +1 rechnen und dann in die neue Zeile schreiben. Im Jahr 2014 sollte aber eine neue Nummer mit 20140001 generiert werden, da keine vorherige Nummer vorhanden war.
Leider war jedoch der erste Eintrag die Nummer 20141010 (statt 20140001). Herausgefunden habe ich, dass edie if-Abfrage mit true beantwortet wird, selbst wenn die Tabelle LEER ist, also eigentlich kein Rückgabewert vorhanden sein sollte... Auch die Ausgabe von row[0] bleibt leer.
Ich habe schon das halbe Internet abgesucht (Auch die if-Abfrage verändert), aber entweder bei Google die falschen Suchbegriffe eingegeben, oder einfach nichts hilfreiches gefunden. Ich hoffe nun auf Hilfe von euch. Danke sehr.
ich habe im letzten Jahr ein Skript programmiert, welches automatische eine fortlaufende Nummer generieren soll. Soweit, so einfach. Jedoch soll diese Nummer Jahresabhängig sein. Im Jahr 2013 beginnen alle Nummern mit 2013 und dann folgt eine vierstellige Ziffer, aufsteigend.
Im alten Jahr hat alles gut funktioniert, doch mit dem Jahreswechsel gab es ein Problem. Ich hatte eine MySQL-Abfrage geschrieben, die schauen soll, ob es für das jeweilige Jahr bereits eine Nummer gibt, wenn ja, die höchste nehmen, +1 rechnen und dann in die neue Zeile schreiben. Im Jahr 2014 sollte aber eine neue Nummer mit 20140001 generiert werden, da keine vorherige Nummer vorhanden war.
Leider war jedoch der erste Eintrag die Nummer 20141010 (statt 20140001). Herausgefunden habe ich, dass edie if-Abfrage mit true beantwortet wird, selbst wenn die Tabelle LEER ist, also eigentlich kein Rückgabewert vorhanden sein sollte... Auch die Ausgabe von row[0] bleibt leer.
Ich habe schon das halbe Internet abgesucht (Auch die if-Abfrage verändert), aber entweder bei Google die falschen Suchbegriffe eingegeben, oder einfach nichts hilfreiches gefunden. Ich hoffe nun auf Hilfe von euch. Danke sehr.
PHP:
function getNextRechnungsnummer($db) {
$year = date("Y");
$result = mysql_query("SELECT MAX(eintrag) FROM $db.beitrag_total WHERE eintragsnummer LIKE'$year%'");
if($row = mysql_fetch_row($result)) {
$lastRunningNumber = substr($row[0], 4, 4);
$nextRunningNumber = $lastRunningNumber + 1;
$eintragsnummer = $year . str_pad($nextRunningNumber, 4, "0". STR_PAD_RIGHT);
return $eintragsnummer;
} else {
return $year . "0001";
}
}