Een hele tijd geleden kwam ik hier met een probleem, dat ik mijn huidige DJ wou laten zien. Daar kreeg ik toen dit script voor:
<?php
$uur = date("H");

switch ($uur) {
    case ($uur >= "00" && $uur < "08"):
        echo "Random muziek door Juke Box";
        break;

    case ($uur >= "08" && $uur < "10"):
        echo "Jerry's ochtendshow";
        break;

    case ($uur >= "10" && $uur < "12"):
        echo "Koffietijd met Karel";
        break;

    case ($uur >= "12" && $uur < "16"):
        echo "Middagmuziek met Maarten";
        break;
// etc....
}
?> 

Dit script is op zich prima, maar is dan voor elke dag hetzelfde. Ik heb natuurlijk niet per dag op elk tijdstip hetzelfde programma.

Ik snap dat het erg lang word, maar kunnen jullie me uitleggen hoe ik dit zo maak maar dan per dag aanpasbaar? Op deze manier:

Maandag
0 - 8 Auto DJ
8 - 10 Piet zingt
10 - 16 Auto DJ
16 - 20 Avondbabbels
20 - 22 Slaapmuziek
22 - 00 Auto DJ

Dinsdag
0 - 8 Auto DJ
... enzovoorts...

Misschien een simpele vraag, maar kan iemand me op weg helpen? Bedankt :)

Groeten,
Jurrian
Hoe heb je de DJs opgeslagen, in een database?
Die zet ik er gewoon zelf in, zoals dat script dus, wat hij echo't is het programma met de DJ.

Geen geklooi met databases nog :).
Zo te zien niet, maar dat is dan wel het handigste om te doen.

Als je echt geen database wilt gebruiken, zul je erachter moeten komen welke dag van de week het is. Dat kan met:


strftime(%A);


afhankelijk van je server instellingen. Mocht dit niet de juiste output opleveren probeer dan:


setlocale(LC_TIME, 'nl_NL');
strftime(%A);


Als je de return waarde opslaat in een variabele en daar allemaal if/else statements of zoals je nu hebt case switches op bouwt, kun je dit ook bereiken. Moet het wel per week hetzelfde zijn.

Het is wel aan te bevelen dat je dit vanuit een database doet.. Als je het per week anders wilt, dan is een database nóg handiger, of je moet overwegen gewoon handmatig de html constant aan te passen.
Dan wordt het niet veel anders dan het script dat je hierboven hebt staan vrees ik...
Je kan natuurlijk multidimensionale arrays gaan definieren, maar dannog ben je aan het klooien wat mij betreft. Netste manier is via een DB, zeker als het nog wel eens gaat veranderen.

Maar om een idee te geven van het gebruik van een array
<?php
$dj_array = array(
1 => array(
0 => "Auto DJ",
8 => "Piet zingt",
10 => "Auto DJ",
...
),
2 => array(

),
etc...
);
?>
Waarbij de eerste index de dag is 1=maandag, 2=dinsdag etc. De tweede index is de start van het programma. Alternatief is nog dat je elk hele uur erin schiet, zodat je niet hoeft te weten hoe laat het programma begint.

Zowel dag van de week als uur kan je uit de huidige datum/tijd halen met php's date functie: http://php.net/manual/en/function.date.php
Je kunt toch gewoon de dag van de week ophalen?
Kijk welke dag het is, is het dag een? Dan de volgende uren.
En zo verder! :)


$date = date("N");
if($date = 1)
{
echo 'MAANDAG';
//hier komt dan de switch
}

Maandag = 1, Zondag = 7
Tom Swinkels op 29/02/2012 19:41:30


if($date = 1)



Alleen dít gaat niet werken.
Misschien == ?
Haha klopt ja een = te weinig :)
Oh, van zo'n functie was ik me niet op de hoogte. Waarom bestaat de functie die ik postte dan?
Omdat je daarmee de nederlandse datum kunt krijgen.
En aangezien je zelf ook kunt zeggen dat dag 1 maandag is kun je het ook op mijn manier doen.
Het word nu even erg ingewikkeld, als ik het in een database zou doen, hoe kan ik dit dan het beste aanpakken? Qua databasemodel en het halen van de data uit de database? (sorry, ben daar nog best een leek in)

Reageren