thespecialx
Mitglied
Hallo,
es geht um Folgendes : ich will ein Script programmieren das mir alle belegte und freie Zimmer in einem bestimmten Zeitraum anzeigt.
Dafür habe ich zwei MYSQL- Tabellen erstellt:
1. Tabelle : zimmer:
`id` int(4) NOT NULL auto_increment,
`nr` int(5) NOT NULL default '0',
`bett` int(2) NOT NULL default '0',
`tel` int(5) NOT NULL default '0',
`wb` int(2) NOT NULL default '0',
2.Tabelle: zimmer_belegung
`id` int(10) NOT NULL auto_increment,
`zid` int(4) NOT NULL default '0',
`bewohner` int(5) NOT NULL default '0',
`art` varchar(32) NOT NULL default '',
`von` int(15) NOT NULL default '0',
`bis` int(15) NOT NULL default '0',
`keyx` varchar(32) NOT NULL default '',
In der ersten Tabelle sind die zimmer-relevanten Daten gespeichert.
In die zweite Tabelle kommen die Informationen bei einem Check-In , also wie lange sich der gast im Zimmer aufhält. VON-BIS
Das Script:
So, die Kästchen im Kalender werden im Zeitraum VON-BIS in einer bestimmten Farbe gekennzeichnet.
Mein Problem ist es nicht, EIN Datum in den Spalten/ Zeielen zu markieren/auszugeben, sondern
es könnte sein: ein Zimmer wird in einem Monat mehrmals belegt, also kommen diese Informationen in die Tabelle "zimmer_belegung" und dann aus dieser Tabelle , soll er mir
in einer Zeile den Zeitraum der Belegung anzeigen.
Hier noch ein Screenshot : Bild
Vielen Dank
es geht um Folgendes : ich will ein Script programmieren das mir alle belegte und freie Zimmer in einem bestimmten Zeitraum anzeigt.
Dafür habe ich zwei MYSQL- Tabellen erstellt:
1. Tabelle : zimmer:
`id` int(4) NOT NULL auto_increment,
`nr` int(5) NOT NULL default '0',
`bett` int(2) NOT NULL default '0',
`tel` int(5) NOT NULL default '0',
`wb` int(2) NOT NULL default '0',
2.Tabelle: zimmer_belegung
`id` int(10) NOT NULL auto_increment,
`zid` int(4) NOT NULL default '0',
`bewohner` int(5) NOT NULL default '0',
`art` varchar(32) NOT NULL default '',
`von` int(15) NOT NULL default '0',
`bis` int(15) NOT NULL default '0',
`keyx` varchar(32) NOT NULL default '',
In der ersten Tabelle sind die zimmer-relevanten Daten gespeichert.
In die zweite Tabelle kommen die Informationen bei einem Check-In , also wie lange sich der gast im Zimmer aufhält. VON-BIS
Das Script:
PHP:
<?
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/smstyle.css\">";
require("config.php");
$kopf = "#FF9900";
$tage = "floralwhite";
$bgcolor = "floralwhite";
$heute = "red";
$hat = "red";
$sa = "red";
$so = "red";
$zeit = time();
$datum = getdate($zeit);
$tag = "$datum[mday]";
$tag1 = date("D",$zeit);
$dieser_monat = "$datum[mon]";
$dieses_jahr = "$datum[year]";
$monat_text = array("null","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
if(!isset($monat)) {
$monat="$datum[mon]";
}
if(!isset($jahr)) {
$jahr="$datum[year]";
}
$schaltjahr = gettype($jahr/4);
if($schaltjahr=="integer")
{
$monat_tage = array(0,31,29,31,30,31,30,31,31,30,31,30,31);
}
else {
$monat_tage = array(0,31,28,31,30,31,30,31,31,30,31,30,31);
}
$start = getdate(mktime(2,0,0,$monat,1,$jahr));
$beginn = "$start[wday]";
if($beginn==0)
{
$beginn=7;
}
if($monat==1)
{
$lastmonat=12;
$lastjahr=$jahr-1;
}
else {
$lastmonat = $monat - 1;
$lastjahr=$jahr;
}
if($monat==12)
{
$nextmonat=1;
$nextjahr=$jahr+1;
}
else {
$nextmonat = $monat + 1;
$nextjahr=$jahr;
}
$cellp=$monat_tage[$monat]+3;
echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"1\">
<tr>
<td colspan=\"$cellp\" align=\"center\" bgcolor=\"$kopf\">
<a href=$PHP_SELF?uin=$uin&monat=$lastmonat&jahr=$lastjahr&idwb=$idwb><<<<</a> $monat_text[$monat] $jahr <a href=$PHP_SELF?actionx=$actionx&uin=$uin&monat=$nextmonat&jahr=$nextjahr&idwb=$idwb>>>>></a></td></tr>";
echo "</tr>";
echo "<tr>";
echo "<td align=\"center\">Nr</td>";
echo "<td align=\"center\">Bett</td>";
echo "<td align=\"center\">Bewohner</td>";
$tagnummer = 1;
for($y=1;$y<=($monat_tage[$monat]);$y++)
{
echo "<td width=\"20\""; echo "bgcolor=\"cococo\""; echo "align=\"center\">$tagnummer</td>";
$tagnummer++;
}
echo "<tr>";
echo "<td width=\"20\" align=\"center\"></td>";
echo "<td width=\"20\" align=\"center\"></td>";
echo "<td width=\"100\" align=\"center\"></td>";
$tagnummer = 1;
for($y=1;$y<=($monat_tage[$monat]);$y++)
{
$checkdat=mktime(0,0,0,$monat,$tagnummer,$jahr);
$tagx1 = date("D",$checkdat);
switch ($tagx1)
{
case 'Mon':
$dayx = "Mo";
break;
case 'Tue':
$dayx = "Di";
break;
case 'Wed':
$dayx = "Mi";
break;
case 'Thu':
$dayx = "Do";
break;
case 'Fri':
$dayx = "Fr";
break;
case 'Sat':
$dayx = "Sa";
break;
case 'Sun':
$dayx = "So";
break;
}
echo "<td width=\"20\""; echo "bgcolor=\"$bgcolor\""; echo "align=\"center\">$dayx</td>";
$tagnummer++;
}
echo "</tr>";
echo "<tr>";
if ($idwb==''){$idwb='12';}
$result=mysql_query(" select * from zimmer where wb='$idwb'");
while($row=mysql_fetch_array($result)){
$zimmer=$row["id"];
$nrx=$row["nr"];
$bett=$row["bett"];
$resultq=mysql_query(" select * from zimmer_belegung where id='$zimmer'");
$rowq=mysql_fetch_array($resultq);
$bisq=$rowq["bis"];
$vonq=$rowq["von"];
if ($bisq=='0'){
$bisx=0;
} else{
$bisd=date("d",$bisq);
$bism=date("m",$bisq);
$bisy=date("y",$bisq);
$bisx=mktime(0,0,0,$bism,$bisd,$bisy);
}
if ($vonq=='0'){
$vonx=0;
} else{
$vond=date("d",$vonq);
$vonm=date("m",$vonq);
$vony=date("y",$vonq);
$vonx=mktime(0,0,0,$vonm,$vond,$vony);
}
echo "<td width=\"20\" align=\"center\"><a href=checkin.php?uin=$uin&zimmer=$zimmer>$nrx</td>";
echo "<td width=\"20\" align=\"center\">$bett</td>";
echo "<td width=\"180\" align=\"center\">$nv</td>";
$zeile = 1; $spalte = 1; $tagnummer = 1;
for($y=1;$y<=($monat_tage[$monat]);$y++) {
$checkdat=mktime(0,0,0,$monat,$tagnummer,$jahr);
if ($bisq!='0'){
echo "<td width=\"20\"";
if($vonx==$checkdat ) {echo "bgcolor=\"$hat\"";}
else
if($bisx==$checkdat ) {echo "bgcolor=\"$hat\"";}
else
if($vonx<$checkdat && $bisx>$checkdat ) {echo "bgcolor=\"$hat\"";}
else
if($vonx<$checkdat ) {
echo "bgcolor=\"$bgcolor\"";
}
else
{
echo "bgcolor=\"$bgcolor\"";
}
echo "align=\"center\"></td>";
$tagnummer++;
} else
if ($vonq=='0')
{
echo "<td width=\"20\""; echo "bgcolor=\"$bgcolor\""; echo "align=\"center\"></td>";
$tagnummer++;
}
else
if ($bisq=='0'){
echo "<td width=\"20\"";
if($vonx==$checkdat ) {echo "bgcolor=\"$hat\"";}
else
if($vonx<$checkdat ) {echo "bgcolor=\"$hat\"";}
else
{
echo "bgcolor=\"$bgcolor\"";
}
echo "align=\"center\"></td>";
$tagnummer++;
}
}
echo "</tr>";
}
echo "</table>";
?>
So, die Kästchen im Kalender werden im Zeitraum VON-BIS in einer bestimmten Farbe gekennzeichnet.
Mein Problem ist es nicht, EIN Datum in den Spalten/ Zeielen zu markieren/auszugeben, sondern
es könnte sein: ein Zimmer wird in einem Monat mehrmals belegt, also kommen diese Informationen in die Tabelle "zimmer_belegung" und dann aus dieser Tabelle , soll er mir
in einer Zeile den Zeitraum der Belegung anzeigen.
Hier noch ein Screenshot : Bild
Vielen Dank