Avatar billede Slettet bruger
21. september 2006 - 00:38 Der er 17 kommentarer og
1 løsning

Til retning af kalender

Hej

Jeg har denne kalender.. http://www.csguide.dk/test_mcnet_vagter/kalender_1.php
Jeg vil gerne have så der står hva uge man var i ude i siden lige som dag navnet står øverst. og så vil jeg gerne have så de tomme felter viser de tidligere dato fra måneden før,

se evt på dette billede hvad jeg mener
http://www.csguide.dk/test_mcnet_vagter/img.png

her er min kode:

<?php
define("ADAY", (60*60*24));
if (!checkdate($_POST[month], 1, $_POST[year])) {
    $nowArray = getdate();
    $month = $nowArray['mon'];
    $year = $nowArray['year'];
} else {
    $month = $_POST[month];
    $year = $_POST[year];
}
$start = mktime (12, 0 , 0, $month, 1, $year);
$firstDayArray = getdate($start);
?>
<html>
<head>
<title><?php print "Calender: ".$firstDayArray['month']." ".$firstDayArray['year'] ?></title>
</head>

<body>
<form method="post" action="<?php print "$_SERVER[PHP_SELF]"; ?>">
    <select name="month">
<?php
    $months = Array("Jannary", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
   
for ($x=1; $x <= count($months); $x++) {
    print "\t<option value=\"$x\"";
    print ($x == $month)?" SELECTED":" ";
    print ">".$months[$x-1] . "\n";
}
?>
</select>
<select name="year">
<?php

for ($x=1980; $x<=2010; $x++) {
    print "\t<option";
    print ($x == $year)?" SELECTED" : "";
    print ">$x\n";
}
?>
</select>
<input type="submit" value="Go!" />
</form>
<br>
<?php
$days = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

print "<table border=1 callpadding=5>\n";
foreach ($days as $day) {
    print "\t<td><b>$day</b></td>\n";
}
for ($count=0; count < (6*7); $count++) {
    $dayArray = getdate($start);
        if (($count % 7) == 0) {
            if ($dayArray['mon'] != $month) {
                break;
            } else {
                print "</tr><tr>\n";
            }
        }
        if ($count < $firstDayArray['wday'] || $dayArray['mon'] != $month) {
            print "\t<td><br></td>\n";
        } else {
            print "\t<td>".$dayArray['mday']." &nbsp;&nbsp;</td>\n";
            $start += ADAY;
            echo $start;
        }
    }
    print "</tr></table>";
?>
</body>
</html>


på forhånd tak!!
Avatar billede ellebaek Nybegynder
21. september 2006 - 10:11 #1
Det her burde klare det for dig..
det er godt nok ikke testet. men prøv det lige, og så meld tilbage...

<?php
define("ADAY", (60*60*24));
if (!checkdate($_POST[month], 1, $_POST[year])) {
    $nowArray = getdate();
    $month = $nowArray['mon'];
    $year = $nowArray['year'];
} else {
    $month = $_POST[month];
    $year = $_POST[year];
}
$start = mktime (12, 0 , 0, $month, 1, $year);
$firstDayArray = getdate($start);
?>
<html>
<head>
<title><?php print "Calender: ".$firstDayArray['month']." ".$firstDayArray['year'] ?></title>
</head>

<body>
<form method="post" action="<?php print "$_SERVER[PHP_SELF]"; ?>">
    <select name="month">
<?php
    $months = Array("Jannary", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
 
for ($x=1; $x <= count($months); $x++) {
    print "\t<option value=\"$x\"";
    print ($x == $month)?" SELECTED":" ";
    print ">".$months[$x-1] . "\n";
}
?>
</select>
<select name="year">
<?php

for ($x=1980; $x<=2010; $x++) {
    print "\t<option";
    print ($x == $year)?" SELECTED" : "";
    print ">$x\n";
}
?>
</select>
<input type="submit" value="Go!" />
</form>
<br>
<?php
$days = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

print "<table border=1 callpadding=5>\n";
foreach ($days as $day) {
    print "\t<td><b>$day</b></td>\n";
}
for ($count=0; count < (6*7); $count++) {
    $dayArray = getdate($start);
        if (($count % 7) == 0) {
            if ($dayArray['mon'] != $month) {
                break;
            } else {
                print "</tr><tr>\n";
                print "<td>" . mcal_week_of_year($dayArray['mday'], $dayArray['mon'], $firstDayArray['year']) ."</td>";
            }
        }
        if ($count < $firstDayArray['wday'] || $dayArray['mon'] != $month) {
            print "\t<td><font color=\"grey\">$firstDayArray['mday']</font></td>\n";
        } else {
            print "\t<td>".$dayArray['mday']." &nbsp;&nbsp;</td>\n";
            $start += ADAY;
            echo $start;
        }
    }
    print "</tr></table>";
?>
</body>
</html>

Mvh. Jens
Avatar billede Slettet bruger
21. september 2006 - 14:16 #2
Ey jens. jeg takker først fordi du lige gad at bruge lidt tid, men den melder desværre fejl i linje 59

se evt. her http://mcd.zito.dk/kalender_1.php

det er noget med en funktions fejl. ??

håber du lige kan rette det ;)
Avatar billede sw_red_6 Nybegynder
21. september 2006 - 14:19 #3
hvilken version af PHP har du?
Avatar billede sw_red_6 Nybegynder
21. september 2006 - 14:22 #4
nej, lige meget.
Vi prøver noget andet i stedet for. lav en fil med phpinfo() og tjek at der står -with-mcal[] i Configure Command
Avatar billede Slettet bruger
21. september 2006 - 14:43 #5
php4 tror jeg. kan ikk lige helt huske
Avatar billede Slettet bruger
21. september 2006 - 14:47 #6
Avatar billede sw_red_6 Nybegynder
21. september 2006 - 14:50 #7
Desværre kan mcal ikke bruges på en windows server.
Du kan læse lidt mere om det her: http://dk.php.net/manual/da/ref.mcal.php
Avatar billede Slettet bruger
21. september 2006 - 15:49 #8
hvordan skal det så laves ?
Avatar billede ellebaek Nybegynder
21. september 2006 - 21:11 #9
hmm...

så prøver vi noget mere... :-)
Tilføjer lige en ekstra funktion...

