Hallo allemaal,

Ik zit met een klein probleem: Het lijkt er op dat bij het aanroepen van onderstaand script de $_SESSION niet direct wordt bijgewerkt. Hierdoor ontstaan in het rekengedeelte fouten.
Is er een instructie (nodig) om de $_SESSION-variabele direct bij te werken?


<?php

if($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    $cActie = $_POST['actie'];

    if($cActie == "vorige maand") {
        $nMaand = $_SESSION['maand'];
        $nMaand = $nMaand - 1;
        $nMaand_n = $_SESSION['maand_n'];
        $nMaand_n = $nMaand_n - 1;
        if($nMaand == 0) {
            $nMaand = 12;
            $nMaand_n = 12;
            $nJaar = $_SESSION['jaar'];
            $nJaar = $nJaar - 1;
        }
        $_SESSION['jaar'] = $nJaar;
        $_SESSION['maand'] = $nMaand;
        $_SESSION['maand_n'] = $nMaand_n;
        $cMaandAanduiding = $aMaanden[$nMaand_n] . " " . $nJaar; 
    } else {
        $nMaand = $_SESSION['maand'];
        $nMaand++;

        $nMaand_n = $_SESSION['maand_n'];
        $nMaand_n++;
        
        if($nMaand === 13) {
            $nMaand = 1;
            $nMaand_n = 1;
            $nJaar = $_SESSION['jaar'];
            $nJaar = $nJaar + 1;
        }
        $_SESSION['maand'] = $nMaand;
        $_SESSION['maand_n'] = $nMaand_n;
        $_SESSION['jaar'] = $nJaar;
        $cMaandAanduiding = $aMaanden[$nMaand_n] . " " . $nJaar; 
    }
}

?>


George van Baasbank
Je bent constant variabelen van de één na de ander aan het kopiëren.
Waarom gebruik je de POST en SESSION variabelen niet gewoon? Zal je code een heel stuk korter en overzichtelijker maken.

edit

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    
    if(isset($_POST['actie']) && $_POST['actie'] == "vorige maand") {

        if(isset($_SESSION['maand']) && $_SESSION['maand'] < 2) {
            $_SESSION['maand'] = 12;
            //$_SESSION['maand_n'] = 12;
            $_SESSION['jaar']--;
        } else {
            $_SESSION['maand']--;
            //$_SESSION['maand_n']--;
        }
        $cMaandAanduiding = $aMaanden[$_SESSION['maand']] . " " . $_SESSION['jaar']; 
    } else {
        if(isset($_SESSION['maand']) && $_SESSION['maand'] > 11) {
            $_SESSION['maand'] = 1;
            //$_SESSION['maand_n'] = 1;
            $_SESSION['jaar']++;
        } else {
            $_SESSION['maand']++;
            //$_SESSION['maand_n']++;
        }
        $cMaandAanduiding = $aMaanden[$_SESSION['maand']] . " " . $_SESSION['jaar']; 
    }
}
?>
Zet error reporting aan.
George van Baasbank op 30/01/2014 14:11:46

Ik zit met een klein probleem: Het lijkt er op dat bij het aanroepen van onderstaand script de $_SESSION niet direct wordt bijgewerkt. Hierdoor ontstaan in het rekengedeelte fouten.
Is er een instructie (nodig) om de $_SESSION-variabele direct bij te werken?

Nee, het is gewoon een stuk geheugen en zolang je de sessie niet geforceerd wegschrijft kan je er gewoon mee werken. Als er fouten in je code zitten dan zal het zeer waarschijnlijk niet daaraan liggen.

Reageren