Avatar billede ckh Nybegynder
23. januar 2012 - 11:34 Der er 13 kommentarer

Hvis det er tredje onsdag i måneden, så vis noget andet....

Jeg fandt denne lille snas kode til at vise åbningstider på de forskellige ugedage:

<?php
$dagarr = array("Søndag: Lukket","Mandag: 9-16","Tirsdag: 9-17","Onsdag: 9-15","Torsdag: 9-17","Fredag: 9-12","Lørdag: Lukket");
$dag = $dagarr[date("w")];
echo $dag;
?>

Det virker fint, MEN:
Kan det udbygges lidt så det kan regne ud hvornår det er den tredje onsdag i måneden, og så på den særlige dag vise en anden tekst?
Avatar billede acore Ekspert
23. januar 2012 - 12:26 #1
En mulighed er:

<?php
$dagarr = array("Søndag: Lukket","Mandag: 9-16","Tirsdag: 9-17","Onsdag: 9-15","Torsdag: 9-17","Fredag: 9-12","Lørdag: Lukket");
$dagarr3 = array("Søndag: Lukket","Mandag: 9-16","Tirsdag: 9-17","Onsdag: 9-20","Torsdag: 9-17","Fredag: 9-12","Lørdag: Lukket");
if (date("j") >= 15 && date("j") <= 21)
  $dag = $dagarr3[date("w")];
else
  $dag = $dagarr[date("w")];
echo $dag;
?>

hvor $dagarr3 så indeholder tiderne for den 3. af ugedagene i måneden (hvor jeg kun har ændret onsdag til kl 20).
Avatar billede olebole Juniormester
23. januar 2012 - 13:14 #2
<ole>

Du kan også bruge strtotime. Hvis du f.eks. vil tjekke, om det i dag er tredie onsdag i måneden, kan du skrive:

if (strtotime('third wednesday of this month this year')==strtotime('today')) {
    echo 'Tredie onsdag.';
}

/mvh
</bole>
Avatar billede ckh Nybegynder
24. januar 2012 - 15:09 #3
-> Jeg er ingen haj til php, men jeg kan da få din fine løsning til at virke.

olebole -> strtotime har jeg siddet og forsket lidt videre i. Den ser smart ud, men den vil ikke fange "fourth tuesday of this month this year" - tastede det ind fordi det skulle være i dag. Jeg tænkte jeg kunne bruge den funktion til at "fange" helligdagene op ìndbygget i acores script.

if (strtotime('23 jan')==strtotime('today')) {
    echo 'Lukket';
}

virker fint, men kan jeg lave en slags liste over de 7 datoer der er helligdage i 2012, og så hente den igennem strtotime?
Avatar billede olebole Juniormester
24. januar 2012 - 15:26 #4
Sikke noget sludder! Hvad er det lige, du ikke synes fungerer her:

[div]echo 'Timestamp for fjerde tirsdag: '.strtotime('fourth tuesday of this month this year')."<br>";
echo 'Timestamp for i dag: '.strtotime('today')."<hr>";
echo 'Fjerde tirsdag: '.date('d.m-Y H:i:s', strtotime('fourth tuesday of this month this year'))."<br>";
echo 'I dag: '.date('d.m-Y H:i:s', strtotime('today'))."<hr>";
if (strtotime('fourth tuesday of this month this year')===strtotime('today')) {
    echo "Det virker da fint!";
}div]
Avatar billede olebole Juniormester
24. januar 2012 - 15:26 #5
Ups ... prøver lige igen  =)

echo 'Timestamp for fjerde tirsdag: '.strtotime('fourth tuesday of this month this year')."<br>";
echo 'Timestamp for i dag: '.strtotime('today')."<hr>";
echo 'Fjerde tirsdag: '.date('d.m-Y H:i:s', strtotime('fourth tuesday of this month this year'))."<br>";
echo 'I dag: '.date('d.m-Y H:i:s', strtotime('today'))."<hr>";
if (strtotime('fourth tuesday of this month this year')===strtotime('today')) {
    echo "Det virker da fint!";
}
Avatar billede ckh Nybegynder
24. januar 2012 - 16:19 #6
Jo det er bestemt muligt jeg sludrer... :-)

Men ikke desto mindre, koden

<?php
if (strtotime('fourth tuesday of this month this year')==strtotime('today')) {
    echo 'Lukket';
}
?>
<br />
<?php
echo 'Timestamp for fjerde tirsdag: '.strtotime('fourth tuesday of this month this year')."<br>";
echo 'Timestamp for i dag: '.strtotime('today')."<hr>";
echo 'Fjerde tirsdag: '.date('d.m-Y H:i:s', strtotime('fourth tuesday of this month this year'))."<br>";
echo 'I dag: '.date('d.m-Y H:i:s', strtotime('today'))."<hr>";
if (strtotime('fourth tuesday of this month this year')===strtotime('today')) {
    echo "Det virker da fint!";
}
?>

Resulterer i: http://www.mishandling.dk/aabningstid02.php
hos mig (både i IE og FF
Avatar billede olebole Juniormester
24. januar 2012 - 16:33 #7
Det er rystende ligemeget, hvilken browser du bruger. PHP afvikles på serveren  =)

Derudover kan det, du linker til, ikke være en kopi af den kode, jeg har skrevet. strtotime('today') skal returnere tidspunktet kl. 00:00:00 natten mellem i går og i dag. Og det samme gælder udtrykket for 'fjerde onsdag i denne måned, dette år'.

Hvis det virkelig er min kode, du har kopieret, er din PHP-opsætning 'rådden'. Er det tilfældet, bør du få det rettet, for ellers kan du ikke regne med serverens generelle tidsangivelser/-beregninger  =)
Avatar billede olebole Juniormester
24. januar 2012 - 16:42 #8
Hvad er det for en PHP-version, du arbejder med?
Avatar billede ckh Nybegynder
24. januar 2012 - 16:43 #9
Jeg vidste godt browseren var ligegyldig, det var egentlig bare for en sikkerheds skyld.

Det er så nok en dårlig php opsætning.
Surftown: http://www.mishandling.dk/aabningstid02.php
Wannafind: http://www.lpsf.dk/aabningstid02.php

viser to forskellige resultater (og koden er altså copy/pastet fra dit indlæg).
Men ingen af dem spytter "Lukket" eller "Det virker da fint!" ud.

Nå men de servere har jeg minimal adgang til at rette opsætninger på, så det skal så nok være en anden løsning.
Avatar billede olebole Juniormester
24. januar 2012 - 16:47 #10
Prøv at skrive dette i en fil og kald den, så du kan se, hvilken PHP-version der er tale om - og hvordan den er sat op:

<?php phpinfo() ?>

Det kunne være interessant at kende versionerne på de to servere  =)
Avatar billede olebole Juniormester
24. januar 2012 - 16:50 #11
Umiddelbart ser det ud, som om begge servere/opsætninger er syge - og/eller dybt forældede. Måske, du skulle finde et 'rigtigt' webhotel  *o)
Avatar billede ckh Nybegynder
24. januar 2012 - 16:55 #12
Wannafind: http://www.lpsf.dk/aabningstid02.php
- vers. 5.2.13

Surftown: http://www.mishandling.dk/aabningstid02.php
- vers. 4.4.9

En anden Surftown: http://transportarbejder.org/aabningstid02.php
- vers. 5.2.17

alle med den samme fil liggende i skrivende stund.
Avatar billede olebole Juniormester
24. januar 2012 - 17:10 #13
Sært! Surftowns version er klart antik, men de to andre burde kunne give et fornuftigt resultat
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester