Avatar billede skolestofdk Nybegynder
14. marts 2004 - 19:21 Der er 18 kommentarer og
1 løsning

datetime - hvor lang tid, til given dato

Davs igen...
Jeg har i en tabel: følgende:

vipend DATETIME,

I denne er der fx. 2005-01-11 19:12:59

Det jeg gerne vil er så, at se hvor mange dage der er fra dags dato og frem til det tidspunkt som der er i "vipend" i dette tilfælde "2005-03-14 19:12:59"..

og så selvfølgelig echo.. resultatet...
Avatar billede rasmusbg Nybegynder
14. marts 2004 - 19:25 #1
Hvilken database bruger du?
Avatar billede skolestofdk Nybegynder
14. marts 2004 - 19:26 #2
MySQL
Avatar billede rasmusbg Nybegynder
14. marts 2004 - 19:37 #3
<?php
$id //den skal du sætte til en værdi
$conn = mysql_connect('servernavn','db_brugernavn','password') or die('Could not connect!');
$result = mysql_query("SELECT DATEDIFF(CURDATE(),vipend) AS dage FROM dit-tabelnavn WHERE id = $id",$conn);
$dage = mysql_fetch_row($result);
echo $dage[0];
mysql_close($conn);
?>
Avatar billede skolestofdk Nybegynder
14. marts 2004 - 19:57 #4
Jeg får følgende fejl: Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /STORE/blablablablabla/blablabla/myprofile.php3 on line 39
Avatar billede skolestofdk Nybegynder
14. marts 2004 - 22:08 #5
?????

Så er der kommet nogle flere point på...
Avatar billede melange Nybegynder
14. marts 2004 - 23:49 #6
her er en lille funktion jeg skrev i tidernes morgen. Du skal nok lige tilpasse det for at det virker i dit tilfælde, men det burde være til at overkomme :)

<?php

/*
Udregner hvor lang tid der er tilbage til en bestemt dato
*/

// opretter functionen. 'Dag', 'måned' og 'år' er påkrævet.
//'timer', 'minutter' og 'sekunder' bliver sat til nu, hvis andet ikke er angivet.
function tid_tilbage($dag, $maaned, $aar, $timer = '0', $minutter = '0', $sekunder = '0') {

    // Finder antal sekunder siden 1/1-1970.
    $tid_nu = time();

    // Finder antal sekunder mellem 1/1-1970 og den pågældende dato
    $tid_input = mktime($timer,$minutter,$sekunder,$dag,$maaned,$aar);

    // Finder forskellen i sekunder.
    $tid_forskel = $tid_input - $tid_nu;
   
    // Laver en streng, som indeholder 'dage, 'timer', 'minutter' og 'sekunder' tilbage til indput-datoen
    $output = "Der er ".
                        date("z", $tid_forskel)." dage, ".
                        date("H", $tid_forskel)." timer, ".
                        date("i", $tid_forskel)." minutter og ".
                        date("s", $tid_forskel)." sekunder tilbage til den $dag/$maaned-$aar :)";
   
    // Retunerer strengen
    return $output;

}

?>
Avatar billede melange Nybegynder
14. marts 2004 - 23:51 #7
skolestofdk: sorry, læste ikke rasmusbg' svar. Hvis du får det til at virke, er det selvfølgelig langt at foretrække, hvis det kan gøres via SQL.
Avatar billede rasmusbg Nybegynder
15. marts 2004 - 00:40 #8
<?php
$conn = mysql_connect("hostname","username","password")
    or die("Could not connect!");
$id = 1;
$use_db = 'USE db_name'; //DENNE LINIE MANGLEDE - NU SKULLE DET VIRKE
mysql_query($query,$conn);
$query = "SELECT DATEDIFF(vipend,CURDATE()) AS dage FROM tablename WHERE id = $id";
$result = mysql_query($query,$conn);
$dage = mysql_fetch_row($result);
echo $dage[0];
mysql_close($conn);
?>
Avatar billede rasmusbg Nybegynder
15. marts 2004 - 00:41 #9
Og så er der forresten også lige blevet byttet om på de to argumenter i DATEDIFF...
Avatar billede tefcke Nybegynder
15. marts 2004 - 12:12 #10
"DATEDIFF() was added in MySQL 4.1.1." - Så tjek lige din SQL version ;)
Avatar billede tefcke Nybegynder
15. marts 2004 - 12:14 #11
Og som alle jo ved (eller ;-) så er 4.0 den officelle stable release, mens 4.1 kun er alpha release!
Avatar billede rasmusbg Nybegynder
15. marts 2004 - 15:42 #12
<?php
$conn = mysql_connect("hostname","username","password")
    or die("Could not connect!");
$id = 1;
$use_db = 'USE db_name';
mysql_query($query,$conn);
$query = "SELECT (TO_DAYS(vipend)-TO_DAYS(CURDATE())) AS dage FROM tablename WHERE id = $id";
$result = mysql_query($query,$conn);
$dage = mysql_fetch_row($result);
echo $dage[0];
mysql_close($conn);
?>

Denne virker med tidligere udgaver af MySQL
Avatar billede tefcke Nybegynder
15. marts 2004 - 21:44 #13
$query = "SELECT (TO_DAYS(CURDATE())-TO_DAYS(vipend)) AS dage FROM tablename WHERE id = $id";

Ellers bliver dage negativ!
Avatar billede rasmusbg Nybegynder
15. marts 2004 - 21:47 #14
tefcke > Nope...har prøvet begge dele, og den, jeg postede giver et positivt resultat
Avatar billede rasmusbg Nybegynder
15. marts 2004 - 21:47 #15
Dags dato er før vipend...
Avatar billede tefcke Nybegynder
16. marts 2004 - 00:36 #16
Ahhh, ok det er en fremtidig dato, den havde jeg lige overset.

Ja, så er det korrekt hvad min navnebror har lavet!
Avatar billede rasmusbg Nybegynder
16. marts 2004 - 00:42 #17
tefcke > Jeps...
Tak for, du gjorde mig opmærksom på, at DATEDIFF først er kommet med i 4.1.1. Det var jeg ikke lige opmærksom på. Onlinedokumentationen på www.mysql.com er for 5.0.0-alpha, har jeg lige lagt mærke til ;o)
Avatar billede skolestofdk Nybegynder
17. marts 2004 - 18:08 #18
Den funker helt fint... Kom med et svar rasm
Avatar billede rasmusbg Nybegynder
17. marts 2004 - 21:01 #19
Svar :o)
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