<?php

function weeknumber ($d, $m, $y) {
  $wn = strftime("%W",mktime(0,0,0,$m,$d,$y));
  $wn += 0; # wn might be a string value
  $firstdayofyear = getdate(mktime(0,0,0,1,1,$y));
  if ($firstdayofyear["wday"] != 1)    # if 1/1 is not a Monday, add 1
      $wn += 1;
  return ($wn);



define("ADAY", (60*60*24));
if (!checkdate($_POST[month], 1, $_POST[year])) {
    $nowArray = getdate();
    $month = $nowArray['mon'];
    $year = $nowArray['year'];
} else {
    $month = $_POST[month];
    $year = $_POST[year];
}
$start = mktime (12, 0 , 0, $month, 1, $year);
$firstDayArray = getdate($start);
?>
<html>
<head>
<title><?php print "Calender: ".$firstDayArray['month']." ".$firstDayArray['year'] ?></title>
</head>

<body>
<form method="post" action="<?php print "$_SERVER[PHP_SELF]"; ?>">
    <select name="month">
<?php
    $months = Array("Jannary", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

for ($x=1; $x <= count($months); $x++) {
    print "\t<option value=\"$x\"";
    print ($x == $month)?" SELECTED":" ";
    print ">".$months[$x-1] . "\n";
}
?>
</select>
<select name="year">
<?php

for ($x=1980; $x<=2010; $x++) {
    print "\t<option";
    print ($x == $year)?" SELECTED" : "";
    print ">$x\n";
}
?>
</select>
<input type="submit" value="Go!" />
</form>
<br>
<?php
$days = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

print "<table border=1 callpadding=5>\n";
foreach ($days as $day) {
    print "\t<td><b>$day</b></td>\n";
}
for ($count=0; count < (6*7); $count++) {
    $dayArray = getdate($start);
        if (($count % 7) == 0) {
            if ($dayArray['mon'] != $month) {
                break;
            } else {
                print "</tr><tr>\n";
                print "<td>" . weeknumber($dayArray['mday'], $dayArray['mon'], $firstDayArray['year']) ."</td>";
            }
        }
        if ($count < $firstDayArray['wday'] || $dayArray['mon'] != $month) {
            print "\t<td><font color=\"grey\">$firstDayArray['mday']</font></td>\n";
        } else {
            print "\t<td>".$dayArray['mday']." &nbsp;&nbsp;</td>\n";
            $start += ADAY;
            echo $start;
        }
    }
    print "</tr></table>";
?>
</body>
</html>
Avatar billede Slettet bruger
22. september 2006 - 01:29 #10
Det virker ikkk helt den udskriver dette;

http://mcd.zito.dk/kalender_1.php
Avatar billede ellebaek Nybegynder
22. september 2006 - 09:33 #11
Jeg har lidt problemer med at hennemskue de forskellige variable, men tror det her er ved at være der....

<?php

function weeknumber ($d, $m, $y) {
  $wn = strftime("%W",mktime(0,0,0,$m,$d,$y));
  $wn += 0;
  $firstdayofyear = getdate(mktime(0,0,0,1,1,$y));
  if ($firstdayofyear["wday"] != 1)   
      $wn += 1;
  return ($wn);
}


define("ADAY", (60*60*24));
if (!checkdate($_POST[month], 1, $_POST[year])) {
    $nowArray = getdate();
    $month = $nowArray['mon'];
    $year = $nowArray['year'];
} else {
    $month = $_POST[month];
    $year = $_POST[year];
}
$start = mktime (12, 0 , 0, $month, 1, $year);
$firstDayArray = getdate($start);
?>
<html>
<head>
<title><?php print "Calender: ".$firstDayArray['month']." ".$firstDayArray['year'] ?></title>
</head>

<body>
<form method="post" action="<?php print "$_SERVER[PHP_SELF]"; ?>">
    <select name="month">
<?php
    $months = Array("Jannary", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

for ($x=1; $x <= count($months); $x++) {
    print "\t<option value=\"$x\"";
    print ($x == $month)?" SELECTED":" ";
    print ">".$months[$x-1] . "\n";
}
?>
</select>
<select name="year">
<?php

for ($x=1980; $x<=2010; $x++) {
    print "\t<option";
    print ($x == $year)?" SELECTED" : "";
    print ">$x\n";
}
?>
</select>
<input type="submit" value="Go!" />
</form>
<br>
<?php
$days = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

print "<table border=1 callpadding=5>\n";
foreach ($days as $day) {
    print "\t<td><b>$day</b></td>\n";
}
for ($count=0; count < (6*7); $count++) {
    $dayArray = getdate($start);
        if (($count % 7) == 0) {
            if ($dayArray['mon'] != $month) {
                break;
            } else {
                print "</tr><tr>\n";
                print "<td>" . weeknumber($dayArray['mday'], $dayArray['mon'], $firstDayArray['year']) ."</td>";
            }
        }
        if ($count < $firstDayArray['wday'] || $dayArray['mon'] != $month) {
            print "\t<td><font color=\"grey\">$firstDayArray['mday']</font></td>\n";
        } else {
            print "\t<td>".$firstDayArray['mday']." &nbsp;&nbsp;</td>\n";
            $start += ADAY;
            'echo $start;
        }
    }
    print "</tr></table>";
?>
</body>
</html>
Avatar billede Slettet bruger
23. september 2006 - 00:28 #12
Det virker sku ikke hm øvvv :( http://mcd.zito.dk/kalender_1.php
Avatar billede ellebaek Nybegynder
23. september 2006 - 00:35 #13
hmm... jeg har lidt svært ved at finde ud af hvordan jeg fanger de dage der ligger før  og efter den aktuelle måned.. men prøv lige den her...

<?php

function weeknumber ($d, $m, $y) {
  $wn = strftime("%W",mktime(0,0,0,$m,$d,$y));
  $wn += 0; # wn might be a string value
  $firstdayofyear = getdate(mktime(0,0,0,1,1,$y));
  if ($firstdayofyear["wday"] != 1)    # if 1/1 is not a Monday, add 1
      $wn += 1;
  return ($wn);
}


define("ADAY", (60*60*24));
if (!checkdate($_POST[month], 1, $_POST[year])) {
    $nowArray = getdate();
    $month = $nowArray['mon'];
    $year = $nowArray['year'];
} else {
    $month = $_POST[month];
    $year = $_POST[year];
}
$start = mktime (12, 0 , 0, $month, 1, $year);
$firstDayArray = getdate($start);
?>
<html>
<head>
<title><?php print "Calender: ".$firstDayArray['month']." ".$firstDayArray['year'] ?></title>
</head>

<body>
<form method="post" action="<?php print "$_SERVER[PHP_SELF]"; ?>">
    <select name="month">
<?php
    $months = Array("Jannary", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

for ($x=1; $x <= count($months); $x++) {
    print "\t<option value=\"$x\"";
    print ($x == $month)?" SELECTED":" ";
    print ">".$months[$x-1] . "\n";
}
?>
</select>
<select name="year">
<?php

for ($x=1980; $x<=2010; $x++) {
    print "\t<option";
    print ($x == $year)?" SELECTED" : "";
    print ">$x\n";
}
?>
</select>
<input type="submit" value="Go!" />
</form>
<br>
<?php
$days = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

print "<table border=1 callpadding=5><td><b>Week</b></td>\n";
foreach ($days as $day) {
    print "\t<td><b>$day</b></td>\n";
}
for ($count=0; count < (6*7); $count++) {
    $dayArray = getdate($start);
        if (($count % 7) == 0) {
            if ($dayArray['mon'] != $month) {
                break;
                echo "tester";
            } else {
                print "</tr><tr>\n";
                print "<td>" . weeknumber($dayArray['mday'], $dayArray['mon'], $firstDayArray['year']) ."</td>";
            }
        }
        if ($count < $firstDayArray['wday'] || $dayArray['mon'] != $month) {
            print "\t<td><font color=\"grey\">$firstDayArray['mday']</font></td>\n";
        } else {
            print "\t<td>".$dayArray['mday']." &nbsp;&nbsp;</td>\n";
            $start += ADAY;
            //echo $start;
        }
    }
    print "</tr></table>";
?>
</body>
</html>
Avatar billede Slettet bruger
23. september 2006 - 23:18 #14
http://mcd.zito.dk/kalender_1.php Det virker ikkke, har du evt en anden måde at lave det eller et helt andet script ?
Avatar billede Slettet bruger
02. oktober 2006 - 21:36 #15
lukker
Avatar billede ellebaek Nybegynder
02. oktober 2006 - 22:15 #16
og så smider jeg et svar i håb om lidt kompensation...

en del af det virkede da i hvert fald :-)
Avatar billede Slettet bruger
04. oktober 2006 - 14:23 #17
sry ellebeak. du skal da os have en lille skilling. smid et svar du gjorde da trods alt hvad du kunne :P
Avatar billede Slettet bruger
16. oktober 2006 - 15:37 #18
oka. så lukker jeg bare
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester