Avatar billede jespernerd Nybegynder
03. april 2009 - 09:59 Der er 7 kommentarer og
1 løsning

Hvordan henter man fra 7 dage tilbage

Hej.
Hvordan henter jeg via min mysql script annoncer som er 7 dage gamle f.eks

Jeg har antal dage jeg vil gå tilbage i tiden på, via $_POST['dage'].

Jeg har i øjeblikket "oprettet"-kolonnen i MySQL some en timestamp og ikke DATE()-format.

Jeg har tænkt noget med

SELECT .. FROM .. WHERE oprettet > time()-$_POST['dage']

Men så vil den jo også vise fra 8 dage tilbage og 10 dage tilbage, hvis jeg skriver 7 dage f.eks.

Hvordan gøres dette nemmest?

(og jeg vil ikke skifte til DATE()-format ligenu)
Avatar billede jespernerd Nybegynder
03. april 2009 - 10:00 #1
$dage = ((3600*24*(int)$_POST['dage'])-time());

Den går i hvertfald de dage tilbage i tiden jeg ønsker, men den skal jo ligesom sige "KUN 7 dage", ikke 8 dage også. :-)
Avatar billede jespernerd Nybegynder
03. april 2009 - 10:04 #2
$dage = (time()-(3600*24*(int)$_POST['dage']));

Naturligvis
Avatar billede jespernerd Nybegynder
03. april 2009 - 10:06 #3
Ser dette rigtigt ud, eller skal man lave noget ekstra ved det?

$dage = (time()-(3600*24*(int)$_POST['dage']));

echo $dage;


$hent = mysql_query("SELECT * FROM annoncer WHERE oprettet > ".$dage."") or die ( mysql_error());
while ( $row = mysql_fetch_assoc($hent))
{
    echo $row['overskrift'];
}
}
Avatar billede showsource Seniormester
03. april 2009 - 11:35 #4
Du kan også bruge strtotime() til at få unixtimestamp
Og bør vel tjekke om der blev fundet nogen rows i query.
Og du bør tjekke om det rent faktisk er et tal som postes.
Avatar billede jespernerd Nybegynder
03. april 2009 - 11:46 #5
Det var ikke mit spørgsmål
Avatar billede jespernerd Nybegynder
03. april 2009 - 11:47 #6
$dage = (int) $_POST["dage"];

$maksDage = date("Y-m-d H:i:s", time()-(3200*24*$dage));

$hent = mysql_query("SELECT * FROM annoncer WHERE aktiv = 1 AND oprettet > '" . $maksDage . "'") or die ( mysql_error());

bruger også mysql_num_rows() og tjekker, og det er i administrationspanelet, så tvivler på de vil injecte dem selv...
Avatar billede showsource Seniormester
03. april 2009 - 12:20 #7
jaja :O)

24 timer er jo 86400
1 time er 3600

$maksDage = strtotime("-".$dage." days");
Avatar billede jespernerd Nybegynder
17. april 2009 - 12:55 #8
yep
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
Computerworld tilbyder specialiserede kurser i database-management

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