Agenda dagen gaan verkeerd met vorige / volgende
ik laad mijn agenda in via een jQuery Ajax call.
Echter wil ik graag dat ik een volgende en vorige maand kan kiezen.
Echter krijg ik dit niet goed voor elkaar. Kan iemand mij aub vertellen hoe ik dit moet aanpakken en -of een voorbeeld code maken van de correcte functie?
Ik wil dus dat als er op vorige of volgende geklikt word, de timestamp word meegestuurd minus of plus één maand. Echter krijg ik de timestamp niet mee gestuurd.
De code die je onderaan ziet word al eens door een Ajax call geinclude in mijn index.php.
Mijn huidige code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// Get this months first day and last day in a timestamp
if(isset($_POST['timestamp'])){
$first_day = $_POST['timestamp'];
$last = date('t', $first_day);
$last_day = $first_day + (60*60*24*($last-1));
$headline = date("F", $first_day);
} else {
$first_day = strtotime(date("m/d/Y", strtotime(date('m').'/01/'.date('Y').' 00:00:00')));
$last_day = strtotime(date("m/d/Y", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')))));
$headline = date("F");
}
// Get time difference
$minus = strtotime('-1 month', $first_day);
$plus = strtotime('+1 month', $first_day);
// Display header
echo '<div class="month">
<div class="previous">
<a href="#" title="Vorige maand" onclick="previousMonth('.$minus.'); return false;"><<</a>
</div>
<div class="monthName">
'.$headline.'
</div>
<div class="next">
<a href="#" title="Volgende maand" onclick="nextMonth('.$plus.'); return false;">>></a>
</div>
</div>';
// Check amount of empty boxes to add
$first_day_of_week = date("D", $first_day);
switch($first_day_of_week)
{
case 'Mon':
$amount = 0;
break;
case 'Tue':
$amount = 1;
break;
case 'Wed':
$amount = 2;
break;
case 'Thu':
$amount = 3;
break;
case 'Fri':
$amount = 4;
break;
case 'Sat':
$amount = 5;
break;
case 'Sun':
$amount = 6;
break;
}
// Display the empty boxes
$b = 1;
for($c = 0; $c < $amount; $c++)
{
if($b % 7 != 0)
{
echo '<div class="day push-right b-space"></div>';
}
else
{
echo '<div class="day b-space"></div>';
}
$b++;
}
// Display all the other days
$i = $b;
// Loop through the results and display the days
while($first_day <= $last_day)
{
// Check for events
$query = mysql_query('SELECT tekst FROM site_agenda
WHERE
datum = "'.mysql_real_escape_string(date("Y-m-d", $first_day)).'"');
$rows = mysql_num_rows($query);
if($rows >= 1)
{
$a = ' booked';
}
else
{
$a = '';
}
// Display
if($i % 7 != 0)
{
echo '<div class="day push-right b-space'.$a.'">'.date("d", $first_day).'</div>';
}
else
{
echo '<div class="day b-space'.$a.'">'.date("d", $first_day).'</div>';
}
// Add 1 day to the timestamp and up the counter
$first_day += 60*60*24;
$i++;
}
?>
if(isset($_POST['timestamp'])){
$first_day = $_POST['timestamp'];
$last = date('t', $first_day);
$last_day = $first_day + (60*60*24*($last-1));
$headline = date("F", $first_day);
} else {
$first_day = strtotime(date("m/d/Y", strtotime(date('m').'/01/'.date('Y').' 00:00:00')));
$last_day = strtotime(date("m/d/Y", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')))));
$headline = date("F");
}
// Get time difference
$minus = strtotime('-1 month', $first_day);
$plus = strtotime('+1 month', $first_day);
// Display header
echo '<div class="month">
<div class="previous">
<a href="#" title="Vorige maand" onclick="previousMonth('.$minus.'); return false;"><<</a>
</div>
<div class="monthName">
'.$headline.'
</div>
<div class="next">
<a href="#" title="Volgende maand" onclick="nextMonth('.$plus.'); return false;">>></a>
</div>
</div>';
// Check amount of empty boxes to add
$first_day_of_week = date("D", $first_day);
switch($first_day_of_week)
{
case 'Mon':
$amount = 0;
break;
case 'Tue':
$amount = 1;
break;
case 'Wed':
$amount = 2;
break;
case 'Thu':
$amount = 3;
break;
case 'Fri':
$amount = 4;
break;
case 'Sat':
$amount = 5;
break;
case 'Sun':
$amount = 6;
break;
}
// Display the empty boxes
$b = 1;
for($c = 0; $c < $amount; $c++)
{
if($b % 7 != 0)
{
echo '<div class="day push-right b-space"></div>';
}
else
{
echo '<div class="day b-space"></div>';
}
$b++;
}
// Display all the other days
$i = $b;
// Loop through the results and display the days
while($first_day <= $last_day)
{
// Check for events
$query = mysql_query('SELECT tekst FROM site_agenda
WHERE
datum = "'.mysql_real_escape_string(date("Y-m-d", $first_day)).'"');
$rows = mysql_num_rows($query);
if($rows >= 1)
{
$a = ' booked';
}
else
{
$a = '';
}
// Display
if($i % 7 != 0)
{
echo '<div class="day push-right b-space'.$a.'">'.date("d", $first_day).'</div>';
}
else
{
echo '<div class="day b-space'.$a.'">'.date("d", $first_day).'</div>';
}
// Add 1 day to the timestamp and up the counter
$first_day += 60*60*24;
$i++;
}
?>
<script language="javascript" type="text/javascript">
function nextMonth(adding){
$.ajax({
type: 'POST',
url: 'includes/agenda.php',
data: {
timestamp : adding
},
success: function(html){
$('#agendacall').html(html)
}
});
}
function previousMonth(minus){
$.ajax({
type: 'POST',
url: 'includes/agenda.php',
data: {
timestamp : minus
},
success: function(html){
$('#agendacall').html(html)
}
});
}
EDIT:
Heb het nu werkend alleen gooit hij de dagen en lege velden een beetje in het honderd. Hopelijk kan iemand mij helpen alles correct te krijgen :)
Het ligt aan de regel "$last_day = strtotime(date("m/d/Y", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')))));" denk ik.
EDIT: Opgelost en werkt nu naar behoren. Code bovenstaand als iemand hem ook zou willen hebben toevallig :)
Gewijzigd op 27/10/2012 12:57:32 door Angelo van Cleef
Er zijn nog geen reacties op dit bericht.