Agenda dagen gaan verkeerd met vorige / volgende

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Angelo van Cleef

Angelo van Cleef

27/10/2012 12:45:12
Quote Anchor link
Beste lezers,

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)
PHP script in nieuw venster Selecteer het PHP script
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
// 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++;
}
?>


<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.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.