kalender script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Teun Hesseling

Teun Hesseling

09/03/2012 11:07:30
Quote Anchor link
http://www.phphulp.nl/php/script/php-algemeen/kalender-met-weeknummers/1696/

Ik heb dat script gebruikt voor een kalender. Hij werkt prima, heb het een ander aan kunnen passen. alleen nu is mijn vraag. als hij een maand laat zien . zoals nu met maart dan laat hij ook de 4 resterende dagen van februari en de eerste dag van mei zien. eigenlijk wil ik dat liever niet, zodat je alleen echt de dagen van maand hebt. is dit simpel op te lossen? of kan ik beter maar beginnen met een eigen kalender te schrijven?
 
PHP hulp

PHP hulp

05/11/2024 15:52:57
 
Vincent Huisman

Vincent Huisman

09/03/2012 11:14:32
Quote Anchor link
lees eens regel 45
 
Teun Hesseling

Teun Hesseling

09/03/2012 11:32:44
Quote Anchor link
$edz = 0; als ik daar een 1 van maak , komt er een extra week bij. dat is niet de bedoeling , of bedoel je wat anders? het verwijderen ervan heeft ook geen nut , de dagen blijven staan.

Toevoeging op 09/03/2012 12:04:49:

het scriptje zoals ik hem heb aangepast ziet er nu zo uit:
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
<?php
function drukmaandaf($fm, $fy) {
  // zelfgedefinieerde dag- en maandnamen
  
  $dagnaam   = array(0 => "ma", "di", "wo", "do", "vr", "za", "zo");
  $maandnaam = array(1 => "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December");

  $nu = time();
  $by = (date("Y", $nu) == $fy);
  $bm = (date("n", $nu) == $fm);

  // zoek de eerste maandag van de week waarin de maand $fm begint
  
  $eerstedag = mktime(0, 0, 0, $fm, 1, $fy);
  if(date("w", $eerstedag) <> 1) {
  
    // eerste dag van de maand is geen maandag
    
    $eerstemaandag = mktime(0,0,0,$fm,1-(!date("w", $eerstedag) ? 6 : date("w", $eerstedag) - 1),$fy);
  }
else {
  
    // eerste dag van de maand valt op een maandag
    
    $eerstemaandag = $eerstedag;
  }


  // zoek de laatste zondag van de week waarin de maand $fm eindigt
  
  $laatstedag = mktime(0, 0, 0, $fm, date("t", mktime(0, 0, 0, $fm, 1, $fy)),$fy);
  if(date("w", $laatstedag)) {
  
    // laatste dag van de maand is geen zondag
    
    $laatstezondag = mktime(0, 0, 0, $fm+1, 7 - date("w",$laatstedag), $fy);
  }
else {
  
    // laatste dag van de maand valt op een zondag
    
   $laatstezondag = $laatstedag;
  }


  // we gaan kijken in hoeveel kalenderweken een maand zit. Hierbij moeten we op twee speciale gevallen
  // letten: de eerste maandag van januari en de laatste zondag van december, deze kunnen namelijk in
  // een ander jaar zitten en hierdoor de berekening van het het aantal weken verknoeien.

  $edz = 0; // extra dagen die aan de zondag toegevoegd moeten worden
  
  // we kunnen nu het aantal weken berekenen - het verschil tussen de
  // eerste maandag en de laatste zondag +1 is altijd deelbaar door 7.

  
  $aantalweken = (date("z", $laatstezondag) - date("z", $eerstemaandag) + 1)/7;

  // we kunnen nu mbv $eerstemaandag en $aantalweken de kalender van een maand af gaan drukken
  
  echo '<table border="1" cellspacing="0" cellpadding="2" width="400px">';
  echo '<tr><td colspan="'.($aantalweken+1).'" align="center">';
  echo $maandnaam[$fm].' '.$fy;
  echo '</td></tr>';
  
  // weeknummers afdrukken
  
  echo "<tr><td>Weeknummer</td>";
  for($i=0; $i < $aantalweken;  $i++) {
    $week = date("W", $eerstemaandag + $i * 604800 + 3600); // seconden in een week + een uur
    echo '<td width="50px">'.(($week < 10) ? $week : $week).'</td>';
  }

  echo "</tr>";

  // dagnamen en dagnummers afdrukken
  
  for($d = 0; $d < 7; $d++) {
    echo "<tr>";
    echo "<td>".$dagnaam[$d]."</td>";
    for($w = 0; $w < $aantalweken; $w++) {
    
      // in verband met zomer en wintertijd moet bij de dag een uur opgeteld worden
      // anders krijg je 2x dezelfde dag achter elkaar

      
      $dag = $eerstemaandag+($w*7+$d)*86400 + 3600;
      $dagnummer = date("d", $dag);
      $bd = (date("j", $nu) == $dagnummer);
      echo "<td".(date("n", $dag) <> $fm ? " ": ($by && $bm && $bd ? " " : "")).">";
      echo $dagnummer;
      echo "</td>";
    }

    echo '
        </tr>
    '
;
  }

  echo '
        </table>
    '
;
  
}
?>
Gewijzigd op 09/03/2012 11:36:06 door Teun Hesseling
 



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.