Avatar billede MSR Juniormester
08. december 2012 - 10:58 Der er 13 kommentarer og
1 løsning

Forkerte månedsdage i kalender

Hej
jeg har rettet et lille script til så det passede min grafik og ønsker. nu har jeg det problem at når jeg viser denne måned(idag), er NAVNET rigtigt, DATOEN idag rigtigt men antallet af dage i måneden er forrige måned. pt står der 8/12 December men der er kun 30 dage og når jeg skifter frem kan jeg se at Marts har 28 dage.

jeg tænker at det er dato_string den er gal, men jeg kan ikke lure hvad? jeg har forsøgt at indsætte en tom værdi først i arrayet, men så ser jeg to ens måneder næste år? og november forsvinder?

hvad hulen gør jeg forkert?

jeg vil med tiden lave et bookingsystem ud af det, er det nemmeste så at bygge videre med mysql herfra, eller finde noget andet fra bunden?

Magnus

kode:
<?php
  $monthNames = Array("2Januar", "3Februar", "4Marts", "5April", "6Maj", "7Juni", "8Juli", "9August", "10September", "11Oktober", "12November", "13December");
  ?>
  <?php
if (!isset($_REQUEST["month"])) $_REQUEST["month"] = date("n");
if (!isset($_REQUEST["year"])) $_REQUEST["year"] = date("Y");
?>
<?php
$todaymonth = date("n");
$todayyear = date("Y");
$cMonth = $_REQUEST["month"];
$cYear = $_REQUEST["year"];

$prev_year = $cYear;
$next_year = $cYear;
$prev_month = $cMonth-1;
$next_month = $cMonth+1;

if ($prev_month == 0 ) {
    $prev_month = 12;
    $prev_year = $cYear - 1;
}
if ($next_month == 13 ) {
    $next_month = 1;
    $next_year = $cYear + 1;
}
?>
<table width="" border="0" cellspacing="2" cellpadding="5">
    <tr>
        <td colspan="7" bgcolor="#666666" style="color:#FFFFFF; text-align: center;"><strong><?php echo $monthNames[$cMonth-1].' '.$cYear; ?></strong></td>
    </tr>
    <tr style="background-color: #666666; color: #FFFFFF; text-align: center;">
        <td colspan="3" width="345" align="left"><a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $prev_month . "&year=" . $prev_year; ?>" style="color:#FFFFFF"><strong><-Forrige</strong></a></td>
        <td><a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $todaymonth . "&year=" . $todayyear; ?>" style="color:#FFFFFF"><strong>I dag</strong></a></td>
        <td colspan="3" width="345" align="right"><a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $next_month . "&year=" . $next_year; ?>" style="color:#FFFFFF"><strong>Næste-></strong></a></td>
    </tr>
    <tr>
    <td style="background-color: #666666; color: #FFFFFF; text-align: center; " width="14%"><strong>Man</strong></td>
    <td style="background-color: #666666; color: #FFFFFF; text-align: center; " width="14%"><strong>Tir</strong></td>
    <td style="background-color: #666666; color: #FFFFFF; text-align: center; " width="14%"><strong>Ons</strong></td>
    <td style="background-color: #666666; color: #FFFFFF; text-align: center; " width="14%"><strong>Tor</strong></td>
    <td style="background-color: #666666; color: #FFFFFF; text-align: center; " width="14%"><strong>Fre</strong></td>
    <td style="background-color: #666666; color: #FFFFFF; text-align: center; " width="14%"><strong>Lør</strong></td>
    <td style="background-color: #666666; color: #FFFFFF; text-align: center; " width="16%"><strong>Søn</strong></td>
  </tr>
<?php
$dato_string = mktime(0,0,0,$cMonth,0,$cYear);
$startdag = date("w",$dato_string);
$maxdage = date("t",$dato_string);
for( $i = 0 ; $i < $startdag; $i++ ){ print "<td>&nbsp;</td>\n";}
$aktuelle_position = $startdag;
for( $i = 1; $i <= $maxdage ; $i++){$bgcolor = "#ffffff"; $cColor = "#000080";
    if(( $i == date("j")) && ($cMonth == date("n")) && ($cYear == date("Y"))){$bgcolor = "#EEAA00"; $cColor = "#ffffff";}
    $aktuelle_position++;
    print "<td style=\"text-align: center; background-color:" . $bgcolor . "; color:" . $cColor . "\">" . $i . "</td>\n";
    if( $aktuelle_position == 7 ){print "</tr><tr>\n"; $aktuelle_position = 0;}
}
$slut_dag = 7-$aktuelle_position;
for( $i = 0 ; $i < $slut_dag ; $i++ )
print "<td style=\"background-color: #ffffff\">&nbsp;</td>\n";
print "</tr>";

