2012-09-16 81 views
0

我試圖得到一個日曆腳本連接到MySQL數據庫。腳本是一個簡單的日曆選擇器,我試圖連接到數據庫,因此它可以顯示事件。 我設法讓我的數據庫中顯示的事件在本月的所有日子裏都顯示出來,但是我希望它只在設置的那一天顯示爲鏈接。我還想添加一個添加和刪除事件的功能,但首先要做的是。從mySQL獲取事件。 PHP日曆

我的數據庫看起來是這樣的:

database: calendar 

table: calendar_events 
row1: event_title 
row2: event_shortdesc 
row3: event_start 

這是我的腳本整個代碼中,calendarfunction工作正常。

<?php include("includes/header.php")?> 
<?php require_once("includes/db_connection.php")?> 
<?php include("includes/functions.php")?> 

<?php 

if (!isset($_REQUEST["month"])) $_REQUEST["month"] = date("m"); 
if (!isset($_REQUEST["year"])) $_REQUEST["year"] = date("Y"); 

$cMonth = $_REQUEST["month"]; 
$cYear = $_REQUEST["year"]; 

$prev_year = $cYear; 
$next_year = $cYear; 
$prev_month = $cMonth-1; 
$next_month = $cMonth+1; 

if ($prev_month == 0) { 
    $prev_month = 12; 
    $prev_year = $cYear-1; 
} 

if ($next_month == 13) { 
    $next_month = 1; 
    $next_year = $cYear+1; 
} 

$monthNames = Array("Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", 
"August", "September", "Oktober", "November", "Desember"); 

?> 

<div id="kalendercontainer"> 

<a id="prev" href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $prev_month . "&year=" . $prev_year; ?>">Previous</a> 

<span id="monthname"><?php echo $monthNames[$cMonth-1].' '.$cYear; ?></span> 

<a id="next" href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $next_month . "&year=" . $next_year; ?>">Next</a> 

<table id="kalender"> 

<tr> 
<td><strong>Man</strong></td> 
<td><strong>Tir</strong></td> 
<td><strong>Ons</strong></td> 
<td><strong>Tor</strong></td> 
<td><strong>Fre</strong></td> 
<td><strong>Lør</strong></td> 
<td><strong>Søn</strong></td> 
</tr> 

<?php 
$timestamp = mktime(0,0,0,$cMonth,1,$cYear); 
$maxday = date("t",$timestamp); 
$thismonth = getdate ($timestamp); 
$startday = $thismonth['wday']-1; 


//Get calendar events 

$get_cal_events = mysql_query("SELECT * FROM calendar_events WHERE event_start = '{$startday}'"); 

$rows = mysql_fetch_array($get_cal_events); 

$event = $rows['event_title'] . $rows['event_shortdesc']; 


//Draw calendar 

for ($i=0; $i<($maxday+$startday); $i++) {   

    if(($i % 7) == 0) echo "<tr>"; 
    if($i < $startday) echo "<td></td>"; 

    else 

    echo "<td>" . ($event) . ($i - $startday + 1) . "</td>"; 
    if(($i % 7) == 6) echo "</tr>"; 
}     

?> 
</table> 
<p></p> 
</div> 

<?php require("includes/footer.php")?> 

回答

0

您需要呼應$event前要檢查活動當天細胞一天。對//Get calendar events//Draw Calendar進行以下2項更改。更改是在//ADD THIS CODE

這裏假定event_start是日期(即2012-09-17)。

//Get calendar events 

$get_cal_events = mysql_query("SELECT * FROM calendar_events WHERE event_start = '{$startday}'"); 

$rows = mysql_fetch_array($get_cal_events); 

$event = $rows['event_title'] . $rows['event_shortdesc']; 

//ADD THIS CODE 
// Gets the event day. Assuming the event_start is a mysql date (ie. 2012-09-17) 
$event_day = date("j", strtotime($rows['event_start'])); 


//Draw calendar 

for ($i=0; $i<($maxday+$startday); $i++) {   

if(($i % 7) == 0) echo "<tr>"; 
if($i < $startday) echo "<td></td>"; 

else 

echo "<td>"; 
    //ADD THIS CODE 
    // Checks to see if the event day is the same as the cell day 
    if ($event_day == ($i - $startday + 1)) echo $event; 
echo ($i - $startday + 1) . "</td>"; 
if(($i % 7) == 6) echo "</tr>"; 
}     
+0

我很抱歉,但我沒有得到這個工作。它使日曆顯示的第一天** if($ event_day ==($ i - $ startday + 1))echo $ event; **(我添加了一個紅色背景的div元素來查看它是否顯示)一個紅色的div,但沒有事件。不管數據庫中是否有事件。在mySQL中將event_start設置爲「date」, –

+0

首先,確保前面的行以'';'結尾,因爲這是if($ event_day ==($ i - $ startday + 1))的唯一原因之一。第二,你可能需要看看你在你的MySQL查詢中如何使用'$ startday''「SELECT * FROM calendar_events WHERE event_start ='echo $ event;'會被直接回顯,它應該與其他所有php一起運行 」 '{$ startday}'「'當我在2012年9月運行你的代碼時,它設置'$ startday' = 5,所以查詢將會是'WHERE event_start = 5',這將使得它在第一天這個月目前是5,而不是正確的一天。 – Sean

+0

之前的行有正確的結尾,所以我不知道它爲什麼不起作用。我會試着看看** $ startday **變量,看看我能否得到它的工作,感謝您的幫助! –