Avatar billede Slettet bruger
22. oktober 2010 - 09:04 Der er 13 kommentarer

Hente begivenhed fra databasen med datoen NOW

Hej,

jeg har på min hjemmeside Aarhus PULS en database med alle begivenheder i Aarhus.

På forsiden (index.php) skal den hente de begivenheder som er i Aarhus i dag.

Jeg har lige pt. scriptet

<?php
$sqlevent ="select * from tb_event where status=0 and date_end >= NOW() order by date_end asc limit 0,7";
$queryevent = mysql_query($sqlevent)or die(mysql_error());
//echo $sqlevent;
if(mysql_num_rows($queryevent) != 0){
?>

Men hvis i tjekker på siden så henter den ikke de begivenheder der er idag men alle mulige andre.

Nogle der kan fortælle mig hvor det er det går galt og hvad der skal rettes?

På forhånd tak :)

Og hav da lige en god weekend samtidigt.

Iværksætter Madsen
Avatar billede j3ppah Novice
22. oktober 2010 - 09:15 #1
er det meningen at du har >= i stedet for = ? og prøv lige at brug GetDate() i stedet for NOW()
Avatar billede j3ppah Novice
22. oktober 2010 - 09:16 #2
hov, skulle ikke have været et svar...

Der udover hvis du har adgang til SQL serveren, check lige datoen og klokkeslet om det passer.
Avatar billede Slettet bruger
22. oktober 2010 - 09:27 #3
Hej j3ppah,

prøve at indsætte GetDate() og der kommer den med fejlen:

FUNCTION aarhuspuls.GetDate does not exist

Prøvede også at fjerne > og så kommer der bare nul resultater på forsiden selvom der er registreret to idag.

Har ingen adgang til SQL server, kan dette være fejlen, da du måske mener at scriptet burde hente det der sker i dag og at det i forvejen virker?

Tak fordi at du prøver :)

Christian
Avatar billede j3ppah Novice
22. oktober 2010 - 09:42 #4
kan du ikke lige paste de 2 du har prøvet nu...
bare lige for at holde styr på hvad der ikke virker ;)

$sqlevent ="select * from tb_event where status=0 and date_end >= NOW() order by date_end asc limit 0,7";

Hvad indeholder date_end? og er du sikker på at det er det du vil søge på? for det er vel datoer ordren er afsluttet, og ikke datoen hvor ordren er kommet ind på. så hvis der er afgivet 2 ordre idag ville de ikke blive vist.

Skriv lige til mig hvilke tabller og kolonner du har i din SQL database. (Du har ikke en der hedder date_start ?)

og hvad indeholder status ? indeholder vel 0 eller 1, men hvad betyder de forskellige ;).. vi prøver lige at gå det hele systematisk igennem for at få et overblik... GetDate() er mssql ikke mysql sry ;)... men du skal i hvertfald have  = i stedet for >=..
Avatar billede showsource Seniormester
22. oktober 2010 - 10:12 #5
Formatet i feltet date_end er sikkert ikke et datetime:
YYYY-MM-DD HH:MM:SS
2010-10-22 10:10:10

hvilket er formatet for NOW()

Hvis date_end indeholder f.eks. 2010-10-23 10:00:00 vil det virke med
SELECT * FROM tabel WHERE date_end >= NOW()

getdate() er vist sql-server ting.
Avatar billede showsource Seniormester
22. oktober 2010 - 10:13 #6
sql-server => MSsql-server
Avatar billede Slettet bruger
22. oktober 2010 - 10:16 #7
Der er i tabellen date_show og date_end

date_show må vel derfor være startdatoen og date_end slutdatoen der bliver angivet når begivenheden oprettes.

Kan faktisk ikke huske hvorfor der er angivet en status.

Ser at jeg også har lavet denne længere oppe:

<?php
$sqlcountevent  = "SELECT COUNT(event_id) AS cnt FROM tb_event WHERE STATUS =0 and date_end >= NOW()";
$querycountevent = mysql_query ($sqlcountevent);
$rscountevent = mysql_fetch_array($querycountevent);
?>

Hvis det skulle have noget med det at gøre også.

Tak fordi du prøver at hjælpe mig :)

Christian
Avatar billede j3ppah Novice
22. oktober 2010 - 10:29 #8
prøv lige med
$sqlcountevent  = "SELECT COUNT(event_id) AS cnt FROM tb_event WHERE STATUS =0 and date_show = NOW()";

Og det var da så lidt :)
Avatar billede Slettet bruger
22. oktober 2010 - 10:42 #9
Hej j3ppah, prøvede men det virkede ikke.

Nu har jeg ændret

<?php
$sqlevent ="select * from tb_event where status=0 and date_end >= NOW() order by date_end asc limit 0,7";
$queryevent = mysql_query($sqlevent)or die(mysql_error());
//echo $sqlevent;
if(mysql_num_rows($queryevent) != 0){
?>

til

date_show de to steder hvor der var date_end...
og det virker, næsten... den sorterer begivenhederne efter dato men den tager først begivenhederne fra i morgen... før sorterede den med tilfældige datoer og det ser man at den ikke gør nu.

Så lidt tættere på er vi da kommet :)
Avatar billede j3ppah Novice
22. oktober 2010 - 10:52 #10
Prøv lige at erstatte NOW() med 22-01-2010 Eller hvordan formatet nu er
Avatar billede Slettet bruger
22. oktober 2010 - 11:25 #11
Ændrer jeg det til 22-10-2010 eller 10-22-2010 så begynder den at hente begivenheder som er udløbet. Syntes det er lidt mærkeligt at den ikke vil hente de begivenheder som kun er i dag... burde jo være en "smal" sag...
Avatar billede j3ppah Novice
22. oktober 2010 - 12:08 #12
Hmm... Ved du hvad vi gør.... Prøv lige at lave din query ved at lave et view, og så intast cridentials i de fælter der nu er...
det burde den sku forstå...

så gennerere den selv en query ud fra guien
Avatar billede showsource Seniormester
22. oktober 2010 - 12:20 #13
Vi har stadig intet hørt om hvilken type feltet er.
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