2012-09-08 75 views
0

我正在做一個星期的一週(24小時日曆),這將用於記錄什麼時間已經預訂和幾天。PHP日曆顯示幾個

這就像您預訂了插槽的時間表。爲了確保已預訂和未預訂的插槽不同,我使用PHP if語句檢查數據庫的時間。

問題是;我相信我的if語句只能用於一行,而不像while語句可用於多個語句。 - 所以基本上我希望能夠每天預訂超過一小時 - 看到每天一個多小時

(數據庫插入不是問題 - 在日曆上顯示它是)

我不能做一段時間的陳述,因爲我不確定我將如何用一個結構來安排我的日程安排/日曆。

這裏是我的問題:http://postimage.org/image/gcb3x3fk3/ (如果我09月09日18:00預訂 - 它不會顯示)

$ globalid是一個全局變量,而不是文件/代碼中舉行下面(但包括)

我的代碼

<div id="calendar"> 
<? 
if(isset($_POST['add_week'])){ 
    $week = date('d-m-Y', strtotime($_POST['last_week'])); 
    $new_week = strtotime ('+1 week' , strtotime ($week)) ; 
    $new_week = date('d-m-Y', $new_week); 


    $week_number = date("W", strtotime($new_week)); 
    $year = date("Y", strtotime($new_week)); 
}else if(isset($_POST['back_week'])){ 
    $week = date('d-m-Y', strtotime($_POST['last_week'])); 
    $new_week = strtotime ('-1 week' , strtotime ($week)) ; 
    $new_week = date('d-m-Y', $new_week); 


    $week_number = date("W", strtotime($new_week)); 
    $year = date("Y", strtotime($new_week)); 
}else{ 

$week_number = date("W"); 
$year = date("Y"); 
} 
/*if($week_number < 10){ 
    $week_number = "0".$week_number; 
}*/ 
$week_start = date('d-m-Y', strtotime($year."W".$week_number,0)); 
?> 

<table name="week" width="100%" cellspacing="0" cellpadding="0" height="13"> 
    <tr> 
<? 
for($day=1; $day<=7; $day++) 
{ 
?> 
<tr> 
<td class="day"> 
<? 
$daycal = date('d M', strtotime($year."W".$week_number.$day)).""; 
echo $daycal; 
?> 
</td> 
<td width="3"> </td> 
<td> 
<!-- Timetable --> 
<table width="100%" cellspacing="0" cellpadding="0" height="13"> 
<tr><td> 
<? 
// Do not edit Below 
$cal = mysql_query("SELECT * FROM `calendar` WHERE `day`='$daycal' && `userid`='$globalid'")or die(mysql_error()); 
$calendar = mysql_fetch_array($cal); 
?> 
<div class="hour" name="00:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="00:00"){ 
?> 
Booked 
<? }else{ ?> 
00:00 
<? } ?> 
</div> 
<div class="hour" name="01:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar2['time']=="01:00"){ 
?> 
Booked 
<? }else{ ?> 
01:00 
<? } ?> 
</div> 
<div class="hour" name="02:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar3['time']=="02:00"){ 
?> 
Booked 
<? }else{ ?> 
02:00 
<? } ?> 
</div> 
<div class="hour" name="03:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="03:00"){ 
?> 
Booked 
<? }else{ ?> 
03:00 
<? } ?> 
</div> 
<div class="hour" name="04:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="04:00"){ 
?> 
Booked 
<? }else{ ?> 
04:00 
<? } ?> 
</div> 
<div class="hour" name="05:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="05:00"){ 
?> 
Booked 
<? }else{ ?> 
05:00 
<? } ?> 
</div> 
<div class="hour" name="06:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="06:00"){ 
?> 
Booked 
<? }else{ ?> 
06:00 
<? } ?> 
</div> 
<div class="hour" name="07:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="07:00"){ 
?> 
Booked 
<? }else{ ?> 
07:00 
<? } ?> 
</div> 
<div class="hour" name="08:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="08:00"){ 
?> 
Booked 
<? }else{ ?> 
08:00 
<? } ?> 
</div> 
<div class="hour" name="09:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="09:00"){ 
?> 
Booked 
<? }else{ ?> 
09:00 
<? } ?> 
</div> 
<div class="hour" name="10:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="10:00"){ 
?> 
Booked 
<? }else{ ?> 
10:00 
<? } ?> 
</div> 
<div class="hour" name="11:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="11:00"){ 
?> 
Booked 
<? }else{ ?> 
11:00 
<? } ?> 
</div> 
<div class="hour" name="12:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="12:00"){ 
?> 
Booked 
<? }else{ ?> 
12:00 
<? } ?> 
</div> 
<div class="hour" name="13:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="13:00"){ 
?> 
Booked 
<? }else{ ?> 
13:00 
<? } ?> 
</div> 
<div class="hour" name="14:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="14:00"){ 
?> 
Booked 
<? }else{ ?> 
14:00 
<? } ?> 
</div> 
<div class="hour" name="15:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="15:00"){ 
?> 
Booked 
<? }else{ ?> 
15:00 
<? } ?> 
</div> 
<div class="hour" name="16:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="16:00"){ 
?> 
Booked 
<? }else{ ?> 
16:00 
<? } ?> 
</div> 
<div class="hour" name="17:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="17:00"){ 
?> 
Booked 
<? }else{ ?> 
17:00 
<? } ?> 
</div> 
<div class="hour" name="18:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="18:00"){ 
?> 
Booked 
<? }else{ ?> 
18:00 
<? } ?> 
</div> 
<div class="hour" name="19:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="19:00"){ 
?> 
Booked 
<? }else{ ?> 
19:00 
<? } ?> 
</div> 
<div class="hour" name="20:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="20:00"){ 
?> 
Booked 
<? }else{ ?> 
20:00 
<? } ?> 
</div> 
<div class="hour" name="21:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="21:00"){ 
?> 
Booked 
<? }else{ ?> 
21:00 
<? } ?> 
</div> 
<div class="hour" name="22:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="22:00"){ 
?> 
Booked 
<? }else{ ?> 
22:00 
<? } ?> 
</div> 
<div class="hour" name="23:00" id="<? echo $daycal; ?>"> 
<? 
if($calendar['time']=="23:00"){ 
?> 
Booked 
<? }else{ ?> 
23:00 
<? } ?> 
</div> 
</td></tr> 
</table> 

