function getFreieZimmer($unterkunft_id, $anzahlErwachsene, $anzahlKinder, $anzahlZimmer, $haustiere, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link) { //leeres array erzeugen zum speichern der freien zimmer: $freieZimmer = array(); //variable zum zaehlen der erwachsenenBetten, kinderBetten, freie zimmer $bettenErw = 0; $bettenKin = 0; $freieZi = 0; //reservierungs-funktionen einbinden: include_once "../include/reservierungFunctions.php"; //zimmer-funktionen hinzufügen: include_once "../include/zimmerFunctions.php"; //properties hinzufügen: include_once "../include/propertiesFunctions.php"; //alle zimmer der unterkunft auslesen und prüfen ob es im angegebenen zeitraum noch frei ist: $query = "\n\t\t\tSELECT \n\t\t\tPK_ID\t\t\n\t\t\tFROM\n\t\t\tRezervi_Zimmer\n\t\t\tWHERE\n\t\t\tFK_Unterkunft_ID = '{$unterkunft_id}'\t\n\t\t\tORDER BY\n\t\t\tZimmernr\n\t\t"; $res = mysqli_query($link, $query); while ($d = mysqli_fetch_array($res)) { //zimmer-id holen: $zi_id = $d["PK_ID"]; //wenn die suche nach erwachsenen oder kindern nach zimmern gefiltert //werden soll (z. b. ferienhäuser nur mit bestimmter personenanzahl): //dont check it if the accomodation has rooms and subrooms: if (!hasParentRooms($unterkunft_id)) { if (getPropertyValue(SUCHFILTER_ZIMMER, $unterkunft_id, $link) == "true") { if ($anzahlErwachsene > -1) { if (getBetten($unterkunft_id, $zi_id, $link) < $anzahlErwachsene) { continue; } } if ($anzahlKinder > -1) { if (getBettenKinder($unterkunft_id, $zi_id, $link) < $anzahlKinder) { continue; } } } } if (!isRoomTaken($zi_id, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link)) { //zimmer ist noch frei - dem array hinzufügen: $freieZimmer[] = $zi_id; $freieZi++; //zaehlen wie viele erwachsene und kinder platz haben: $bettenErw = $bettenErw + getBetten($unterkunft_id, $zi_id, $link); //echo("anzahlBetten insgesamt Erw =".$bettenErw."<br/>"); $bettenKin = $bettenKin + getBettenKinder($unterkunft_id, $zi_id, $link); //echo("anzahlBetten insgesamt Kin =".$bettenKin."<br/>"); } } if ($anzahlErwachsene > -1) { //checken ob genug betten fuer erwachsene frei sind: if ($anzahlErwachsene > $bettenErw) { //es sind nicht genug betten fuer erwachsene frei! $freieZimmer[0] = -1; } } if ($anzahlKinder > -1) { //wieviele betten sind noch frei wenn ich die erwachsenen reingelegt habe? if ($anzahlErwachsene > -1) { $insgesamtBettenFrei = $bettenErw + $bettenKin - $anzahlErwachsene; } else { $insgesamtBettenFrei = $bettenErw + $bettenKin; } //checken ob genug betten fuer kinder frei sind: if ($anzahlKinder > $insgesamtBettenFrei) { //echo("nicht genug betten fuer kinder!<br/>"); $freieZimmer[0] = -2; } } if ($anzahlZimmer > -1) { //checken ob genug zimmer insgesamt frei sind: if ($anzahlZimmer > $freieZi) { $freieZimmer[0] = -3; } } //check if a parent-child relation exists and remove the parent if the child is not free: $freeRooms = array(); if (count($freieZimmer) > 0 && hasParentRooms($unterkunft_id) && getPropertyValue(RES_HOUSE, $unterkunft_id, $link) == "true") { global $root; include_once $root . "/include/zimmerFunctions.php"; foreach ($freieZimmer as $freeRoom) { $count = 0; $count2 = 0; //is the room a parent room? if (hasChildRooms($freeRoom)) { //the room is a parent room, check if ALL the children are free rooms $childs = getChildRooms($freeRoom); while ($c = mysqli_fetch_array($childs)) { $count2++; for ($i = 0; $i < count($freieZimmer); $i++) { if ($freieZimmer[$i] == $c['PK_ID']) { $count++; } } } if ($count == $count2) { $freeRooms[] = $freeRoom; } } else { $freeRooms[] = $freeRoom; } } } else { if (count($freieZimmer) > 0 && hasParentRooms($unterkunft_id) && getPropertyValue(RES_HOUSE, $unterkunft_id, $link) != "true") { global $root; include_once $root . "/include/zimmerFunctions.php"; include_once $root . "/include/reservierungFunctions.php"; foreach ($freieZimmer as $freeRoom) { $count = 0; $count2 = 0; //is the room a parent room? if (hasChildRooms($freeRoom)) { //the room is a parent room, check if ALL the children are occupied: $childs = getChildRooms($freeRoom); $allOcc = true; while ($c = mysqli_fetch_array($childs)) { $chid = $c['PK_ID']; //if the child is not occupied -> set to false! $taken = isRoomTaken($chid, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link); if (!$taken) { $allOcc = false; break; } } if (!$allOcc) { $freeRooms[] = $freeRoom; } } else { $freeRooms[] = $freeRoom; } } } else { $freeRooms = $freieZimmer; } } //checken ob genug zimmer insgesamt frei sind: if (count($freeRooms) < 1) { $freeRooms[0] = -3; } return $freeRooms; }
$anzahlZimmer = $_POST["anzahlZimmer"]; $anzahlErwachsene = $_POST["anzahlErwachsene"]; if (isset($_POST["anzahlKinder"]) && $_POST["anzahlKinder"] > 0) { $anzahlKinder = $_POST["anzahlKinder"]; } else { $anzahlKinder = false; } if (isset($_POST["haustiere"]) && $_POST["haustiere"] > 0) { $haustiere = $_POST["haustiere"]; } else { $haustiere = false; } $zimmer_id = getSessionWert(ZIMMER_ID); $zi_ids = $zimmer_id; $anzahlTage = numberOfDays($vonMonat, $vonTag, $vonJahr, $bisMonat, $bisTag, $bisJahr); if (hasParentRooms($unterkunft_id) && getPropertyValue(SEARCH_SHOW_PARENT_ROOM, $unterkunft_id, $link) == "true") { $parentsRes = getParentRooms(); $zimmerIdsParents = array(); while ($p = mysqli_fetch_array($parentsRes)) { $i = $p["PK_ID"]; if ($_POST['parent_room_' . $i] && $_POST['parent_room_' . $i] == "true") { $zimmerIdsParents[] = $i; } //end if post parent room } //end while parent rooms if (count($zimmerIdsParents) > 0) { $zi_ids = $zimmerIdsParents; } } //end if has parent rooms
/** returns all parent rooms * */ function getParentRooms() { global $link; global $unterkunft_id; if (hasParentRooms($unterkunft_id)) { $query = "select * from Rezervi_Zimmer where Parent_ID is null"; $res = mysqli_query($link, $query); if (!$res) { echo "die Anfrage {$query} scheitert"; return false; } else { return $res; } } return false; }
} ?> > <?php echo $nachricht; ?> </div> <?php } ?> <form action="./index.php" method="post" target="_self"> <?php if (hasParentRooms($unterkunft_id)) { ?> <div class="well"> <div class="row"> <div class="col-sm-12"> <label class="control-label"> <?php $text = "Bestehende Zuweisungen:"; ?> <?php echo getUebersetzung($text, $sprache, $link); ?> </label> </div> </div>