Hallo,
es habert bei der Berechnung.
Ich merke langsam, das diese wenn und aber ganz schön kniffelig sind:
Folgendes soll berechnet werden:
Wenn heute min. 3 Tag vor dem nächsten Anreisetag liegen soll,
>> Es es ist noch bis ??? frei >>
Gleichzeitig soll der nächste freie Termin danach gezeigt werden.
(aber die Dauer soll min 3 Tage sein, sonst nach der nächsten Lücke suchen und dort die Dauer suchen.
Bei dem Beispiel:
wenn heute der 25.11.2007 ist soll angezeigt werden: (2Zeilen)
Die Wohnung ist ab heute bis 30.11.2007 frei.
Ab 10.12.2007 bis 16.12.2007 ist die wieder Wohnung frei.
So ist jetzt die Datenbank:
<?php
$calendar[1]['object'] = 'Testerienhaus';
$calendar[1]['descr'] = '';
$calendar[1]['showfrom'] = 'heute';
$calendar[1]['showuntil'] = '31.12.2008';
$calendar[1]['dates'][0]['sort'] = 2454380;
$calendar[1]['dates'][0]['from'] = '06.10.2007';
$calendar[1]['dates'][0]['until'] = '14.10.2007';
$calendar[1]['dates'][0]['comment'] = '- Baffsckhaus';
$calendar[1]['dates'][1]['sort'] = 2454388;
$calendar[1]['dates'][1]['from'] = '30.11.2007';
$calendar[1]['dates'][1]['until'] = '05.12.2007';
$calendar[1]['dates'][1]['comment'] = '- Hodfsßbach';
$calendar[1]['dates'][2]['sort'] = 2454408;
$calendar[1]['dates'][2]['from'] = '05.12.2007';
$calendar[1]['dates'][2]['until'] = '10.12.2007';
$calendar[1]['dates'][2]['comment'] = '- Lsdfgaukel';
$calendar[1]['dates'][3]['sort'] = 2454423;
$calendar[1]['dates'][3]['from'] = '16.12.2007';
$calendar[1]['dates'][3]['until'] = '20.12.2007';
$calendar[1]['dates'][3]['comment'] = '- Steffffan';
$calendar[1]['dates'][4]['sort'] = 2454465;
$calendar[1]['dates'][4]['from'] = '30.12.2007';
$calendar[1]['dates'][4]['until'] = '06.01.2008';
$calendar[1]['dates'][4]['comment'] = '- Werfffner';
$calendar[1]['dates'][5]['sort'] = 2454541;
$calendar[1]['dates'][5]['from'] = '15.03.2008';
$calendar[1]['dates'][5]['until'] = '29.03.2008';
$calendar[1]['dates'][5]['comment'] = '- Mfdsüller';
$calendar[1]['dl']['geaendert'] = 1;
?>
so wird die Datenbank angezeigt
30.11.2007 - 05.12.2007
05.12.2007 - 10.12.2007
16.12.2007 - 20.12.2007
30.12.2007 - 06.01.2008
15.03.2008 - 29.03.2008
hier mein code
<html>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<head>
<title>Belegung</title>
</head>
<body>
<?php
include ("daten.php");
foreach ($calendar[1]['dates'] as $dates) {
if (isset($dates['from'])) {
$time = explode('.', $dates['until']);
$timestamp = mktime(0, 0, 0, $time[1], $time[0], $time[2]);
if ($timestamp > time()) {
// die nächste Zeile braucht man nicht, dient nur zur HIlfe
echo "<p>" . $dates['from'] . " - " . $dates['until'] . "</p>";
$von[]= $dates['from'] ;
$bis[]= $dates['until'] ;
$anzahl++;
}
}
}
$heute = mktime(0, 0, 0, date("m"), date ("d"), date("Y"));
// die nächste Zeile ist zum Testen vom Datum
//$heute = mktime(0, 0, 0, 11, 23, 2007);
for ($z=0; $z<$anzahl; $z++) {
$year[$z] = substr($von[$z], 6,4); $year[$b] = substr($bis[$z], 6,4);
$month[$z] = substr($von[$z], 3, 2); $month[$b] = substr($bis[$z], 3, 2);
$day[$z] = substr($von[$z], 0, 2); $day[$b] = substr($von[$z], 0, 2);
$datum[] = mktime(0,0,0,$month[$z],$day[$z],$year[$z]);
$datumbis[] = mktime(0,0,0,$month[$b],$day[$b],$year[$b]);
}
echo "anzahl Buchungen (nur nur Info) $anzahl"."<br>";
$resttage= floor(($datum[0] - $heute ) / 86400);
if ($heute < $datum[0]) { echo "noch " . $resttage ."Tage bis zur nächsten Buchung";}
if ($heute > $datum[0]) { echo "vor " . $resttage ."Tagen war die Buchung";}
echo "<br>";
$eintermin = 0;
//if ($resttage >0) {echo "die Wohnung ist ab sofort bis " . $von[0] . " frei.<br> " .$resttage ." Tage Urlaub an der Nordsee können sorfort beginnen.";}
if ($datum[1] - $datumbis[0] > 1) {echo "die Wohnung ist vom " . $bis[0] . " bis " .$von[1] ." frei Tage Urlaub an der Nordsee können sorfort beginnen.";}
echo "<br>";
if (($datum[1] - $datumbis[0]) > 87000) {$freibis = $von[1]; $freivon= $bis[0]; $eintermin = 1;}
// Hier habert es mit der Berechnung !!
// 180000 ist mehr als 2 Tage oder anders?
if (($datum[1] - $datumbis[0]) > 180000 && ($eintermin != 1) && ($datum[1] != $datumbis[0])) {$freivon = $von[0]; $freibis= 9999; $eintermin = 1;}
if (($datum[2] - $datumbis[1]) < 180000 && ($eintermin != 1) && ($datum[2] != $datumbis[1])) {$freivon = $von[1]; $freibis= $bis[0]; $eintermin = 1;}
if (($datum[3] - $datumbis[2]) < 180000 && ($eintermin != 1) && ($datum[3] != $datumbis[2])) {$freivon = $von[2]; $freibis= $bis[1]; $eintermin = 1;}
if (($datum[4] - $datumbis[3]) < 180000 && ($eintermin != 1)) {$freivon = $von[3]; $freibis= $bis[2]; $eintermin = 1;}
if (($datum[5] - $datumbis[4] > 180000) && ($eintermin = 0)) {$freivon = $von[4]; $freibis= $bis[3]; $eintermin = 1;}
if (($datum[6] - $datumbis[5] > 180000) && ($eintermin = 0)) {$freivon = $von[5]; $freibis= $bis[4]; $eintermin = 1;}
if (($datum[3] - $datumbis[6] > 180000) && ($eintermin = 0)) {$freivon = $von[6]; $freibis= $bis[5]; $eintermin = 1;}
if (($datum[4] - $datumbis[7] > 180000) && ($eintermin = 0)) {$freivon = $von[7]; $freibis= $bis[6]; $eintermin = 1;}
echo "<br>";
echo "---------------------";
if ($freivon > $heute) {$freivon = date("d.m.Y", $heute);}
echo "<br>";
if ($resttage >2) {echo "die Wohnung ist ab sofort bis " . $von[0] . " frei.";}
echo "<br>";
if ($eintermin = 1) {echo "die Wohnung ist vom " . $freibis . " bis " .$freivon ." frei ";}
?>
</body>
</html>