Hét vraag- en antwoordplatform van Nederland

Ik maak een kalender met PHP. Als ik van december naar januari wil, welke code moet ik dan neerzetten (om de $_SESSION te resetten)?

Ik maak dus een kalender met de programmeertaal PHP. Kijk naar deze code:

$_SESSION['maand'] = 1;
$_SESSION['jaar'] = 2016;

$maand = $_SESSION['maand'];
$jaar = $_SESSION['jaar'];

if (isset($_POST['volgende_maand'])) {
$maand++;
$_SESSION['maand'] = $maand;
}

// als je op de button klikt, gaat ie naar de volgende maand

Ok, maar wat moet ik doen als ik van december naar januari wil (dus plus één maand en plus één jaar)? Deze code lukt niet:

if ($maand == 13) {
$maand = 1;
$jaar = 2017;
}

// als de maand 13 wordt, gaat ie automatisch naar maand 1 en jaar 2017

Dat werkt dus niet.

Kan iemand mij helpen hoe ik van december naar januari ga? Alvast bedankt!

Verwijderde gebruiker
8 jaar geleden
1.2K
Verwijderde gebruiker
8 jaar geleden
Trouwens. Als ik geen code doe voor de ''jaarwisseling'', krijg ik een error.
Verwijderde gebruiker
8 jaar geleden
Waar wordt de if-routine uitgevoerd? Het zou moeten werken wanneer het if-blok na de $maand++; staat. Is het niet handiger met een complete datum te werken. Dan hoef je deze kunstgreep niet te doen. Je zou ook de modulus van ($maand-1)/12 standaard bij het jaar kunnen optellen. Die is alleen 1 wanneer $maand de waarde 13 heeft.
Verwijderde gebruiker
8 jaar geleden
De $maand++ staat na het if-blok, maar het werkt nog steeds niet. En ik snap niet hoe je dat doet met die modulus.
Verwijderde gebruiker
8 jaar geleden
Kun je niet met een paar echo statements je code controleren? Als je terug naar januari wilt, schrijf je $maand niet terug in je session, is dat misschien het probleem? De genoemde modulus operatie hierboven is $maand = ($maand)+1; Die verhoogt en gaat automatisch naar 1. Verder kun je overwegen met echte datum types te werken, zoals dit: // 1 december 2015 $date = date_create();
date_date_set($date,2015,12,1);
echo date_format($date,"d-m-Y"); // maand erbij tellen $date = date_add($date, date_interval_create_from_date_string("1 month"));
echo date_format($date,"d-m-Y");
Verwijderde gebruiker
8 jaar geleden
Ik snap het om eerlijk te zijn nog steeds niet met de modulus. En ik heb het op die manier geprobeerd met de $date enzo, maar dat lukt niet want ik moet een if-statement hebben die telkens de maand met 1 verhoogt. Hoe reset je een session eigenlijk? Want hij moest eigenlijk zo gaan:
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
enz. enz. enz. Van 12 naar 1, maar hoe doe je dat met een session? Dat is mijn probleem.. :( Wel bedankt allebei.
Verwijderde gebruiker
8 jaar geleden
Ben je er al uit?
Verwijderde gebruiker
7 jaar geleden
Zou het niet (ik weet het niet zeker...) helpen als je de getallen strings maakt? (tussen de "s)

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Antwoorden (1)

Je vergeet de session variabelen aan te passen. Probeer:

if ($maand == 13) {
$maand = 1;
$_SESSION[‘maand’] = $maand;
$jaar = $jaar + 1;
$_SESSION[‘jaar’] = $jaar;
}
(Lees meer...)
rose
7 jaar geleden

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding