// Preis berechnen und zurueckgeben
function get_preis ($hotel_zimmerpreise, $personen, $anreise_tag, $anreise_monat, $abreise_tag, $abreise_monat){
$result = mysql_query ("SELECT * FROM hotel_zimmerpreise WHERE id='$hotel_zimmerpreise'");
$row = mysql_fetch_array($result);
$monat = array("jan", "feb", "mae", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "dez");
// Preisberechnung
$fertig = false;
$betrag = 0.00;
for ($i = $anreise_monat; $i <= $abreise_monat && !$fertig; ++$i){
$abbruch = false;
$beginn = ($i > $anreise_monat)? 1:$anreise_tag;
for ($j = $beginn; !$abbruch && !$fertig; ++$j){
$mo = $monat[$i - 1].sprintf("%02d", $j);
if (!isset($row[$mo])) $abbruch = true;
else {
// 29. Februar (Schaltjahrproblem) beruecksichtigen
if (!($i == 2 && $j == 29) || schaltjahr($row['jahreszahl'])) $betrag += $row[$mo];
if ($i == $abreise_monat && $j == $abreise_tag) $fertig = true;
}
}
}
$betrag *= $personen;
$result = mysql_query ("SELECT kalkulationsaufschlag FROM festwerte");
$row = mysql_fetch_array($result);
$kalkulationsaufschlag = $row['kalkulationsaufschlag'];
$betrag *= ($kalkulationsaufschlag + 100)/100;
$betrag = sprintf ("%.2f", $betrag);
return ($betrag);
}
// Preisberechnung fuer ein bestimmtes Hotel, Feststellen ob saemtliche uebergebenen
// Daten gueltig sind und fuer die Berechnung herangezogen werden koennen. Ausgabe
// von jeweiligen Fehlerstatusmeldungen -- Wenn die Variable "hotel_zimmerpreise" den Wert 0 hat,
// findet keine Preisberechnung statt, der Kunde erhaelt lediglich die Moeglichkeit,
// eine Preisanfrage zu senden.
function preis_berechnung ($hotel, $anreise_tag, $anreise_monat, $abreise_tag, $abreise_monat, $jahr, $hotel_zimmerpreise, $personen){
if (!checkdate ($anreise_monat, $anreise_tag, $jahr)) die ("<font face=\"Arial\" size=\"2\" color=red>Ungültiges
Anreisedatum.<br>.z.B. 31.06. (Monat Juni hat 30 Tage</font>");
$von = gregorian2jt ($anreise_tag, $anreise_monat, $jahr);
$bis = gregorian2jt ($abreise_tag, $abreise_monat, $jahr);
$heute = gregorian2jt (date ("d"), date ("m"), date ("Y"));
$anzahl_tage = $bis - $von + 1; // Tage, die der Gast im Hotel verbringt
// Flughafen relevante Daten holen
$result = mysql_query ("SELECT
hotel.name AS hotel_name,
flughafen.id AS flughafen_id,
flughafen.code AS flughafen_code,
stadt.name AS stadt_name,
land.name AS land_name
FROM hotel
LEFT JOIN stadt ON hotel.stadt=stadt.id
LEFT JOIN land ON stadt.von_land=land.id
LEFT JOIN flughafen ON hotel.flughafen=flughafen.id
WHERE hotel.id='$hotel'");
$row = mysql_fetch_array($result);
$stadt_name = $row['stadt_name'];
$land_name = $row['land_name'];
$flughafen_id = $row['flughafen_id'];
$flughafen_code = $row['flughafen_code'];
$hotel_name = $row['hotel_name'];
// Informationen vom entsprechenden Zimmertyp usw. holen (nur bei Buchung)
// Bei Angebot, diese Abfrage aussen vor lassen
if ($hotel_zimmerpreise){
$result = mysql_query ("SELECT
hotel.name AS hotel_name,
hotel_zimmertyp.bezeichnung_lang AS bezeichnung_lang,
hotel_zimmertyp.belegung_min AS belegung_min,
hotel_zimmertyp.belegung_max AS belegung_max,
hotel.vorlauf_tage AS vorlauf_tage
FROM hotel_zimmertyp, hotel_zimmer, hotel_zimmerpreise, hotel
WHERE hotel_zimmerpreise.id='$hotel_zimmerpreise'
AND hotel_zimmer.von_hotel=hotel.id
AND hotel_zimmerpreise.von_hotel_zimmer=hotel_zimmer.id
AND hotel_zimmer.von_hotel_zimmertyp=hotel_zimmertyp.id");
$row = mysql_fetch_array($result);
$bezeichnung_lang = $row['bezeichnung_lang'];
$belegung_min = $row['belegung_min'];
$belegung_max = $row['belegung_max'];
$vorlauf_tage = $row['vorlauf_tage'];
}
// Fuer Hotelanfrage relevanten Daten holen
else{
$result = mysql_query ("SELECT name, vorlauf_tage FROM hotel WHERE id='$hotel'");
$row = mysql_fetch_array($result);
$hotel_name = $row['name'];
$vorlauf_tage = $row['vorlauf_tage'];
}
if ($heute > $von || $heute > $bis) die ("<font face=\"Arial\" size=\"2\" color=red>Das Reisedatum liegt in der
Vergangenheit.</font>"); ;
if ($von - $heute < $vorlauf_tage) die ("<font face=\"Arial\" size=\"2\" color=red>Ihre Buchung ist zu kurzfristig. Zwischen
Buchungstag und Anreisetag müssen mindestens $vorlauf_tage Tage liegen.</font>");
if ($anzahl_tage < 1) die ("<font face=\"Arial\" size=\"2\" color=red>Abreisedatum liegt vor dem Anreisedatum.</font>");
if ($anzahl_tage < MIN_TAGE) die ('Mind. '.MIN_TAGE.' Tage Aufenthalt ('.(MIN_TAGE-1).' Übernachtungen).');
// Wenn hotel_zimmerpreise = 0, dann sind keine hotel_zimmerpreise vorhanden und der Kunde kann nur eine Anfrage senden
if($row['zimmerpreis'] > 0){
// Feststellen, ob Zimmer mit gewaehlter Personenzahl belegbar
if ($personen > $belegung_max) die ("<font face=\"Arial\" size=\"2\" color=red>Zu viele Personen für diesen Zimmertyp.
Maximal $belegung_max Person(en) möglich.<br></font>");
// Feststellen ob Mindestbelegung uebereinstimmt
if ($personen < $belegung_min) die ("<font face=\"Arial\" size=\"2\" color=red>Zu wenige Personen angegeben. Für
diesen Zimmertyp muessen mindestens $belegung_min Person(en) einbuchen.</font>");
}
echo '<form name="daten_hotel" onsubmit="return form_check(this)" action="'.PHP_SELF.'" method="get">';