Avatar billede postbil Nybegynder
03. september 2009 - 21:55 Der er 6 kommentarer

Jeg mangler hvis lige et par friske øjne til min php kalender

Hejsa Eksperter..
Jeg er ved at lave en kalender hvorfra det er muligt at gå fra måned til måned.. Men jeg har en fejl i mit script jeg kan fint bladre mellem de forskellige måneder (Dog er jeg ikke helt færdig med denne funktion så det er ikke muligt at gå videre til næste år endnu) men problemet er at ifølge min kalender starter alle måneder på en tirsdag.. Nu har jeg snart brugt 7 timer på at finde fejlen uden held, og kunne enlig godt bruge et par ekstra øjne. Så hvis der er en venlig sjæl der gider komme med et hint til hvad der kan være galt vil jeg blive meget glad..
Hilsen Mik 
Her kommer koden:

<?php
    session_start();

?>
<html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="style.css">     
        <style type="text/css" media="all">


table {
    width: 125px;
}

td {
    padding: 1px;
    border: 1px solid #666666;
    text-align: center;
}

        </style>
    </head>
    <body>
<?php 

// Hendt den aktuelle måned og år som integer
    $thismonth = ( int ) date( "m" );
    $thisyear = date( "Y" );
    $thismonth = $_SESSION['thismonth'];   
// Skift måned
      $_SESSION['thismonth'] = $thismonth; 
    if(isset($_POST['submit']) && $_POST['submit'] == '<-') {
        $thismonth = $thismonth - 1;

    }

    if(isset($_POST['submit']) && $_POST['submit'] == '->') {
        $thismonth = $thismonth + 1;

    }   
        $_SESSION['thismonth'] = $thismonth; 
// Find antal dage i den aktuele månede
    $numdaysinmonth = cal_days_in_month( CAL_GREGORIAN, $thismonth, $thisyear );

// Opret kalender objekt
    $jd = cal_to_jd( CAL_GREGORIAN, date( "m" ),date( 7 ), date( "Y" ) );

// find den første dag i måneden som integer (0 = Søndag, 1 = Mmandag, osv)
    $startday = jddayofweek( $jd , 0 );

// find månedens navn
    $monthname = jdmonthname( $jd, 1 );

// Find den aktuelle måneds navn
    $monthNames = array();
   
    $monthNames[1] = "Januar";
    $monthNames[2] = "Februar";
    $monthNames[3] = "Marts";
    $monthNames[4] = "April";
    $monthNames[5] = "Maj";
    $monthNames[6] = "Juni";
    $monthNames[7] = "Juli";
    $monthNames[8] = "August";
    $monthNames[9] = "September";
    $monthNames[10] = "Oktober";
    $monthNames[11] = "November";
    $monthNames[12] = "December";


?>
        <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
            <table>
                <tr>
                    <td colspan="7"><div align="center" style="font-size: 20;"><?php echo $monthNames[$thismonth] . ' - ' . $thisyear; ?></div></td>
                </tr>
                <tr>
                    <td>M</td>
                    <td>T</td>
                    <td>O</td>
                    <td>T</td>
                    <td>F</td>
                    <td>L</td>
                    <td>S</td>
                </tr>
                <tr>

    <?php

        // udfyld tomme celler
        $emptycells = 0;

        for( $counter = 0; $counter <  $startday; $counter ++ ) {
            echo "\t\t<td>-</td>\n";
            $emptycells ++;
        }

    // udfyld dage
        $rowcounter = $emptycells;
        $numinrow = 7;
        for( $counter = 1; $counter <= $numdaysinmonth; $counter ++ ) {
            $rowcounter ++;
            echo "\t\t<td>$counter</td>\n";
            if( $rowcounter % $numinrow == 0 ) {
                echo "\t</tr>\n";
                if( $counter < $numdaysinmonth ) {
                    echo "\t<tr>\n";
                }
                $rowcounter = 0;
            }
        }
       
    // Reset variabler

      $numcellsleft = $numinrow - $rowcounter;

       

      if( $numcellsleft != $numinrow ) {

        for( $counter = 0; $counter < $numcellsleft; $counter ++ ) {

            echo "\t\t<td>-</td>\n";
            $emptycells ++;

        }

       

      }
      echo $thismonth;
    ?>
                </tr>
                <tr>
                    <td><input type="submit" name="submit" value="<-" /></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td><input type="submit" name="submit" value="->" /></td>
            </table>
        </form>
    </body>
</html>
Avatar billede erikjacobsen Ekspert
03. september 2009 - 22:19 #1
Hvad mener du med date( 7 )  ?
Avatar billede postbil Nybegynder
03. september 2009 - 23:00 #2
æææ ja nu du siger det så skulle der stå date(1) i følg den tutorial jeg har fulgt.
http://www.drquincy.com/blog/php-calendar/
Men ved at ændre date(7) til date(1) som beskrevet i vejledningen ændres månedens start dag fra tirsdag til onsdag.. Men alle månederne starter stadig en onsdag.. jeg for står det ikke..
Avatar billede Slettet bruger
03. september 2009 - 23:08 #3
Ligesom Erik undrer jeg mig. Hvorfor bruge date(7), og ikke date('j')?
Avatar billede erikjacobsen Ekspert
03. september 2009 - 23:13 #4
Skal der ikke bare stå:  1
Avatar billede postbil Nybegynder
04. september 2009 - 00:47 #5
Hejsa og mange tak for jeres gode råd!!
Nu har jeg prøvet at skrive date("j") og date(1) men resultatet er det samme.
For at I har bedre mulighed for at se hvad jeg mener med problemet har jeg lagt kalenderen ud på www.postbil.com hvor I også kan hente koden..
Endnu endnu engang mange tak for jeres hjælp..

Mik
Avatar billede erikjacobsen Ekspert
04. september 2009 - 16:53 #6
Jamen, du skal skrive: 1 - det er den første dag i måneden, den 1.

Koden på http://n0p.com/885532.php ser sådan ud:

for ($i=1;$i<=12;$i++) {
  $jd = cal_to_jd( CAL_GREGORIAN, $i,1, 2009 ); print jddayofweek( $jd , 0 )."<br>\n";
}

og den udskriver årets måneders startdag - som ser rigtig nok ud:

4
0
0
3
5
1
3
6
2
4
0
2
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