Reservierungs System

blachmonke

Grünschnabel
Guten Tag,
ich bin ganz neu hier und habe ein Problem, ich Versuche mich heute schon den ganzen Tag daran eine Reservierung für ein Restaurant mit Hilfe von einer MySql Datenbank und servlets umzusetzen. Das Ziel soll dabei sein das alles Reservierungen in einem table sind, aber die Reservierungen dürfen pro Tag nicht über die Anzahl von 60 Plätzen kommen.
mein Table besteht momentan aus id (autoincrement), vorname, nachname, plaetze und reservierungsdatum
 

Nico2201

Mitglied
Hallo blachmonke,

wenn ich das richtig verstanden habe, trägt der Kunde seine Reservierung über eine Website ein und diese wird dann in einer MySQL Datenbank gespeichert. Das könntest du mit einem Counter in einem der Servlets realisieren, der alle Einträge der Kunden, die reserviert haben, durchzählt und ab dem 60. Eintrag eine Fehlermeldung schmeißt, die dem Kunden sagt, dass keine weiteren Reservierungen mehr aufgenommen werden können. Dieser Counter soll zudem noch die Eigenschaft besitzen, dass er sich selbst nach 24 Stunden (z.B.: nach der Schließung des Restaurants) aktualisiert. Versuch mal dein Glück. ;)

Ich hoffe, dass ich dir damit weiterhelfen konnte.

Freundliche Grüße
 

ComFreek

Mod | @comfreek
Moderator
Ich würde keinen zusätzlichen Zähler einführen, wenn alle benötigten Daten bereits in der DB stehen.
Mit folgender SQL-Anweisung kannst du die Anzahl der heutigen Reservierungen auslesen:
SQL:
SELECT COUNT(*) FROM Reservierungen WHERE reservierungsdatum = heute()
(wobei das mit '= heute()' nur Pseudosyntax ist; die richtige Art auf Taggleichheit zu prüfen, weiß ich gerade auch nicht auswendig ;))

Du solltest dann aber das obige Query und das Einfügen in eine Transaktion packen, sonst kannst du leicht inkonsistente Datenbestände erhalten.

Ein Vorteil dieses Wegs gegenüber dem manuellen Zähler vom Post über mir ist übrigens, dass du auch Kunden erlauben kannst, Tage im Voraus zu reservieren. Dafür musst du den Tagvergleich nur geringfügig anpassen.
 

blachmonke

Grünschnabel
In wie weit müsste ich den Tag vergleich ändern damit es möglich ist tage im voraus zu reservieren? Ich selber habe keine Ahnung was ich daran ändern müsste?
 

blachmonke

Grünschnabel
Kann der Tag der dann verglichen werden soll auch eine Variable sein? Wenn es möglich sein sollte würde ich mich auch über ein Beispiel freuen (edit. um 1:08 schaffe es immer noch nicht das Problem zu lösen:()
 
Zuletzt bearbeitet:

ComFreek

Mod | @comfreek
Moderator
Kann der Tag der dann verglichen werden soll auch eine Variable sein?
Klar!

Ein Beispiel würde von vielen Parametern abhängen. Welche Schnittstelle zur MySQL-DB nutzt du denn? mysqli, PDO? Nutzt du Prepared Statements? (Solltest du.)
Es wäre einfacher, wenn du etwas Code aus dem Kontext zeigen könntest, wo die Reservierung zum Einsatz kommen soll.
 

blachmonke

Grünschnabel
Java:
package com.mvc.dao;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import com.mvc.bean.ReservierenBean;
import com.mvc.util.DBConnection;
import java.sql.ResultSet;
 
public class ReservierenDao 
{
    public String reserviert(ReservierenBean reservierenBean)
    {
        String vorname = reservierenBean.getvorname();
        String nachname = reservierenBean.getnachname();
        String plaetze= reservierenBean.getplaetze();
        String reservierungsdatum=reservierenBean.getreservierungsdatum();
 
        Connection con =null;
        PreparedStatement sqlzeile = null;

        
        
    
        try 
        {
            con= DBConnection.createConnection();
            
            String SQLReihenfolge ="insert into reservieren(id,vorname,nachname,plaetze,reservierungsdatum) values (Null,?,?,?,?) ";
            
            sqlzeile = con.prepareStatement(SQLReihenfolge);
            
            sqlzeile.setString(1, vorname);
            sqlzeile.setString(2, nachname);
            sqlzeile.setString(3, plaetze);
            sqlzeile.setString(4, reservierungsdatum);
            
            int i = sqlzeile.executeUpdate();
            
            if (i!=0)
                return "Erfolg";
            
        }
        
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        
        return " Es ist ein Fehler aufgetretten ";
    }
}
Oben ist einmal der Quellcode von meine Dao ich selber benutze für dieses Projekt java beans und die mysql workbench, das Projekt versuche ich nach dem MVC MOdel aufzubauen
 
Zuletzt bearbeitet von einem Moderator: