/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Datotjek - julekalender
Fra : Erik Ginnerskov


Dato : 15-11-08 18:44

Hej NG

Jeg har en i øvrigt velfungerende side, der tjekker datoen (på serveren) og
videretiller til en side med et antal julelys svarende til den aktuelle dato
(i december måned).

Men for at slippr for at skulle uploade en ændret menu (med link til
julekalenderen) ved midnat natten til 1. december og derefter uploade menuen
uden julelinket natten til 25. december, havde jeg tænkt atlade et
php-script tjekke måned og dato og derefter enten gøre ingenting eller
tilføje linket til kalendersiden:

<?php
$today = date(d,m)
if ($today(m) < 12) {
exit;
} else if ($today(d) > 24) {
exit;
} else {
echo "<li><a href='julekalender.php'>Julekalender</a></li>";
}
?>

Nogen der kender noget sådant? Jeg synes ikke at kunne finde noget brugbart
ved at google og ved at studere min php-bibel kan jeg ikke komme det nærmere
end ovenstående - ikke testet, da jeg er ret sikker på at det ikke rækker.

Når julekalenderen må vises, tjekker et simpelt javascript datoen og
viderestiller til passende side (eks. 1.php), men det kan vel også laves med
php

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk


 
 
Johan Holst Nielsen (15-11-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-11-08 20:28

Erik Ginnerskov wrote:
> Hej NG
>
> Jeg har en i øvrigt velfungerende side, der tjekker datoen (på serveren)
> og videretiller til en side med et antal julelys svarende til den
> aktuelle dato (i december måned).
>
> Men for at slippr for at skulle uploade en ændret menu (med link til
> julekalenderen) ved midnat natten til 1. december og derefter uploade
> menuen uden julelinket natten til 25. december, havde jeg tænkt atlade
> et php-script tjekke måned og dato og derefter enten gøre ingenting
> eller tilføje linket til kalendersiden:


function isChristmas() {
if(intval(date("m")) != 12 || intval(date("j")) >= 25) {
return false;
}
return true;
}

if(isChristmas()) {
echo '<a href="/julekalender">Julekalender</a>';
}

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Erik Ginnerskov (16-11-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 16-11-08 13:13

Johan Holst Nielsen wrote:

> function isChristmas() {
> if(intval(date("m")) != 12 || intval(date("j")) >= 25) {
> return false;
> }
> return true;
> }
>
> if(isChristmas()) {
> echo '<a href="/julekalender">Julekalender</a>';
> }

Den har jeg testet med forskellige dato- og klokkeindstillinger på min
lokale server og konstaterer, at det virker præcis efter hensigten.

Jeg bukker og takker. Effekten af det kan tjekkes på min private
hjemmeside - når rette tid er nær.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk


Bertel Lund Hansen (16-11-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-11-08 19:37

Erik Ginnerskov skrev:

> Den har jeg testet med forskellige dato- og klokkeindstillinger på min
> lokale server og konstaterer, at det virker præcis efter hensigten.

Her er samme funktion udbygget med kald til dagens fil:

function isChristmas () {
   if (intval(date('m')) != 11 || intval(date('j')) > 24)
      return false;
   return true;
}

if (isChristmas()) {
   $day=intval(date("j"));
   echo "<a href='julekalender/$day.php'>Julekalender</a>";
}

Ret 11 til 12 når du har testet ...

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

Johan Holst Nielsen (16-11-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 16-11-08 23:11

Bertel Lund Hansen wrote:
> Erik Ginnerskov skrev:
>
>> Den har jeg testet med forskellige dato- og klokkeindstillinger på min
>> lokale server og konstaterer, at det virker præcis efter hensigten.
>
> Her er samme funktion udbygget med kald til dagens fil:
>
> function isChristmas () {
>    if (intval(date('m')) != 11 || intval(date('j')) > 24)
>       return false;
>    return true;
> }
>
> if (isChristmas()) {
>    $day=intval(date("j"));
>    echo "<a href='julekalender/$day.php'>Julekalender</a>";
> }
>
> Ret 11 til 12 når du har testet ...
>

Hvorfor lave en intval på date("j") når du alligevel skal bruge den som
streng? Du laver jo blot (string)8 om til (int)8 - ikke specielt smukt.

Ville nok lave det lidt anderledes... noget ala

function isChristmas() {
if(intval(date("m")) == 12 && $day = intval(date("j")) < 25) {
return $day;
}
return false;
}

if($day = isChristmas() !== false) {
echo "<a href='julekalender/$day.php'>Julekalender</a>";
}

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Erik Ginnerskov (17-11-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 17-11-08 21:21

Johan Holst Nielsen wrote:
> Bertel Lund Hansen wrote:

>> function isChristmas () {
>> if (intval(date('m')) != 11 || intval(date('j')) > 24)
>> return false;
>> return true;
>> }
>>
>> if (isChristmas()) {
>> $day=intval(date("j"));
>> echo "<a href='julekalender/$day.php'>Julekalender</a>";
>> }


> function isChristmas() {
> if(intval(date("m")) == 12 && $day = intval(date("j")) < 25) {
> return $day;
> }
> return false;
> }
>
> if($day = isChristmas() !== false) {
> echo "<a href='julekalender/$day.php'>Julekalender</a>";
> }

Det kigger jeg på i weekenden. På forhånd tak til jer begge.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk


Erik Ginnerskov (23-11-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 23-11-08 00:47

Bertel Lund Hansen wrote:

> Her er samme funktion udbygget med kald til dagens fil:
>
> function isChristmas () {
> if (intval(date('m')) != 11 || intval(date('j')) > 24)
> return false;
> return true;
> }
>
> if (isChristmas()) {
> $day=intval(date("j"));
> echo "<a href='julekalender/$day.php'>Julekalender</a>";
> }

Jeg har nu lavet en kort test af ovenstående, det returnerer et link til den
aktuelle dato hvis måneden passer.

Da tjekket på månedsskift og på datooverskridelse tidligere er afprøvet med
fuldt tilfredsstillende output, må konklusionen umiddelbart være, at jeg
helt kan undvære julekalender.php med det javascript der sender videre til
den rigtige dato - der linkes i julemåneden direkte til den rigtige dato.

Det gav mig i øvrigt inspiration til en anderledes julekalender, hvor der er
de sædvanlige 24 låger - og hvor datotjekket blokerer for at åbne låger i
utide. Det vil jeg prøve at lege lidt med. Det må være noget med et tjek på
måneden øverst i dokumentet og viderestillelse til en fy-side, hvis nogen
prøver at åbne siden for tidligt og derefter datotjek på felterne, så de
efterhånden bliver til klikbare links.

Jeg takker endnu en gang.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk


Erik Ginnerskov (23-11-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 23-11-08 13:45

Johan Holst Nielsen wrote:

> function isChristmas() {
> if(intval(date("m")) != 12 || intval(date("j")) >= 25) {
> return false;
> }
> return true;
> }
>
> if(isChristmas()) {
> echo '<a href="/julekalender">Julekalender</a>';
> }

Ud fra ovenstående prøver jeg at lave en funktion til de enkelte dag-sider.
Funktionen skal hindre for tidlig indlæsning af dagens side (nummereret
1.php til 24.php):

function isRightday() {
if(intval(date("m")) != 11 || intval(date("j")) < 24) {
header("Location: for_tidligt.php");
}
}

.... indsat øverst i 24.php. Midlertidigt er tjekket på måneden sat til
november. Men forsøger jeg at indlæse 24.php får jeg siden i stedet for at
blive viderestillet til for_tidligt.php - jeg kan ikke se, hvor fejlen
ligger, får ikke nogen fejlmeldinger. Har tjekket datoen på serveren, den er
i dag 23/11.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk


Bertel Lund Hansen (23-11-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-11-08 14:50

Erik Ginnerskov skrev:

> Ud fra ovenstående prøver jeg at lave en funktion til de enkelte dag-sider.
> Funktionen skal hindre for tidlig indlæsning af dagens side (nummereret
> 1.php til 24.php):

> function isRightday() {
> if(intval(date("m")) != 11 || intval(date("j")) < 24) {
> header("Location: for_tidligt.php");
> }
> }

Det er ulogisk at lave en function der kan have den effekt at
hele det aktuelle PHP-script lukkes ned som det sker ved
header().

Det er bedre at lave en funktion der returnerer en boolesk værdi
og så efter kaldet dertil benytte header() hvis svaret er false.
Det har du også lagt op til ved at kalde funktionen isRightday().

function isRightday() {
   return intval(date("m")) == 11 || intval(date("j")) == 24;
}

if isRightday() openDoor();
else header("Location: for_tidligt.php");

> november. Men forsøger jeg at indlæse 24.php får jeg siden i stedet for at
> blive viderestillet til for_tidligt.php -

Hvis der kun ligger en funktion uden at der er et kald dertil fra
hovedrutinen, så bliver koden slet ikke udført. Måske skal du
bare bruge dette i starten af siden 24.php:

   if (intval(date("m")) != 11 || intval(date("j")) < 24)
      header("Location: for_tidligt.php");

altså uden funktionsindpakningen. Jeg går ud fra at du sørger for
at der ikke laves noget output før header() bliver aktiveret.

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

Erik Ginnerskov (23-11-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 23-11-08 15:34

Bertel Lund Hansen wrote:

> Det er bedre at lave en funktion der returnerer en boolesk værdi
> og så efter kaldet dertil benytte header() hvis svaret er false.
> Det har du også lagt op til ved at kalde funktionen isRightday().
>
> function isRightday() {
> return intval(date("m")) == 11 || intval(date("j")) == 24;
> }
>
> if isRightday() openDoor(); /* linje 6 */
> else header("Location: for_tidligt.php");

Så får jeg denne fejlmeddelelse:

Parse error: parse error, unexpected T_STRING, expecting '(' in
C:\Dokumenter\html\kladde4 ginnerskov.dk\24.php on line 6

> if (intval(date("m")) != 11 || intval(date("j")) < 24)
> header("Location: for_tidligt.php");

Det fungerer helt efter hensigten. Så enkelt og så smukt. Tak for det, nu
skal det indføres på samtlige 24 sider med passende rettelser.

> Jeg går ud fra at du sørger for
> at der ikke laves noget output før header() bliver aktiveret.

Det var derfor, jeg lagde det øverst på siden.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408920
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste