webForumDet fria alternativet

Visa nästkommande match?

ASP

12 svar · 302 visningar · startad av kilpin

Medlem sedan apr. 200084 inlägg
Frågan#1

Hej,
jag har en fotbollssida där jag har lagt in alla matcher i en databas med datum, hemmalag, bortalag etc.

Nu vill jag på en sida visa vilken nästkommande match är med datum och lag. Hur gör jag det? Jag vill ju alltså att när matchen är spelad (dvs datumet för den matchen har passerat) så ska det automatiskt komma visas nästa match i ordningen.

Här är lite kod som jag använder:


<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databas.mdb")) 
 
Visa = "SELECT * FROM games"
"SELECT * FROM games "
set RecSet = Connect.execute(Visa)
%>

Nästa match:<br>
<% =RecSet("date") %> <% =RecSet("hteam") %> - <% =RecSet("ateam") %>

 <%	
	RecSet.Close
	Connect.Close
	Set Connect = Nothing
	%>

Någon som kan hjälpa mig?

Redigerat: Hmm, såg att formatteringen av koden blev helt miffo, sorry...

Medlem sedan sep. 20026 425 inlägg
#2

Du skulle kunna lägga till en kolumn i databasen som heter played och sätta den som 0 om den inte är spelad, 1 om den är spelad. Sen kör du denna SQL-kod:

VISA = "SELECT Top 1 * FROM games WHERE played=0"

Jag tror att det kan fungera..

Och sen behöver du väl inte hämta alla fält i tabellen, räcker det inte med att skriva ut exempelvis falt, falt2 etc. i stället för en asterix *? Du får bättre fart på scriptet i så fall, speciellt om du har många kolumner i tabellen, men använder få.

Medlem sedan apr. 200084 inlägg
#3

Det är givetvis ett alternativ men jag vill gärna slippa ändra i databasen och ange när matchen är spelad. Jag vill att det skall ske med automatik.

Visst behöver jag inte hämta alla fält i tabellen men den är så liten så att det spelar ingen roll. Tror att det totalt är 5 fält som skall hämtas...

Medlem sedan juni 200032 967 inlägg
#4

Annars är det ju bara att jämföra med dagens datum i SQL-frågan. Lagrar du även tid i din kolumn date?

Jag tycker att du ska byta namn på kolumnen date också, eftersom det är ett reserverat ord både här och där. Man kan klamra om man vill, men namnbyte är bäst.

strSQL = "SELECT * FROM games WHERE [date] > Now()"

Mvh,

Medlem sedan dec. 200012 464 inlägg
#5

Varför behövs den kolumnen

select top 1 * from games
 where gamedate > now()
  order by gamedate

Om det är flera matcher med samma (lägsta) datum så returneras alla.

Medlem sedan apr. 200084 inlägg
#6

Tack @nders. Det funkade perfekt och du har nog rätt i att jag skall byta ut date mot något annat. Tänkte inte på det.

Medlem sedan juni 200032 967 inlägg
#7

SQL-frågan i mitt inlägg hämtar dock alla matcher som inte har spelats. Vill du begränsa det, så gör det med TOP enligt LarsGs inlägg.

Mvh,

Medlem sedan apr. 200084 inlägg
#8

Jag märkte det men jag löste det problemet med att sätta

Dim antal
antal = 0
Do While antal < 1

och senare:

nummer = nummer + 1

Men kanske LarsGs förslag är bättre...

Medlem sedan juni 200032 967 inlägg
#9

kilpin skrev:

Men kanske LarsGs förslag är bättre...

Ja.

Man ska inte hämta data man inte ska använda.

Mvh,

Medlem sedan apr. 200084 inlägg
#10

Så sant så sant.

Men en liten fråga till:

Om jag har en match som spelas idag så visas ju inte den eftersom att det står

WHERE [date] > Now()

Den borde alltså stå kvar en dag längre, dvs Now() + en dag till. Hur löser man det?

Kan man istället för Now() använda något som hänvisar till i morgon?

Medlem sedan dec. 20003 887 inlägg
#11
DateAdd("d", 1, Now())
Medlem sedan apr. 200084 inlägg
#12

Hmm, det fungerade inte men om jag gjorde så här:

DateAdd("d", -1, Now())

så funkade det.

Medlem sedan dec. 20003 887 inlägg
#13

Det är samma som att dra bort en dag från dagens datum. Du frågade dock om att lägga till en dag ;)

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)