/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
2 spørgsmål angående statestik og udregn~
Fra : crha
Vist : 748 gange
150 point
Dato : 08-12-03 15:46

Hejsa, jeg ved ikke om overskriften passer helt, men jeg kunne ikke lige komme i tanke om noget bedere.

Det er sådan, at jeg gerne vil lave et script, hvor der er en liga med nogle hold, som spiller mod hinanden osv.

Til dette har jeg to problemer, nemlig nogle jeg ikke lige ved hvordan jeg skulle bære mig ad med at lave:

1. Hvordan man laver en tabel over holdene og deres placering (som man ser det i fodbold), hvor det bedste hold er markeret med grøn og de fire sidste markeret med rød (og eventuelt en streg der viser dette)

2. Hvordan man får et script til at udregne alle de kampe der skal spilles i løbet af sæsonen.

Jeg håber meget, at nogen kan besvare disse spørgsmål ;)

Mvh.
Casper

 
 
Kommentar
Fra : MouseKeeperX


Dato : 22-12-03 00:16

Er du stadig interesseret i et svar eller har du fundet ud af det på anden vis? I så fald vil jeg nemlig ikke bruge tid på det ;)

Kommentar
Fra : crha


Dato : 22-12-03 14:11

Jeg kunne godt stadig tænke mig at vide det.

Kommentar
Fra : MouseKeeperX


Dato : 12-01-04 01:22

Jeg havde svedt denne ud - undskyld. Jeg tilskriver det jul og nytår...

Lad os antage (for at gøre det simpelt) at der er to tabeller: tabellen
Hold med felterne Holdid, Holdnavn
og tabellen Kampe med felterne Hjemmehold, Udehold, Hjemmemål, Udemål
Jeg har lavet dem i Access 2000 - du har ikke oplyst hvilken database du benytter, men jeg forsøger at gøre det nogenlunde "kompatibelt" botset fra navne (se senere)

Sidste spørgsmål først, da det er det mest simple:

Alle kampene kan oprettes i tabellen Kampe med følgende script:

INSERT INTO kampe
SELECT hold.holdid as hjemmehold, h2.holdid as udehold
FROM hold LEFT OUTER JOIN hold AS h2 ON hold.holdid <> h2.holdid;

mht. det føste spørgsmål er der flere muligheder afhængig af alle mulige ting, men i mit simple eksempel har jeg ikke taget hensyn til point, målscore og stilling. Det gør at jeg skal løbe igennem alle kampene hver gang jeg skal have fat i stilligrn og ville være fint hvis det var noget jeg skulle have for mig selv. Jeg går ud fra at andre skal have adgang til at kikke og udvider derfor tabellen Hold med felterne:
Point, Hjemmemål, Udemål

Disse felter skal så opdateres i Hold hver gang der opdateres i tabellen Kampe - afhængig af databasen du benytter kan dette gøres på databaseniveau, men da du alligevel skal have fat med ASP for at opdatere Kampe, er det nemmere at sætte noget kode der ligner dette efter update af tabellen Kampe:

'ASP - jeg regner med at du har hjemmemål og udemål og id for holdene (hjemmeholdsID/etc)(ellers vil det være svært at opdatere kamptabellen)

if (hjemmemål < udemål) then
hjemmepoint = 3
udepoint = 0
elseif (hjemmemål = udemål) then ' kan ikke huske syntaksen ...
hjemmepoint = 1
udepoint = 1
else
hjemmepoint = 0
udepoint = 3
end if


derefter skal du have fyret 2 updatesætninger af der ser nogenlunde således ud
'hjemmehold
SQL1 = "UPDATE hold SET point = point + " & hjemmepoint & _
" , hjemmemål= " & hjemmemål & _
" , udemål=" & udemål & _
" WHERE hold.holdid=" & hjemmeholdsID
' fyr den af mod DB hvordan du nu end gør det...

' det samme for udeholdet - point og mål er bare modsat
SQL1 = "UPDATE hold SET point = point + " & udepoint & _
" , udemål= " & hjemmemål & _
" , hjemmemål=" & udemål & _
" WHERE hold.holdid=" & udeholdsID
' fyr den af mod DB hvordan du nu end gør det...


