Avatar billede mjj Nybegynder
29. juli 2003 - 15:42 Der er 17 kommentarer og
1 løsning

Countdown i PHP KUN med dage!

Jeg har forgæves søgt på både Eksperten og Google efter en countdown i PHP der KUN(!!!) tæller i dage. Jeg har fundet masser af PHP-countdowns, men de tæller alle sammen én dag forkert, fordi koden tager udgangspunkt i timer, som den så omregner til dage (tror jeg nok). I hvert fald skriver de f.eks. at der den 1 december er 22 dage til jul, hvilket også ville passe hvis man tilføjede: X timer og X minutter. Men jeg vil altså KUN tælle i dage, og i så fald er der altså 23 dage til jul den 1. december, men det tager INGEN af de countdowns jeg har fundet, højde for.

Er der nogen der ligger inde med/kan lave en countdown uden denne bug? Der skal helst også være mulighed for at lave særlige beskeder på enkelte dage, så der f.eks. den 23. december kan stå f.eks.: "Det er jul i morgen", og den 24.: "I dag er det jul" e.lign.

/mjj

PS: Jeg prøvede naturligvis at nøjes med at sætte countdown-datoen én dag op, men det virkede heller ikke helt som det skulle...
Avatar billede taskmgr Nybegynder
29. juli 2003 - 15:45 #1
Ved ik helt om jeg fatter pointen, men prøv den her... er ikke testet

$dato = "24-12-03"; //datoen den skal tælle ned til - dd-mm-åå
$split=explode("-",$dato);
$dato=mktime(0,0,0,$split[1],$split[0],$split[2]);
$forskel = ($dato-time())/60/60/24;
echo "Der er ".number_format($forskel, 2, ',', '.')." dage til d. ".$dato;
Avatar billede taskmgr Nybegynder
29. juli 2003 - 15:46 #2
Beklager... fik ikke læst spørgsmålet ordenligt.
Avatar billede mjj Nybegynder
29. juli 2003 - 15:49 #3
taskmgr » Ikke helt hvad jeg søgte. Den 23. december kl. 2 om natten vil din version skrive: Der er 0,92 dage til d. 1072220400.
Den mangler også funktionen til "særlige datoer"...

/mjj
Avatar billede googolplex Novice
29. juli 2003 - 15:50 #4
Kan du ikke bare runde op med ceil() eller noget lignende ?
Avatar billede ztyxx Nybegynder
29. juli 2003 - 15:51 #5
brug javascript istedet, dette eksempel kan tilrettes efter ønske

<SCRIPT LANGUAGE="JAVASCRIPT">
today = new Date();
BigDay = new Date("December 24, 2003")
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
document.write("<h4>Der er kun " + daysLeft + " dage " + hrsLeft +" timer og " + minsLeft + " minutter tilbage til juleaften år 2004!</B><P></h4>");
</SCRIPT>
Avatar billede mjj Nybegynder
29. juli 2003 - 15:58 #6
ztyxx » Jeg vil ikke bruge Javascript, da datoen SKAL hentes fra serveren. Jeg vil ikke være afhængig af om folk har stillet deres ur/dato på PCen rigtigt.
Avatar billede mjj Nybegynder
29. juli 2003 - 16:01 #7
<?php
  $day  = 24;    // Dag
  $month = 12;      // Måned
  $year  = 2003;  // År
  $hour  = 24;    // Klokkeslet

  $calculation = ((mktime ($hour,0,0,$month,$day,$year) - time(void))/3600);
  $hours = (int)$calculation;
  $days  = (int)($hours/24);

?>
Der er <?=$days?> dage til jul
Avatar billede mjj Nybegynder
29. juli 2003 - 16:02 #8
Hovsa, min kommentar til ovenstående indlæg røg ud: Jeg har fået ovenstående til at virke efter hensigten, men mangler stadig muligheden for at vise særlige beskeder på særlige dage...
Avatar billede ztyxx Nybegynder
29. juli 2003 - 16:05 #9
kan du ikke lave det med nogle if-sætninger der sammenliger med $day, $month osv.

mht javascript og datoe skal være fra serveren, så kan du jo tjekke datoen med time() og bruge i javascript, det kan godt kombineres
Avatar billede mjj Nybegynder
29. juli 2003 - 16:08 #10
ztyxx » Jeg tænkte også at det måtte kunne laves med nogle if-sætninger. Problemet er at jeg er totalt grøn mht. PHP, så jeg er ikke helt sikker på hvordan jeg skal stille det op...

Mht. javascript vil jeg helst undgå at bruge det, da jeg HELLER ikke vil være afhængig af om den besøgende har slået det til eller fra...
Avatar billede TRoXa Novice
29. juli 2003 - 16:13 #11
<?

function tjekdage($dato)
{
  $d = date("d");
  $m = date("m");
  $y = date("Y");
  $idag = mktime (0,0,0,$m,$d,$y);
  $opdel = explode("-",$dato);
  $dato1= mktime(0,0,0,$opdel[1],$opdel[0],$opdel[2]);
  $dage = (round(($dato1 - $idag) / 60/60/24)) + 1;

  return "$dage dage";
}

echo tjekdage("24-12-2003");


?>
Avatar billede mjj Nybegynder
29. juli 2003 - 16:25 #12
troxa » Din er en dag bagud; den 24. december siger den at der er 1 dag til den 24. december...
Min virker udmærket. Jeg mangler bare if-sætningerne der kan lave særlige beskeder til f.eks. den 23. og 24. december...
Avatar billede TRoXa Novice
29. juli 2003 - 16:28 #13
<?php
  $day  = 24;    // Dag
  $month = 12;      // Måned
  $year  = 2003;  // År
  $hour  = 24;    // Klokkeslet

  $calculation = ((mktime ($hour,0,0,$month,$day,$year) - time(void))/3600);
  $hours = (int)$calculation;
  $days  = (int)($hours/24);
?>
Der er <?=$days?> dage til jul

<?

  if (date("d-m-Y") == "24-12-2003") { echo "Det er juleaften"; }
  if (date("d-m-Y") == "31-12-2003") { echo "Det er nytårs aften"; }

?>
Avatar billede TRoXa Novice
29. juli 2003 - 16:28 #14
så skulle det der jo være det
Avatar billede mjj Nybegynder
29. juli 2003 - 16:38 #15
troxa » Ja, NÆSTEN ;o) Men "if'erne" skulle gerne være integreret i resten, således at den KUN skriver f.eks. "Det er juleaften" den 24. og ikke OGSÅ Der er 0 dage til jul... Jeg har selv prøvet at ændre det, men kan ikke få det til at virke. Altså i ord udtrykt sådan:
Hvis datoen er den 24. december, skriv: "Det er juleaften"
Hvis datoen er den 31. december, skriv: "Det er nytårsaften"
Ellers, skriv: "Der er X dage til jul" ...
Avatar billede TRoXa Novice
29. juli 2003 - 16:45 #16
så er det

if (date("d-m-Y") == "24-12-2003") { echo "Det er juleaften"; } else { echo "der er $days til juleaften"; }
Avatar billede TRoXa Novice
29. juli 2003 - 16:47 #17
eller .. dvs

if (($day == 24) AND ($month == 12) AND ($year == 2003) and (date("d-m-Y) == "24-12-2003)) { echo "Det er juleaften"; } else { echo "Der er $days til juleaften"; }
Avatar billede mjj Nybegynder
29. juli 2003 - 16:54 #18
BINGO! Jeg lavede lige et par småændringer i den, men nu virker det! :o)

Tusind tak for hjælpen.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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