Grüß euch,
ich bin gerade dabei ein Buchungsprogramm für unsere Theatervorführungen zusammenzustellen, bei dem die Besucher einen fix definierten Platz online reservieren können.
Folgende Problem bzw. Frage hat sich dabei ergeben (von der ich hoffe ihr könnt mir hier weiterhelfen):
in der Mysql Datenbank gibt es derzeit eine Table "reihe" die jeweils die Statuswerte von jeweils bis zu 20 Sitzplätzen enthält
Spaltenstruktur: id, terminid, nr, sitzanz (gibt an wieviele Sitze in dieser Reihe tatsächlich aufgestellt werden), sitz1, sitz2, sitz3, ... sitz20
Beispieldaten für sitz-Spalten
0 = frei
1 = bestellt
2 = verkauft
3 = anderweitig vergeben / nicht aufgestellt
...
nun möchte ich möglichst effizent abfragen
1. wieviele Sitze für einen bestimmten Termin insgesamt verfügbar sind (Werte 0-2)
2. wieviele Sitze sind noch bestellbar (Wert 0)
dazu muss ich ja erst mal alle Reihen zu dem Termin auslesen (kein Problem) und dann die jeweiligen Sitzwerte auswerten und zusammenzählen
lässt sich dies gleich über eine komplexere DB-Abfrage lösen oder ist es besser die Daten in ein Array zu laden und dieses dann abzufragen?
Nachfolgend meine derzeitige (wahrscheinlich nicht sehr elegante) Lösung um alle freien Sitze auszulesen:
$results = mysql_query (
" SELECT reihe.id AS reihe_id, " .
" reihe.nr AS reihe_nr, " .
" reihe.text AS reihe_text, " .
" reihe.sitzanz AS reihe_sitzanz, " .
" reihe.sitz1 AS reihe_sitz1, " .
" reihe.sitz2 AS reihe_sitz2, " .
" reihe.sitz3 AS reihe_sitz3, " .
" reihe.sitz4 AS reihe_sitz4, " .
" reihe.sitz5 AS reihe_sitz5, " .
" reihe.sitz6 AS reihe_sitz6, " .
" reihe.sitz7 AS reihe_sitz7, " .
" reihe.sitz8 AS reihe_sitz8, " .
" reihe.sitz9 AS reihe_sitz9, " .
" reihe.sitz10 AS reihe_sitz10, " .
" reihe.sitz11 AS reihe_sitz11, " .
" reihe.sitz12 AS reihe_sitz12, " .
" reihe.sitz13 AS reihe_sitz13, " .
" reihe.sitz14 AS reihe_sitz14, " .
" reihe.sitz15 AS reihe_sitz15 " .
" FROM reihe " .
" WHERE reihe.termineid = '$veranstaltung' " .
" ORDER BY reihe.nr DESC " )
or die ( "Fehler in " . __FILE__ . " Zeile Nr. " . __LINE__ . " - " . mysql_error() );
$anz = 0;
while ( $line = mysql_fetch_array($results) ) {
include "inc/leseSqlResult.php";
for($i = $reihe_sitzanz; $i >= 1; $i--){
eval("\$sitz = \$reihe_sitz".$i.";");
if($sitz == 0) $anz++;
}
}