Avatar billede cigaretten Nybegynder
14. juni 2007 - 13:58 Der er 7 kommentarer og
1 løsning

Konkurrencen slutter om _xx_ dage.

Kære Eksperten.
Jeg er igang med at lave en konkurrence oversigt, hvorledes brugerne kan se hvornår den slutter, men jeg er i tvivl om hvordan jeg skal opbygge systemet?

Når jeg indsætter en konkurrence i mit system, skal jeg vel have start-tidspunktet ( time() ) og et slut-tidspunkt ( time() + dagene ). Men så er spørgsmålet - hvordan laver jeg så en oversigt over _hvornår_ konkurrencen slutter?

.. f.eks: Konkurrencen slutter om 10 dage.

PFT. - Cigaretten
Avatar billede jweber Nybegynder
14. juni 2007 - 14:21 #1
Du behøves såment ikke startdatoen for at beregne hvor mange dage der er tilbage i konkurrencerne.

$sek_tilbage = mktime(0, 0, 0) - mktime(0, 0, 0, $slutmaaned, $slutdag, $slutaar);
$dage_tilbage = ceil($sek_tilbage/60/60/24);

mktime(0, 0, 0) finder antallet af sekunder siden 1. januar kl. 00.00 1970 og mktime(0, 0, 0, $slutmaaned, $slutdag, $slutaar) finder så antallet af sekunder siden 1. januar kl. 00.00 1970 og frem til din slut dato. Når du trækker disse to tal fra hinanden for du antallet af sekunder mellem datoen idag og slut datoen som jeg så har beregnet om til dage i stedet for sekunder.
Avatar billede cigaretten Nybegynder
14. juni 2007 - 14:24 #2
Okay, takker for det.
$sluutmaaned, $slutdag og $slutaar skal vel bare være time() der er blevet finpudset med date() ?

Hvis nu jeg har indsat en konkurrence og sat tidspunktet til 23931123, så skal jeg vel bare:

$StartTid = 23931123;
$slutmaaned = date("m", $StartTid);
$slutdag    = date("d", $StartTid);
$slutaar    = date("y", $StartTid);

-- Ikke sandt?
Avatar billede jweber Nybegynder
14. juni 2007 - 14:29 #3
$slutmaaned, $slutdag og $slutaar skal bare angives som den dato konkurrencen slutter, således at din kode kommer til at se sådan her ud hvis slut datoen f.eks. er 31. juni 2007:

$sek_tilbage = mktime(0, 0, 0) - mktime(0, 0, 0, 6, 31, 2007);
$dage_tilbage = ceil($sek_tilbage/60/60/24);
Avatar billede cigaretten Nybegynder
14. juni 2007 - 14:54 #4
Når jeg indsætter en "konkurrence" til mysql, laver jeg et input-felt hvori jeg kan skrive hvor mange dage forud, den skal gælde til (f.eks 14 dage), så skriver jeg 14 i input-feltet.

Når jeg skal indskrive til mysql, laver jeg noget matematik:

$dag = 60*60*24;
$ialt = (time())+($dag*$_POST['slut']);

.. Når jeg så ska' vise konkurrencens slut-dag, gør jeg sådan:

$sek_tilbage = mktime(0, 0, 0) - mktime(0, 0, 0, date("m", $row-
>slut), date("d", $row->slut), date("y", $row->slut));

$dage_tilbage = ceil($sek_tilbage/60/60/24);

Men så får jeg udskrevet "-14" dage? Hvor har jeg dummet mig?
Avatar billede cigaretten Nybegynder
14. juni 2007 - 14:59 #5
$row-> er mysql_fetch_object fra databasen, som i dette tilfælde er 1183035083. time() i dag + 14 dage forud ((60*60*24)*14)
Avatar billede jweber Nybegynder
14. juni 2007 - 21:59 #6
Grunden til at du får minus 14 er fordi der skal byttes om på dit minus regnestykke. Det skal være slutdatoen minus tidspunktet for idag:

$sek_tilbage = mktime(0, 0, 0, date("m", $row-
>slut), date("d", $row->slut), date("y", $row->slut)) - mktime(0, 0, 0);

Lavede også selv samme fejl kan jeg se
Avatar billede cigaretten Nybegynder
08. august 2007 - 22:41 #7
Smid svar - det virker.
Avatar billede cigaretten Nybegynder
04. oktober 2007 - 19:41 #8
nå lukker så
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