Belegungsplan - Kalender

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:

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&auml;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>&lt;&lt;&lt;&lt;</a>&nbsp;&nbsp;$monat_text[$monat] $jahr &nbsp;&nbsp;<a href=$PHP_SELF?actionx=$actionx&uin=$uin&monat=$nextmonat&jahr=$nextjahr&idwb=$idwb>&gt;&gt;&gt;&gt;</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
 
Zurück