<!-- End Timetable --> 
</td> 
</tr> 
<tr height="3"><td> </td></tr> 
<? 
} 
?> 
</tr> 
<tr> 
<form name="move_weeks" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
<input type="hidden" name="last_week" value="<? echo $week_start; ?>" /> 
<td colspan="7"><input type="submit" name="back_week" value="back_week" /><input type="submit" name="add_week" value="add_week" /> 
</td> 
</form> 
</tr> 
</table> 
</div> 

回答

0

如此巨大的和無用的代碼。爲什麼不通過,並從100行的C環噢,只有10? 我試着重新組織你的代碼。所以最後我有這個:

<div id="calendar"> 
<?php 
    $week = date('d-m-Y', strtotime($_POST['last_week'])); 

    if(isset($_POST['add_week'])) 
     $new_week = strtotime ('+1 week' , strtotime ($week)) ; 
    if(isset($_POST['back_week'])) 
     $new_week = strtotime ('-1 week' , strtotime ($week)) ; 

    $new_week = date('d-m-Y', $new_week); 

    if(!isset($_POST['add_week']) && !isset($_POST['back_week'])) 
    { 
     $week_number = date("W"); 
     $year = date("Y"); 
    } 
    else 
    { 
     $week_number = date("W", strtotime($new_week)); 
     $year = date("Y", strtotime($new_week)); 
    } 

    $week_start = date('d-m-Y', strtotime($year."W".$week_number,0)); 
?> 

<table name="week" width="100%" cellspacing="0" cellpadding="0" height="13"> 
    <tr> 
<? 
for($day=1; $day<=7; $day++) 
{ 
?> 
<tr> 
    <td class="day"> 
     <?=$daycal = date('d M', strtotime($year."W".$week_number.$day))."";?> 
    </td> 

    <td width="3"> </td> 
    <td> 
    <!-- Timetable --> 
    <table width="100%" cellspacing="0" cellpadding="0" height="13"> 
     <tr> 
      <td> 
      <? 
       // Do not edit Below 
       $cal = mysql_query("SELECT * FROM `calendar` WHERE `day`='$daycal' && `userid`='$globalid'")or die(mysql_error()); 
       $calendar = mysql_fetch_array($cal); 

       for($cnt=0; $cnt<=24; $cnt++) 
       { 
        $hour = ($cnt<10?'0':'').$cnt.':00'; 
      ?> 
       <div class="hour" name="<?=$hour?>" id="<? echo $daycal; ?>"> 
        <?= ($calendar['time']==$hour) ? 'Booked' : $hour; ?> 
       </div> 
      <? 
       } 
      ?> 
      </td> 
     </tr> 
    </table> 
    <!-- End Timetable --> 
    </td> 
</tr> 
<tr height="3"> 
    <td> </td> 
</tr> 
<? 
} 
?> 
</tr> 
<tr> 
    <form name="move_weeks" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <input type="hidden" name="last_week" value="<? echo $week_start; ?>" /> 
     <td colspan="7"> 
      <input type="submit" name="back_week" value="back_week" /> 
      <input type="submit" name="add_week" value="add_week" /> 
     </td> 
    </form> 
</tr> 
</table> 
</div> 
+0

可能是這樣。但是,它不能解決我每天顯示多個預訂時隙的問題 – Andrew

+0

我不正確地理解問題。你能說更多嗎? – StasGrin

+0

我想每天顯示多個預訂位置。 當前的if語句只會告訴我第一行/時間(當天 - 按ID /按插入時間排序),而不像while語句,它將顯示當天預訂的所有小時數,但用當前代碼不能添加一段時間的陳述圍繞我的代碼,我不認爲。 – Andrew