Hey

Ik zet voor elke dag van de week bepaalde openingstijden in een database. Per dag kunnen er meerdere openingstijden zijn, bijvoorbeeld 's ochtends en 's avonds. Ik sla de dag op als dagnummer (date('w'), zondag=0, zaterdag=6). Dus bijvoorbeeld:

1: 10:00 - 12:00
1: 14:00 - 18:00
2: 10:00 - 18:00
etc.

Ik heb nu een functie dagNaam() waar ik voor "1" bijvoorbeeld "Maandag" return. Dit werkt wel, maar ik wil liever de dagnaam bepalen dmv date() of strftime(). Dit zodat afhankelijk van setlocale() gewoon de goede taal wordt gepakt.

Nou kom ik er alleen niet uit hoe. De functie date kan er wel een dagnaam aan geven, maar dan heb ik een timestamp nodig als parameter. En het lukt me ook niet echt om dmv strtotime() op basis van een dagnummer een timestamp te krijgen.

Iemand een idee?
Je kan toch gewoon de timestamp verkrijgen door time() of lees ik nu iets over 't hoofd?
Ik heb dus een lijst met dagnummers en bijbehorende tijden.

Dit kan vanalles zijn: 0 t/m 6, alleen 1,2,3, of 1,4,4,4,5, of 0,3,5,6. Op basis van dit dagnummer verkrijg ik de bijbehorende dagnaam nu dus met een functie, maar das niet zo flexibel wat betreft talen. Of ik moet voor elke taal een aparte functie maken, maar dat moet makkelijker kunnen.

De werking is dat op basis van de -huidige- dag in de database opgezocht wordt welke tijden hierbij horen. Maar voor het weergeven van de complete lijst moet de dagnaam op basis van dagnummer teruggezocht worden.
Hallo Veil,

Zelf heb ik er nog niet zo heel veel ervaring mee (ik gebruik het slechts sinds mijn laatste project), maar ik denk dat de functie 'setlocale' wel interessant is voor jouw probleem. Deze functie kan bijv. een datum transformeren naar de taal van de gekozen locatie.

Hier een paar links met meer informatie over de functie:
http://nl.php.net/setlocale
http://www.w3schools.com/php/func_string_setlocale.asp
http://forum.pcextreme.nl/index.php?showtopic=8690

Patrick Niezen
Idd, dat is ook wat ik probeer te krijgen:

setlocale(LC_ALL, 'nl_NL');
=> Woensdag, Donderdag

setlocale(LC_ALL, 'de_DE');
=> Mittwoch, Donnerstag

Alleen moet de dagnaam wel bepaald worden door een standaard functie (date of strftime bijv.), anders weet PHP niet waar het over gaat.
Oke, ik zie dat ik de functie setlocale() over het hoofd heb gezien in jouw starterspost - dan heb ik je verkeerd begrepen.

Als ik het goed begrijp wil je n.a.v. een cijfer (0 t/m 6) de dagnaam terug krijgen. Zou je dan niet iets kunnen doen als:

function getDayName($d) {
switch($d) {
case 0:
return date("l", mktime(0, 0, 0, 2, 10, 2008));
break;
case 1:
return date("l", mktime(0, 0, 0, 3, 10, 2008));
break;
// etc
default:
return false;
}
}

Niet de mooiste oplossing, maar je gebruikt per dag van de week een standaard tijd waarvan je weet dat het bijv. zondag of maandag is.

Dit is het snelste wat ik kon verzinnen, lost dit het probleem op?

Patrick Niezen
Nice, daar had ik nog helemaal niet aan gedacht :) Maar die dagnamen zullen toch nooit veranderen, dus volstaat prima in ieder geval.

Thanks!

Reageren