Avatar billede prop46 Nybegynder
17. oktober 2006 - 16:59 Der er 17 kommentarer og
1 løsning

Hent 2 rækker efter dags dato

Jeg har en mySQL-tabel fyldt med aktiviteter, og jeg vil gerne hente de 2 næste i fordhold til dags dato.

Dvs. Konstaterer hvilken dato det er idag:
  $dagsdato = date("j/n - Y");

Hente de 2 næste aktiviteter. Noget i retningen af:
$hent_kbhaktiv = "SELECT * FROM aktiviteter where sted = 'kobenhavn'... bla bla bla

Men jeg ved ikke rigtig hvordan... :0) Nogen hjælp at hente?
Avatar billede 7th Praktikant
17. oktober 2006 - 17:18 #1
Hvilket format har dit datofelt i din aktivitetstabel?

SELECT * FROM aktiviteter WHERE __dit_dato_felt__ > CURDATE() AND sted = 'kobenhavn' ORDER BY __dit_dato_felt__ LIMIT 0, 2
Avatar billede prop46 Nybegynder
17. oktober 2006 - 17:27 #2
Min dato er egt. bare gemt som TEXT (ex. 970524000) og så hevet ud med en  date().

Det du skriver der.. CURDATE().. betyder det dags dato?
Avatar billede 7th Praktikant
17. oktober 2006 - 17:50 #3
Jep, fra maualen, CURDATE():
Returns the current date as a value in 'YYYY-MM-DD' or YYYYMMDD format, depending on whether the function is used in a string or numeric context.

Prøv så...

SELECT * FROM aktiviteter WHERE FROM_UNIXTIME(__dit_dato_felt__) > CURDATE() AND sted = 'kobenhavn' ORDER BY __dit_dato_felt__ LIMIT 0, 2
Avatar billede prop46 Nybegynder
17. oktober 2006 - 18:01 #4
Hmmm.. jeg får bare ikke rigtigt noget ud... og kan ikke find en evt fejl...

$hent_kbhaktiv = "SELECT aktivitet, navn, dato FROM aktiviteter WHERE FROM_UNIXTIME(dato) > CURDATE() AND sted = 'kobenhavn' ORDER BY dato LIMIT 0, 2";
$aabn_forbindelse_og_vaelgdb();
$resultat_hent_kbhaktiv = mysql_query($hent_kbhaktiv);
luk_forbindelse();


<?php
while($resultat_kbhaktiv = mysql_fetch_array($resultat_hent_kbhaktiv)) {
    $aktivitet =  stripslashes($resultat_kbhaktiv["aktivitet"]);
    $navn =  stripslashes($resultat_kbhaktiv["navn"]);
?>
<tr>
<td style="height:40px; width:181px; padding-left:5px;" align="left" valign="middle" class="border6 p6"><b>5 april</b> - <?php echo "".$navn."</br>\"".$aktivitet."\""; ?></td>
</tr>
<?php
}
?>
Avatar billede 7th Praktikant
17. oktober 2006 - 18:22 #5
Min fejl.

$hent_kbhaktiv = "SELECT aktivitet, navn, dato FROM aktiviteter WHERE DATE(dato) > CURDATE() AND sted = 'kobenhavn' ORDER BY dato LIMIT 0, 2";
Avatar billede prop46 Nybegynder
17. oktober 2006 - 19:57 #6
Det virker bare stadig ikke :0(
Avatar billede 7th Praktikant
17. oktober 2006 - 20:30 #7
Kunne du ikke lige smide et dump uddrag af din tabel, aktiviteter.
Avatar billede prop46 Nybegynder
18. oktober 2006 - 15:16 #8
Jow undskyld... var ligge optaget andetstedts...

CREATE TABLE `aktiviteter` (
  `id` int(11) NOT NULL auto_increment,
  `sted` text NOT NULL,
  `adr` text NOT NULL,
  `tilmelding` text NOT NULL,
  `pris` text NOT NULL,
  `aktivitet` text NOT NULL,
  `navn` text NOT NULL,
  `dag` text NOT NULL,
  `dato` text NOT NULL,
  `tid` text NOT NULL,
  `link` text NOT NULL,
  `billed` text NOT NULL,
  `tekst` text NOT NULL,
  PRIMARY KEY  (`id`)
)
Avatar billede 7th Praktikant
18. oktober 2006 - 16:58 #9
Lidt indhold fra datofeltet ville hjælpe også :)
Avatar billede prop46 Nybegynder
18. oktober 2006 - 18:59 #10
Jamen det er skam ex. 970524000 som jeg skriver længere oppe.... Er det dét du eftersøger?
Avatar billede 7th Praktikant
18. oktober 2006 - 19:34 #11
970524000 er det svarende til 1997-05-24 eller 2000-10-03 00:00:00?
Avatar billede prop46 Nybegynder
18. oktober 2006 - 21:02 #12
2000-10-03 00:00:00
Avatar billede prop46 Nybegynder
18. oktober 2006 - 21:09 #13
Ved du hvad.. jeg er faktisk ikke helt med på hvorfor jeg lige har lavet den dato som jeg har lavet den... Det skal jeg lige finde ud af.
Avatar billede prop46 Nybegynder
18. oktober 2006 - 21:18 #14
Nevermind :0) Jeg er glad for det jeg har... men det virker bare ikke...
Avatar billede prop46 Nybegynder
18. oktober 2006 - 21:22 #15
Okay.... ved et lykketræf.. eller måske en smule omtanke har jeg løst det selv:

$hent_kbhaktiv = "SELECT aktivitet, navn, dato FROM aktiviteter WHERE UNIX_TIMESTAMP(dato) > CURDATE() AND sted = 'kobenhavn' ORDER BY dato LIMIT 0, 2";

:0) Men tak for forsøget...
Avatar billede prop46 Nybegynder
19. oktober 2006 - 09:16 #16
Men du skal jo lige lægge et svar så du kan få point :0)
Avatar billede 7th Praktikant
19. oktober 2006 - 17:30 #17
UNIX_TIMESTAMP(dato) vil altid være større end CURDATE(), idet du jo sammenligner to forskellige formater :) Problemet var, at jeg troede dit stamp var et datostempel uden tid. Derfor kørte jeg lidt rundt i de forskellige funktioner, beklager.
Hvis denne forespørgsel ikke virker, så snupper du selv point :)

SELECT aktivitet, navn, dato FROM aktiviteter WHERE dato > UNIX_TIMESTAMP() AND sted = 'kobenhavn' ORDER BY dato LIMIT 0, 2

Hvis du har phpmyadmin eller lignende, så kan du også lige prøve at affyre denne sætning for at tjekke datoerne:

SELECT aktivitet, navn, dato, FROM_UNIXTIME(dato), NOW() FROM aktiviteter WHERE dato > UNIX_TIMESTAMP() AND sted = 'kobenhavn' ORDER BY dato LIMIT 0, 2
Avatar billede prop46 Nybegynder
19. oktober 2006 - 20:59 #18
Virker upåklageligt :0)
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