Stillingen kan nu nemt nappes fra denne tabel når det er nødvendigt. Skal du (som spm. vist oprindeligt gik ud på have en tabel med farver osv, kan du benytte noget de ligner: (jeg formoder her at du selv kan sætte tingene ind i en tabel med farver etc. - ellers må du lige skrive igen...)

' Jeg formoder at du kender antallet af hold - ellers kan du få det med
' SELECT count(*) from hold

SQLstr = "SELECT * from hold order by point desc"
' fyres denne sql kommando af vil den give alle holdene ordnet efter point, hvilket er det vi ønsker og da ROWNUM ikke er generel

rowcount = 1
while not rs.eof do
if (rowcount = 1) then
'skriv noget specielt ud for førsteholdet "med grønt"
elseif (rowcount >= antalhold - 4) then
' så skal det have en rød farve
response.write "--> dårligt hold... ---> " & rs.holdnavn
else
' normal udskrivning - hold i midten
end if

' hvis du vil have lavet en linie oven over de 4 nederste placeringer så gør det her ( det kræver naturligvis at der er nok hold!!!)
if (rowcount = antalhold - 5)
' skriv en line - evt som en <hr> tag
end if

rs.next
rowcount = rowcount + 1
end


Jeg kan ikke hjælpe dig meget mere uden yderligere oplysninger, så hvis svaret ikke er tilfredsstillende, så skriv endelig tilbage med flere oplysninger. Nu er julen jo ovre, så der skulle være mulighed for en rimelig hurtig respons :)

mvh
MouseKeeperX

PS Selv om jeg har brugt danske bogstaver i mit eksempel til navne skal du nok lade være - det kan give problemer rundt omkring, men det giver lidt mere overskuelighed synes jeg.

Kommentar
Fra : MouseKeeperX


Dato : 12-01-04 01:26

hmm - lidt stavefejl kan jeg umiddelbart spotte, og da der ikke er andre der har interesse for tråden lige nu er det vel ok at sige - jeg plejer altså heller ikke at skrive så lange indlæg, hvis jeg skal sige noget til min undskyldning...

/M

Kommentar
Fra : crha


Dato : 12-01-04 09:07

WoW WoW, det ser jo interessant ud :) men lige noget jeg ikke helt kan finde rundt i. Hvilke felter skal være hvor i databasen?

I tabellen kampe skal der være: ???
I tabellen hold skal der være: hjemmemål, udemål, point, ???

Kommentar
Fra : MouseKeeperX


Dato : 12-01-04 09:53

hold->
holdid : autonummerering
holdnavn: tekst
point: heltal
hjemmemål: heltal
udemål: heltal

kampe->
kampid: autonummerering
hjemmehold: heltal
udehold: heltal
hjemmemål: : heltal
udemål: heltal



Kommentar
Fra : crha


Dato : 12-01-04 11:12

Nu har jeg rodet lidt med det, men jeg kan desværre ikke få det til at virke. Jeg ved ikke hvad problemet er.

Kommentar
Fra : MouseKeeperX


Dato : 12-01-04 12:40

Jeg er lidt usikker på din kode-erfaring - meget/lidt osv Men smid koden her, så kikker jeg på det

Kommentar
Fra : crha


Dato : 12-01-04 12:47

<%
hjemmeholdsID = 2
udeholdsID = 1
if (hjemmemaal < udemaal) then
hjemmepoint = 3
udepoint = 0
elseif (hjemmemaal = udemaal) then
hjemmepoint = 1
udepoint = 1
else
hjemmepoint = 0
udepoint = 3
end if

SQL1 = "UPDATE hold SET point = point + " & hjemmepoint & _
" , hjemmemaal= " & hjemmemaal & _
" , udemaal=" & udemaal & _
" WHERE hold.holdid=" & hjemmeholdsID
response.wrtite "hej2"


SQL1 = "UPDATE hold SET point = point + " & udepoint & _
" , udemaal= " & hjemmemaal & _
" , hjemmemaal=" & udemaal & _
" WHERE hold.holdid=" & udeholdsID
response.wrtite "hej"


strSQL = "SELECT * from hold order by point desc"
Set rs = Conn.Execute(strSQL)

rowcount = 1
while not rs.eof do
if (rowcount = 1) then
'skriv noget specielt ud for førsteholdet "med grønt"
elseif (rowcount >= antalhold - 4) then
' saa skal det have en rød farve
response.write "--> daarligt hold... ---> " & rs.holdnavn
else
' normal udskrivning - hold i midten
end if ' hvis du vil have lavet en linie oven over de 4 nederste placeringer saa gør det her ( det kræver naturligvis at der er nok hold!!!)
if (rowcount = antalhold - 5) then
' skriv en line - evt som en <hr> tag
end if
rowcount = rowcount + 1
rs.next

hjemmeholdsID = 2
%>

Kommentar
Fra : MouseKeeperX


Dato : 12-01-04 18:10

