Hallo Darius,
dazu hätte ich einiges anzumerken. Zunächst zwei wichtige Punkte. Wenn du Joomla
verwendest ist es sinnvoll auch die Joomla Klassenbibliothek und damit die Methoden,
insbesondere die Datenbankklasse zu benutzen. Weiterhin solltest du dich mit dem Thema
SQL und PHP Sicherheit auseinandersetzen. Ein Wert, der von außen kommt, egal ob
POST, GET oder COOKIE darf niemals einfach so in einer Datenbankabfrage etc. verwendet
werden. Sichtwort SQL Injektion.
Nun zum Thema. Ich werde mal ein paar Vorschläge machen:
Das Anlegen eurer Sitzplätze in einer Tabelle. "jos_events_registrations_seats", dazu
schlage ich folgende Struktur vor:
id | seat | info
Dann eine Referenztabelle mit den jeweiligen Buchungen. "#__events_registrations_bookings" ggf. zusätzlich von eine id für die Vorführungen
id | seat_id | user_id
Damit erzeugst du zunächst eine Liste der möglichen Plätzt, zum Beispiel mit
PHP-Code:
<?php
global $database;
$query = "SELECT s.id, s.seat, s.info FROM #__events_registrations_seats AS s"
."\n LEFT JOIN #__events_registrations_bookings AS b ON b.seat_id = s.id"
."\n WHERE ISNULL(b.seat_id)"
;
$database->setQuery($query);
$seats = $database->loadObjectList();
foreach($seats as $seat) {
$info = !empty($seat->info) ? ' ('.$seat->info.')' : '';
$list_seats[] = mosHTML::makeOption($seat->id,$seat->seat.$info);
}
echo mosHTML::selectList( $list_seats, 'seat', 'class="inputbox" size="1"', 'value', 'text', null);
?>
Soweit so gut.
Nun gibt es ggf. noch eine Tabelle mit den jeweiligen Dingen, die gezeigt werden sollen.
Das lass ich hier an dieser Stelle aus, das wäre aber noch wichtig, und müsste oben in
die Abfrage nach als weitere LEFT JOIN einfließen.
Zur Speicherung der Daten: (Grundform, ohne check etc.)
PHP-Code:
<?php
global $database, $my;
//ggf. zusaätzlich die id der Vorführung hier in show_id
$seat = intval(mosGetParam($_POST,'seat',0));
$query = "INSERT INTO #__events_registrations_bookings (user_id,seat_id,show_id) VALUES (".(int)$my->id, (int)$seat,(int)$show.")";
$database->setQuery($query);
$database->query();
?>
Diese ganze Session id Geschichte brauchst du gar nicht, allerdings hast du derzeit
noch ein Problem mit der Struktur.
Grüße
ec
Lesezeichen