Hallo zusammen,
ich versuche mal, meine bisherigen Überlegungen möglichst klar zu formulieren:
Wir haben eine MS SQL Datenbank, in der sich Daten eines Kassensystems befinden. Unter anderem gibt es Tabellen, in denen jeder Kassenbon eines Tages festgehalten wird. So einen Bon kennt wohl jeder von seinem Supermarkt um die Ecke Zur Abbildung eines Bons existieren folgende Tabellen:
Tabelle bon:
Tablle bon_verkauf:
Tablle bon_zahlung:
Die Beziehungen zwischen der Tabelle bon und den "Untertabellen" bon_verkauf und bon_zahlung sind jeweils 1:n, d.h. ein Bon kann beliebig viele Verkaufs- und Zahlungsvorgänge enthalten.
Ich habe auf dem SQL Server eine gespeicherte Prozedur angelegt, um die Boninformationen aus der Datenbank zu holen:
Mittels eines PHP Scripts führe ich die Prozedur aus und lese die Ergebnismenge zeilenweise in ein Array:
Ich habe nun prinzipiell das Problem, dass ich nicht wirklich weiß, wie ich die Daten sinnvoll aus dem Array holen und darstellen kann. Ich brauche ja im Grunde mehrere verschachtelte Darstellungsebenen, d.h. ich brauche für jeden Bon einen Kopfteil mit Datum und Bonnummer, darunter einen Block mit den einzelnen Vorgängen.
Außerdem bin ich nicht sicher, ob die gewählte Datenbankstruktur wirklich sinnvoll ist, oder ob es vielleicht einen besseren Weg gibt. Das o.g. Beispiel is stark vereinfacht, die einzelnen Tabellen haben natürlich viele weitere Spalten, und es gibt neben bon_verkauf und bon_zahlung weitere Tabellen, die aber alle nach dem gleichen Muster aufgebaut sind.
Bin für jeden Tipp und jede Idee dankbar.
ich versuche mal, meine bisherigen Überlegungen möglichst klar zu formulieren:
Wir haben eine MS SQL Datenbank, in der sich Daten eines Kassensystems befinden. Unter anderem gibt es Tabellen, in denen jeder Kassenbon eines Tages festgehalten wird. So einen Bon kennt wohl jeder von seinem Supermarkt um die Ecke Zur Abbildung eines Bons existieren folgende Tabellen:
Tabelle bon:
Code:
Spalte id (INT) (IDENTITY) Spalte bonnr (INT) Spalte bondatum (DATETIME)
Code:
Spalte id (INT) (IDENTITY) Spalte bon_id (INT) (FK => bon.id) Spalte artnummer (INT) Spalte menge (INT)
Code:
Spalte id (INT) (IDENTITY) Spalte bon_id (INT) (FK => bon.id) Spalte finanzweg (INT) Spalte betrag (FLOAT)
Ich habe auf dem SQL Server eine gespeicherte Prozedur angelegt, um die Boninformationen aus der Datenbank zu holen:
Code:
CREATE PROCEDURE sp_bons_holen @von DATETIME, @bis DATETIME AS SELECT * FROM bon LEFT JOIN bon_verkauf ON (bon_verkauf.bon_id = bon.id) LEFT JOIN bon_zahlung ON (bon_zahlung.bon_id = bon.id) WHERE bon.datum >= @von AND bon.datum <= @bis
PHP-Code:
$query = "EXECUTE sp_bons_holen '01.01.2005', '02.01.2005'";
$result = mssql_query($query);
$num = mssql_num_rows($result);
$cur = 1;
while ($cur <= $num) {
$row = mssql_fetch_array($result);
$cur++;
}
Außerdem bin ich nicht sicher, ob die gewählte Datenbankstruktur wirklich sinnvoll ist, oder ob es vielleicht einen besseren Weg gibt. Das o.g. Beispiel is stark vereinfacht, die einzelnen Tabellen haben natürlich viele weitere Spalten, und es gibt neben bon_verkauf und bon_zahlung weitere Tabellen, die aber alle nach dem gleichen Muster aufgebaut sind.
Bin für jeden Tipp und jede Idee dankbar.