Avatar billede kryder Nybegynder
23. oktober 2011 - 23:48 Der er 7 kommentarer og
1 løsning

Hvorfor vil den ikke regne forskellen ud ?

Hej, Jeg er ved at lave en "dato husker", der er regne forskellen mellen to datoer ud.

Fx. 
2011-10-23
2011-10-25
Forskel = 2 dage !

Min kode ser sådan ud :

<?php

$target=PFT ;
echo 'PFT dato : ';
print $target . "<br>";

$today = date("Y-n-j");
echo 'Dagens dato : ';
print $today . "<br>";

$difference =($today-$target) ;
echo 'Difference/forskel : ';
print $difference . "<br><br>";

$days =(int) ($difference/86400) ;

print "PFT skal fornyes inden $days dage !";

?>

Den henter "PFT" igemmen e107 der henter datoen fra DB. Men henter den datoen (2011-10-25) i det rigtige format ?

Browseren læser koden fint, og kommer med :

PFT dato : 2011-10-25
Dagens dato : 2011-10-23
Difference/forskel : 0

PFT skal fornyes inden 0 dage !

Hvorfor regne den ikke forskellen ud ?
24. oktober 2011 - 06:12 #1
Prøv at kikke på funktionen date_diff() .  Her er et link:  http://www.php.net/manual/en/datetime.diff.php
Avatar billede GeFoX Nybegynder
24. oktober 2011 - 09:11 #2
Et alternativ vil være at bruge den numeriske værdi af dagen (1-365).

Så en kode kunne se sådan ud:

------------------------------
<?php
$PFTdate = date("z",strtotime(2011-10-25));
$today = date("z");
$diff = $PFTdate - $today;

echo "<p>" . $PFTdate . "<br />" . $today . "<br />" . $diff . "</p>";
?>
------------------------------

I dag vil den give et print som:
297
296
1
Avatar billede woodydrn Nybegynder
24. oktober 2011 - 09:12 #3
Det er ikke helt rigtigt at skrive:

$difference =($today-$target) ;

Du kunne bruger

$today_secs = strtotime($today);
$target_secs = strtotime($target);

$today_secs - $target_secs giver hvor mange secs der er tilforskel...
Avatar billede olebole Juniormester
24. oktober 2011 - 13:45 #4
<ole>

Du kunne også lade MySQL regne forskellen ud med DATEDIFF. Det plejer at være væsentligt hurtigere at lægge den slags beregninger over i databaseregi

/mvh
</bole>
26. oktober 2011 - 13:52 #5
kryder, du kom ikke igen.  Du stillede spørgsmålet, og du fik et antal forslag der skulle kunne hjælpe dig til at løse det opstillede problem.  Kom ind og bekræft, at du har modtaget indlæggene og fortæl hvad du vil gøre ved sagen, og hvis du har været igang men er gået i stå igen, hvor det så er.
Avatar billede kryder Nybegynder
26. oktober 2011 - 16:24 #6
Hej alle, takker for jeres input. Men jeg kunne ikke få det til at virke når den skulle hente datoen i gemmen e107. så nu henter den bare direkte db.

Lukker...
Avatar billede olebole Juniormester
26. oktober 2011 - 16:57 #7
Hvad er "gemmen e 197" for noget?
Avatar billede olebole Juniormester
26. oktober 2011 - 16:58 #8
Sorry ... "gemmen e 107"
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