Jag har gjort iordning en admin-sida till en kalender. Denna sida består av en lista som byter antal rader
beroende på vilken månad och skottår som gäller. Varje rad har sin egen dag + veckodag som är placerade
längst till vänster i listan.
Det gäller också (+)-knapparna som finns placerade längst till höger och används för att lägga till nya händelser.
Varje rad innehåller också en eller flera rubrik-länkar som har varsin checkbox för borttag.
Länkarna går till ett formulär för ändring av händelsen.
Överst ovan listan finns bl a knappar för föregående och nästa månad. Det funkar bra att byta till annan månad
men det tar jag inte upp här.
Problemet är att placera händelserna på rätt ställen. Har försökt med mysql_fetch_array() som jag brukar göra
på andra sidor men det funkar inte bra här. Datorn blev knäpp när jag provade. Har också funderat på och provat
att använda en if-sats som jämför kalenderns datum med händelsens datum men det funkar inte heller så bra.
Finns det någon vettig lösning?
<?php
if($_GET['p'] == "calendar"){
include("functions.php");
// GET-variabler
$day = $_GET['day'];
$month = $_GET['month'];
$year = $_GET['year'];
// Om inga värden finns i GET-variablerna, då används dagens datum istället.
if($day == "")
$day = date("j");
if($month == "")
$month = date("n");
if($year == "")
$year = date("Y");
echo '<h4>Kalender</h4>';
if($_GET['status'] == "new"){
echo '<p><b style="color: green">
Du har nu lagt in en ny händelse till
'.strtolower(getWeekDayName( $_GET['day'], $_GET['month'], $_GET['year'])).' '.$_GET['day'].'
'.strtolower(getMonthName( $_GET['day'], $_GET['month'], $_GET['year'] )).' '.$_GET['year'].'!
</b>
</p>';
}
// Hämta händelser till kalendern.
$result = mysql_query("SELECT * FROM events");
echo '<p style="text-align: center">
<input type="button" onclick="document.location=\''.$_SERVER['PHP_SELF'].'?p=list_all\'"
value="Alla händelser: ';
// Antal händelser visas i knappen
echo mysql_num_rows( $result ).' st" />
// Knapp för att komma tillbaka till aktuell månad
<input type="button" onclick="document.location=\''.$_SERVER['PHP_SELF'].'
?p=calendar\'" value="I dag: '.date("j").'
'.strtolower(getMonthName(date("j"), date("m"), date("Y"))).' '.date("Y").'" />
</p>';
echo '
<table cellpadding="0" cellspacing="0" border="0" style="width:100%; margin-bottom: 10px">
<tr>
<td style="width: 35%; text-align: right">
<input type="button" value=" << " onclick="'.goLastMonth( $month, $year ).'\'"
style="width: 50px"
title="'.getMonthName($day, ($month-1), $year).'" /></td>
<td style="width: 30%; text-align: center">
<b style="font-size: 14px">'.getMonthName($day, $month, $year).' '.$year.'</b>
</td>
<td style="width: 35%">
<input type="button" value=" >> " onclick="'.goNextMonth( $month, $year ).'\'"
style="width: 50px"
title="'.getMonthName($day, ($month+1), $year).'" /></td></tr>
</table>';
echo '<form action="calendar_operations.php?p=delete" method="POST" style="margin: 0px">
<table cellpadding="3" cellspacing="0" border="0"
style="width: 100%">
<tr style="background-color: '.$headbgrdcolor.'">
<td colspan="2" style="width: 10%"><b>Datum</b></td>
<td style="width: 82%"><b>Rubrik</b> (borttag/ändring)</td>
<td style="width: 8%">_</td>
</tr>';
¨
// Totalt antal dagar i månaden - används till for-loopen nedan.
$daysInMonth = date("t", mktime(0,0,0, $month, $day, $year));
// Loopa rader med dagar och veckodagar efter antal dagar i månaden.
for( $i = 1; $i <= $daysInMonth; $i++)
{
// Funktionen selectDay sätter en annan bakgrundsfärg till raden för dagens datum.
echo '<tr class="'.selectDay( $i, $month, $year ).'">
<td style="border-bottom: solid '.$borderwidth.'px '.$borderlinecolor.';
font-weight: bold; font-size: 12px; text-align: right">'.$i.'</td>';
// Funktionen getWeekDay() används här nedan för att ta fram första bokstaven till svenska
// veckodagsnamn.
echo '<td style="border-bottom: solid '.$borderwidth.'px '.$borderlinecolor.';
font-weight: bold; font-size: 12px">
'.getWeekDay( $i, $month, $year ).'</td>
<td style="border-bottom: solid '.$borderwidth.'px '.$borderlinecolor.'">';
// Om kalenderns datum överensstämmer med händelsens datum, visa händelsens rubrik
if(date("Y-m-d", mktime( 0, 0, 0, $month, $i, $year)) == date("Y-m-d", $row['eventdate']))
{
echo '<input type="checkbox" name="del[]" value="'.$row['evid'].'"/>
<a href="'.$_SERVER['PHP_SELF'].'?p=edit_event&day='.$i.'&month='.$month.'
&year='.$year.'&evid='.$row['evid'].'">'.$row['heading'].'</a><br />';
}else{
echo '_';
}
// Funktionen showAddButton() används för att visa knappen för idag och kommande dagar men
// inte för tidigare dagar.
echo '</td>
<td style="border-bottom: solid '.$borderwidth.'px '.$borderlinecolor.'">'
.showAddButton( $i, $month, $year ).
'</td></tr>';
}
echo '<tr>
<td colspan="4" style="padding-top: 10px; text-align: right">
<input type="reset" name="reset" value="Rensa" />
<input type="submit" name="delete" value="Radera markerade händelser" />
</td></tr>
</table>
</form>';
}?>