?>
</table>
Avatar billede erikjacobsen Ekspert
08. december 2012 - 12:52 #1
Du skal lægge een til måneden i mktime
Avatar billede MSR Juniormester
08. december 2012 - 13:43 #2
Den her: $dato_string = mktime(0,0,0,$cMonth,0,$cYear);
så den bliver: $dato_string = mktime(0,0,1,$cMonth,0,$cYear);
???
Avatar billede MSR Juniormester
08. december 2012 - 13:46 #3
Nej hov det må være $dato_string = mktime(1,0,0,$cMonth,0,$cYear); ikke? min FTP er urimeligt langsom for tiden så jeg kan ikke bare teste det. bruger Surftown og det er helt tosset så lang tid der går før jeg kan se en opdateret fil.
Avatar billede MSR Juniormester
08. december 2012 - 14:12 #4
$dato_string = mktime(0,0,0,$cMonth+1,0,$cYear);
Det var sådan, jeg måtte lige læse op på det.

Nu er dagene til gengæld forkerte? kalenderen tror det er tirsdag i dag?
Avatar billede erikjacobsen Ekspert
08. december 2012 - 15:17 #5
Ja, $cMonth+1, men øhm, nu forstår jeg ikke lige hvad det gør, når du sætter dagen til 0 - næstsidste parameter.
Avatar billede MSR Juniormester
08. december 2012 - 15:18 #6
næææ som sagt er der noget jeg har fundet og rettet til. jeg tror ikke der er en $cDay hvis det er det du tænker?
Avatar billede erikjacobsen Ekspert
08. december 2012 - 16:33 #7
Ser den her rigtig nok ud: http://test.ebola.dk/973391.php ?

Ændringerne er her:

$dato_string = mktime(0,0,0,$cMonth,0,$cYear);
$dato_string2 = mktime(0,0,0,$cMonth+1,0,$cYear);
$startdag = date("w",$dato_string);
$maxdage = date("t",$dato_string2);
Avatar billede olebole Juniormester
08. december 2012 - 18:27 #8
<ole>

Erik, er du helt sikker på, det sidste eksempel er helt fri for vira?  *LoL*

/mvh
</bole>
Avatar billede MSR Juniormester
08. december 2012 - 18:55 #9
Det virker skide godt.
Tak for hjælpen :D

Til mit andet spørgsmål, om det kan betale sig at smide noget mysql ind og lave et bookingsystem. kan de betale sig?

Magnus
Avatar billede erikjacobsen Ekspert
08. december 2012 - 20:37 #10
ebola.dk er ganske ufarlig, Ole. Ebola står for Eriks Bommerter Og Lystige Affærer.

Og Magnus, det kan givetvis udbygges til et bookingsystem, og så kommer man ikke udenom en database underneden.

Og PS: Du må gerne acceptere dit eget svar. Jeg samler ikke.
Avatar billede MSR Juniormester
08. december 2012 - 21:04 #11
Ok jeg arbejder videre. Igen mange tak!
Avatar billede olebole Juniormester
09. december 2012 - 15:23 #12
"Eriks Bommerter Og Lystige Affærer" >> Og det skulle jeg så være mere tryg ved ...?!??!!!  *D

Det minder mig om hende, som i sidste uge blev indlagt på epidemisk afdeling med kombineret SARS, ebola og fugleinfluenza.

"Vi sætter dem øjeblikkeligt på pizzakuren, frue.", sagde lægen.

"Pizza ...?!!?!! ... er de sikker på, det hjælper, doktor?"

"Nøøhhh ... sikkert ikke - men det er det eneste, vi kan få ind under døren"
Avatar billede erikjacobsen Ekspert
09. december 2012 - 17:27 #13
Åh, der er en sygdom, der hedder ebola. Det er lidt sygt, så.
Avatar billede olebole Juniormester
09. december 2012 - 18:09 #14
*LoL* det ku' man sige :D
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

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