kommer der ikke nogen fejlmeddelelser? Det burde der gøre for der er adskillige fejl. Hvordan har du defineret din connection (Conn)?

Kommentar
Fra : crha


Dato : 12-01-04 19:09

Jeg har nu tilføjet en databaseoprettelse (som jeg sjovt nok havde glemt), og fjernet sidste linie.

Koden er nu således: http://www.clan-enzymes.com/turnering/stilling/kode.txt
Scriptfejlen kan ses på http://www.clan-enzymes.com/turnering/stilling/1.asp

Kommentar
Fra : MouseKeeperX


Dato : 12-01-04 20:04

Nå ja - det er min fejl ;)
linien

while not rs.eof do

skal ændres til

do while not rs.eof

og der skal tilføjes et loop efter rs.next (nederst)


Kommentar
Fra : crha


Dato : 13-01-04 15:05

Hmm, jeg forstår det ikke:

http://www.clan-enzymes.com/turnering/stilling/1.asp
http://www.clan-enzymes.com/turnering/stilling/kode.txt

Her er fejlen + koden... Der er 11 hold i databasen, som kan hentes her http://www.clan-enzymes.com/turnering/stilling/test.mdb

Du skriver noget om, at man skal kende antallet af hold. Hvor skriver man dette tal?

Kommentar
Fra : MouseKeeperX


Dato : 13-01-04 21:09

Jeg troede at du havde mere erfaring i at kode asp - hvad med html? Er det noget du kender (forms tabeller osv)...?
Nedenstående stump (makegames.asp) genererer kampene:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("test.mdb")
strSQL = "INSERT INTO kampe (hjemmehold, udehold) SELECT hold.holdid as hjemmehold, h2.holdid as udehold FROM hold LEFT OUTER JOIN hold AS h2 ON hold.holdid <> h2.holdid"
conn.execute strSQL, 128
conn.close
set conn=nothing
response.write "kampe oprettet!"
%>


Accepteret svar
Fra : MouseKeeperX

Modtaget 150 point
Dato : 13-01-04 21:52

Hej Casper

Her kommer den del af koden der der viser stillingen - så skulle begge spm vist være besvaret...

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("test.mdb")

strSQL = "SELECT count(*) from hold"
Set rs = Conn.Execute(strSQL)
antalhold = rs(0)

strSQL = "SELECT * from hold order by point desc, hjemmemaal-udemaal desc"
Set rs = Conn.Execute(strSQL)

response.write "<table cellspacing=0 cellpadding=3>"
response.write formatresult("placering", "navn", "white", "point", "hjemmemaal", "udemaal")

rowcount = 1
do while not rs.eof
   if (rowcount = 1) then
    'skriv noget specielt ud for førsteholdet "med grønt"
    response.write formatresult(rowcount, rs("holdnavn"), "green", rs("point"), rs("hjemmemaal"), rs("udemaal") )
   elseif (rowcount > antalhold - 4) then
    ' dårligste hold - saa skal det have en rød farve
    response.write formatresult(rowcount, rs("holdnavn"), "red", rs("point"), rs("hjemmemaal"), rs("udemaal"))
   else
    ' normal udskrivning - hold i midten
    response.write formatresult(rowcount, rs("holdnavn"), "white", rs("point"), rs("hjemmemaal"), rs("udemaal"))
   end if ' hvis du vil have lavet en linie oven over de 4 nederste placeringer saa gør det her ( det kræver naturligvis at der er nok hold!!!)
   if (rowcount = antalhold - 4) then
    response.write "<tr><td colspan=5><hr></td></tr>"
   end if
   
   rowcount = rowcount + 1
   rs.movenext
loop
response.write "</table>"
conn.close
set conn=nothing
set rs = nothing

function formatresult(tplace, tname, tcolor, tpoint, thjemmemaal, tudemaal)
tempstr = "<tr BGCOLOR='" & tcolor & "'><td>" & tplace & "</td><td>" & tname & "</td><td>" & tpoint & "</td><td>" & thjemmemaal & "</td><td>" & tudemaal & "</td></tr>" & vbCRLF
formatresult = tempstr
end function
%>


Godkendelse af svar
Fra : crha


Dato : 13-01-04 22:44

Mange tak for svaret MouseKeeperX.

Nu virker det jo fint, mange tak endnu engang ;)
                        

Kommentar
Fra : MouseKeeperX


Dato : 13-01-04 22:51

Selv tak - håber du kan finde ud af at rette det til hvor det nu skal bruges.

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177563
Tips : 31968
Nyheder : 719565
Indlæg : 6408969
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste