[php] datum volgorde

Pagina: 1
Acties:

Onderwerpen


  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Hoi,

Ik heb op de pagina http://www.economischcollege.nl/agenda.php een agenda staan waar binnenkort nog 2 maanden erbij komen vlak daar onder.
Nu wil ik dus zo gaan doen dat als de maand september om is dan verschijnt de maand oktober met de content in het kopje.
De maanden worden ieder apart geïnclude (hmm vaag woord) omdat ik die hebt gekoppeld aan een WYSIWYG editor.

Nu heb ik dus bedacht om een javascript te plaatsen die de maanden checkt en dan met php een if check doen voor de include dus zoiets als if maand = maand vanuit de javascript dan gaat ie maand.html includen en zo ook voor de andere 2 of is dit niet mogelijk? (of misschien denk ik te moeilijk?)

Wat je wil is niet altijd wat je nodig hebt!


  • Juup
  • Registratie: Februari 2000
  • Niet online
Ik neem aan dat je de includes in PHP doet (serverside) dus dan kan je niet client-side gaan checken of je een bepaalde maand wil tonen.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 08:50
Dit is op heel veel manieren te doen.

Kijk eens bij de date functie van PHP, die geeft je bv. het nummer van de maand. Dan noem je je HTML bestanden met de data bv. 01.html, 02.html etc. Of je gebruikt een array als koppeling tussen de maandnummers en de namen, of je gebruikt strtime om de maanden om te zetten naar de namen.

http://nl.php.net/date is je vriend, samen met eventueel de andere datum/tijd functies.

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Juup schreef op 11 September 2003 @ 10:19:
Ik neem aan dat je de includes in PHP doet (serverside) dus dan kan je niet client-side gaan checken of je een bepaalde maand wil tonen.
Ik kan toch checken of het de maand september is bijvoorbeeld met javascript? zo ja dan roept ie september.html op of zie ik het nou verkeerd?
Alleen wordt het bij mij een probleem met de 2 volgende maanden. Ik wil mijn maanden niet in getallen gaan doen maar met woorden, omdat de html documenten de namen van de maanden hebben plus de html extensie vanwege de WYSIWYG editor. is wel zo makkelijk uit elkaar te halen dan.

[ Voor 27% gewijzigd door mpie op 11-09-2003 14:11 ]

Wat je wil is niet altijd wat je nodig hebt!


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 08:50
mpie schreef op 11 september 2003 @ 14:08:Ik wil mijn maanden niet in getallen gaan doen maar met woorden, omdat de html documenten de namen van de maanden hebben plus de html extensie
Jelle Niemantsverdriet schreef op 11 september 2003 @ 10:28:Of je gebruikt een array als koppeling tussen de maandnummers en de namen, of je gebruikt strftime om de maanden om te zetten naar de namen.
$maanden = ("","januari","februari", etc.)

En iets dergelijks kan inderdaad ook wel in Javascript, maar als je toch al include met PHP lijkt me dat handiger (als ik Javascript uit heb staan, wil ik misschien toch wel graag de agenda kunnen lezen, of ik kan in een evil bui gaan proberen of ik naast september.html misschien ook wel ../../../geheim/wachtwoorden.html op mijn scherm kan krijgen door wat Javascript vars te veranderen).

Maar dit is allemaal niet echt rocket-science en ook prima gedocumenteerd. Zie bv. de link die ik eerder al gaf of kijk of je met Google nog andere dingen kunt vinden.

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
$maanden = ("","januari","februari", etc.)

En iets dergelijks kan inderdaad ook wel in Javascript, maar als je toch al include met PHP lijkt me dat handiger (als ik Javascript uit heb staan, wil ik misschien toch wel graag de agenda kunnen lezen, of ik kan in een evil bui gaan proberen of ik naast september.html misschien ook wel ../../../geheim/wachtwoorden.html op mijn scherm kan krijgen door wat Javascript vars te veranderen).

Maar dit is allemaal niet echt rocket-science en ook prima gedocumenteerd. Zie bv. de link die ik eerder al gaf of kijk of je met Google nog andere dingen kunt vinden.
Ik heb wel iets kunnen vinden de setlocale en als volgt toegepast aan de header van het agenda.
PHP:
1
2
3
4
5
6
7
8
9
10
<font size="2" face="verdana" color="#336699"><b>Agenda 
[<? 
setlocale( 'LC_ALL', 'nl_NL.ISO_8859-1'); 

$Maand = (strftime("%B"));
$Jaar = (strftime("%G"));

echo "$Maand $Jaar";
?>
]</b></font>

Vervolgens heb ik als include dit in php (dus java script weggelaten zoals je zei):
PHP:
1
2
3
4
5
6
7
8
<? 
setlocale( 'LC_ALL', 'nl_NL.ISO_8859-1'); 

$Maand = (strftime("%B")); 

include ('include/' . $Maand . '.html'); 

?>

Gelukkig werkt dit allemaal, maar nu het grapje voor de overige 2 maanden. Dat kan ik niet met dezelfde code oproepen denk ik. Of kun je die locale tijd +1 doen?
Jammer dat de server geen mysql heeft dan was het wat makkelijker geweest.

