Opdatering af holddatabase, problemer med SQL kald.
Vha. nedenstående .asp side får brugeren indledningsvis vist holdsammensætninger, og såfremt man er givet admin rettigheder, kan man redigere sammensætningen, hvorefter scriptet opdaterer databasen.Scriptet har tidligere virket, men af andre årsager har vi justeret i medlemsnummeret, hvilket åbenbart har skabt nogle problemer.
Lige nu er indholdet i tabellen 'hold' følgende:
uid teamid medlemsnr
46 1 004
45 1 012
44 2 032
43 2 008
42 2 062
41 2 026
Men scriptet viser kun én person fra hvert hold (henholdsvis 012 og 026). På tilsvarende vis bliver kun samme spiller vist som værende på holdet, når man vælger 'rediger'.
Scriptet kan godt finde ud af at tilføje en ny spiller til databasen, men fjerner ikke dem der ikke er 'checked'
Jeg er ret overbevist om at fejlen er i sql sætningen:
strSQLSpillere = "SELECT medlemmer.medlemsnr, email, fornavn, efternavn, cprnr, spillertype FROM medlemmer "
strSQLSpillere = strSQLSpillere & "INNER JOIN hold ON hold.medlemsnr = medlemmer.medlemsnr "
strSQLSpillere = strSQLSpillere & "INNER JOIN spillertype ON spillertype.spillertypeid = medlemmer.spillertypeid "
strSQLSpillere = strSQLSpillere & "WHERE hold.teamid = '" & rsTeams("teamid") & "' ORDER BY fornavn ASC"
Her kommer hele .asp filen:
/////////////// Start //////////////////
<!--#include file="include/connection.asp"-->
<!--#include file="include/function-alder.asp"-->
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" type="text/css" href="css/bball.css">
</head>
<body>
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<script language="JavaScript" src="include/overlib.js"><!-- overLIB (c) Erik Bosrup --></script>
<%
If request.querystring("action") = "rediger" AND LCase(Session("admin")) = "ja" Then
strSQL = "SELECT * FROM teams WHERE teamid = " & request.querystring("team")
set rsTeams = conn.execute(strSQL)
response.write "<h3>Hold beskrivelsen</h3>"
response.write "<form action='teams.asp?action=update&team=" & request.querystring("team") & "' method=post>"
response.write "<TEXTAREA cols=55 rows=5 name=txtbeskrivelse>" & rsTeams("beskrivelse") & "</TEXTAREA><br><br>"
response.write "<table border=1 align=center width='75%'>"
response.write "<tr><th colspan=2>" & rsTeams("teamnavn") & "<br>" & rsTeams("raekke") & "</th>"
response.write "<td><input type=submit value='Opdater holdet'></td></tr>"
strSQLSPillere = "SELECT medlemmer.medlemsnr, fornavn, efternavn, teamid "
strSQLSpillere = strSQLSpillere & "FROM medlemmer "
If Request.ServerVariables("REMOTE_ADDR") = "127.0.0.1" Then
strSQLSpillere = strSQLSpillere & "LEFT JOIN hold ON medlemmer.medlemsnr = int(hold.medlemsnr) "
Else
strSQLSpillere = strSQLSpillere & "LEFT JOIN hold ON medlemmer.medlemsnr = hold.medlemsnr "
End If
strSQLSpillere = strSQLSpillere & "ORDER BY fornavn ASC"
set rsSpillere = conn.execute(strSQLSpillere)
While not rsSpillere.EOF
Response.write "<TD class=TDRadioButton><INPUT TYPE='checkbox' value=" & rsSpillere("medlemsnr") & " name='chk1' class=radiobutton"
If int(rsSpillere("teamid")) = int(rsTeams("teamid")) Then
response.write " checked>"
Else
response.write ">"
End If
response.write "</td>"
response.write "<td>" & rsSpillere("fornavn") & " " & rsSpillere("efternavn") & "</td></tr>"
rsSpillere.MoveNext
Wend
response.write "</form>"
response.write "</table>"
ElseIf request.querystring("action") = "update" AND LCase(Session("admin")) = "ja" Then
strSQLTeams = "update teams set beskrivelse = '" & request.form("txtbeskrivelse") & "' where teamid = " & request.querystring("team")
set rsTeams = conn.execute(strSQLTeams)
team = request.querystring("team")
Arr_Numre = Split(Request.Form("chk1"), ",")
'Først kontrolleres at alle holdmedlemmer er oprettet, ellers bliver de det.
For i = 0 To UBound(Arr_Numre)
strSQL1 = "SELECT * FROM hold WHERE medlemsnr = '" & Arr_Numre(i) & "' AND teamid = '" & team & "'"
set rs1 = conn.execute(strSQL1)
If rs1.BOF AND rs1.EOF Then
strSQL2 = "INSERT INTO hold (medlemsnr, teamid) VALUES ('" & Arr_Numre(i) & "', '" & team & "')"
set rs2 = conn.execute(strSQL2)
End If
Next
strSQL = "SELECT medlemsnr FROM medlemmer"
set rs = conn.execute(strSQL)
While not rs.EOF
match = "FALSE"
For i = 0 To UBound(Arr_Numre)
If rs("medlemsnr") = Arr_Numre(i) Then match = "TRUE"
Next
If match = "FALSE" Then
strSQL3 = "SELECT * FROM hold WHERE medlemsnr = '" & rs("medlemsnr") & "' AND teamid = " & team & ""
set rs3 = conn.execute(strSQL3)
If rs3.BOF and rs3.EOF Then
Else
strSQL4 = "DELETE FROM hold WHERE medlemsnr = '" & rs("medlemsnr") & "' AND teamid = " & team & ""
set rs4 = conn.execute(strSQL4)
End If
End If
rs.movenext
Wend
Else
response.write "<h1>Klubbens hold</h1>"
strSQLTeams = "SELECT * FROM teams order by sortering"
set rsTeams = conn.execute(strSQLTeams)
While not rsTeams.EOF
response.write "<table border=1 align=center width='50%'>"
response.write "<tr><th colspan=2 width='85%'>" & rsTeams("teamnavn") & "<br>" & rsTeams("raekke") %>
</th><th width='15%'><a href="java script:void(0);" onmouseover="return overlib('<%= rsTeams("beskrivelse") %>');" onmouseout="return nd();">info</a></th>
<% If Session("admin") = "JA" Then
response.write "<td><form action='teams.asp?action=rediger&team=" & rsTeams("teamid") & "' method=post>"
response.write "<input type=submit value='Rediger'></form></td></tr>"
Else
response.write "</tr>"
End If
If Request.ServerVariables("REMOTE_ADDR") = "127.0.0.1" Then
strSQLSpillere = "SELECT medlemmer.medlemsnr, email, fornavn, efternavn, cprnr, spillertype "
strSQLSpillere = strSQLSpillere & "FROM ((medlemmer INNER JOIN hold ON int(hold.medlemsnr) = medlemmer.medlemsnr) "
strSQLSpillere = strSQLSpillere & "INNER JOIN spillertype ON spillertype.spillertypeid = medlemmer.spillertypeid) "
strSQLSpillere = strSQLSpillere & "WHERE hold.teamid = " & rsTeams("teamid") & " ORDER BY fornavn ASC"
Else
strSQLSpillere = "SELECT medlemmer.medlemsnr, email, fornavn, efternavn, cprnr, spillertype FROM medlemmer "
strSQLSpillere = strSQLSpillere & "INNER JOIN hold ON hold.medlemsnr = medlemmer.medlemsnr "
strSQLSpillere = strSQLSpillere & "INNER JOIN spillertype ON spillertype.spillertypeid = medlemmer.spillertypeid "
strSQLSpillere = strSQLSpillere & "WHERE hold.teamid = '" & rsTeams("teamid") & "' ORDER BY fornavn ASC"
End If
set rsSpillere = conn.execute(strSQLSpillere)
While not rsSpillere.EOF
alder = ReturnAlder(rsSpillere("cprnr"))
filnavn = "members/" & rsSpillere("medlemsnr") & ".jpg"
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(filnavn) Then %>
<tr><td>
<a onmouseover="return overlib('', BORDER, 1, BACKGROUND, '<%= filnavn %>',HEIGHT, -30, CENTER, ABOVE, WIDTH, 60, HEIGHT, 90);" onmouseout="return nd();">
<img src="images/foto-thumb.gif" border=0></a> <a href="mailto:<%= rsSpillere("email") %>"><%= rsSpillere("fornavn") %> <%= rsSpillere("efternavn") %></a></td>
<% response.write "<td class=TDRight>" & alder & " år</td><td class=TDRight> " & rsSpillere("spillertype") & "</td></tr>"
Else %>
<tr><td><a href="java script:void(0);" onmouseover="return overlib('Billede er på vej.', WIDTH, 105);" onmouseout="return nd();">
<img src="images/foto-thumb.gif" border=0></a> <a href="mailto:<%= rsSpillere("email") %>"><%= rsSpillere("fornavn") %> <%= rsSpillere("efternavn") %></a></td>
<% response.write "<td class=TDRight>" & alder & " år</td><td class=TDRight> " & rsSpillere("spillertype") & "</td></tr>"
End If
rsSpillere.MoveNext
Wend
rsTeams.MoveNext
response.write "</table><br>"
Wend
End If
%>
</body>
</html>
<!--#include file="include/close.asp"-->
////////////// SLUT /////////////////////