Wat je wil is niet altijd wat je nodig hebt!


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 08:50
Oh nu snap ik pas helemaal wat je bedoelt.

Om de naam van de maand te krijgen is wederom strftime prima geschikt. Wat je nu hierboven doet, is de maandnaam van dit moment krijgen. Maar strftime kent ook een 2e (optioneel) argument: een timestamp. Je moet dus een timestamp zien te maken voor de volgende maand, en dat meegeven aan strftime.

En hoe maak je dan zo'n timestamp: daarvoor is de mktime functie geschikt. Daarbij geef je gewenste tijd en maand/dag/jaar als argumenten mee en je krijgt een timestamp terug. Het handige is dat je hierbij dus inderdaad de maand gewoon 1 kunt ophogen, omdat een 'ongeldige' maand (bv. maand 13) automatisch omgezet wordt. Je hebt dus als het goed is geen problemen rond nieuwjaar.

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Jelle Niemantsverdriet schreef op 11 September 2003 @ 15:58:
En hoe maak je dan zo'n timestamp: daarvoor is de mktime functie geschikt. Daarbij geef je gewenste tijd en maand/dag/jaar als argumenten mee en je krijgt een timestamp terug. Het handige is dat je hierbij dus inderdaad de maand gewoon 1 kunt ophogen, omdat een 'ongeldige' maand (bv. maand 13) automatisch omgezet wordt. Je hebt dus als het goed is geen problemen rond nieuwjaar.
Krijg ik dan Januari te zien als "13de" maand zeg maar?

Wat je wil is niet altijd wat je nodig hebt!


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 08:50
mpie schreef op 11 September 2003 @ 16:07:
[...]
Krijg ik dan Januari te zien als "13de" maand zeg maar?
Als het goed is wel. Je moet maar even wat proberen met mktime om de werking goed door te krijgen, een timestamp is het aantal seconden sinds 1970. Met strftime en date zet je dat in leesbaarder vorm, zoals je dus al gedaan hebt.

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Jelle Niemantsverdriet schreef op 11 September 2003 @ 16:15:
[...]

Als het goed is wel. Je moet maar even wat proberen met mktime om de werking goed door te krijgen, een timestamp is het aantal seconden sinds 1970. Met strftime en date zet je dat in leesbaarder vorm, zoals je dus al gedaan hebt.
Wow ok dit is vaag dacht ik even alles opgelost te hebben met die setlocale blijkt dat hij de nederlandse datums niet herkent op die server. Ik heb nu dit en volgens mij is het goed zo :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? 
setlocale( 'LC_ALL', 'nl_NL.ISO_8859-1'); 

$Maand = (strftime("%B")); 

include ('include/' . $Maand . '.html');

echo "<hr width=\"100%\" color=\"#e4ebf1\" size=\"1\">";

$Maand1 = mktime (0,0,0,-2,1,2003);

$M1 = (strftime("%B", $Maand1));

include ('include/' . $M1 . '.html');
?>

Hij poept alleen alles in het engels uit dus.

Wat je wil is niet altijd wat je nodig hebt!


  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Thanx Jelle Niemantsverdriet ik ben er helemaal uit nu.
Heb de maanden maar in een array gestopt en er weer uitgepoept :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?  
function nl($timestamp)  
{  
  $maanden = Array    
   ("dummy","Januari","Februari","Maart",  
    "April","Mei","Juni","Juli","Augustus",  
    "September","Oktober","November",  
    "December");  

  $maand = $maanden[date("n",$timestamp)];  

  return $maand;  
}  


$nu = mktime(0,0,0,date("n"),1,2003);  
$datum = nl($nu);  

include ('include/' . $datum . '.html');

echo "<hr width=\"100%\" color=\"#e4ebf1\" size=\"1\">";

$Maand1 = mktime(0,0,0,date(("n")-2),1,2003);  
$M1 = nl($Maand1);
echo "<font size=\"2\" face=\"verdana\" color=\"#336699\"><b>&nbsp;&nbsp;&nbsp;&nbsp;$M1</font><br>";
include ('include/' . $M1 . '.html');

echo "<hr width=\"100%\" color=\"#e4ebf1\" size=\"1\">";

$Maand2 = mktime(0,0,0,date(("n")-1),1,2003);  
$M2 = nl($Maand2);
echo "<font size=\"2\" face=\"verdana\" color=\"#336699\"><b>&nbsp;&nbsp;&nbsp;&nbsp;$M2</font><br>";
include ('include/' . $M2 . '.html');
?>

Of bedoelde je het nou makkelijker?

Wat je wil is niet altijd wat je nodig hebt!


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 08:50
neehoor dit lijkt wel ok. Ik zou zelf alleen niet januari-1 en januari-2 doen, maar huidige maand+1 en huidige maand+2.

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Jelle Niemantsverdriet schreef op 11 September 2003 @ 16:59:
neehoor dit lijkt wel ok. Ik zou zelf alleen niet januari-1 en januari-2 doen, maar huidige maand+1 en huidige maand+2.
Dat had ik geprobeert maar op de een of ander manier geeft ie januari en februari aan.

Wat je wil is niet altijd wat je nodig hebt!

Pagina: 1