Avatar billede mvk Nybegynder
13. marts 2004 - 00:51 Der er 35 kommentarer og
1 løsning

Fejl med COUNT i sql statement

denne sql virker:

SELECT LEFT(Headline,35) AS Headline50, Name, Views, IDthread, IDuser, CreateDate, CreateTime
FROM thread, users
WHERE userID = IDuser 
ORDER BY IDthread DESC

men denne virker ikke, hvorfor kan jeg ikke inddrage en COUNT:
SELECT LEFT(Headline,35) AS Headline50, Name, Views, IDthread, IDuser, CreateDate, CreateTime, COUNT (threadID) as Svar
FROM thread, users 
WHERE userID = IDuser 
ORDER BY IDthread DESC

jeg får denne fejl:
Microsoft JET Database Engine error '80040e21'
You tried to execute a query that does not include the specified expression 'LEFT(Headline,35)' as part of an aggregate function.
/forum.asp, line 131

jeg bruger Access database
Avatar billede eagleeye Praktikant
13. marts 2004 - 00:55 #1
Det fordi count returnert antallet af records på den måde. Så kan man ikke trække andre kolonne med ud. Med mindre man laver en group by også..

Hvad skal den tælle?
Avatar billede mvk Nybegynder
13. marts 2004 - 01:01 #2
jeg har følgende kolonner i din db:
IDthread
userID
Headline
TextField
CreateDate
CreateTime
Views
Type
threadID

den holder styr på indlæg og svar i mit forum. jeg vil gerne vise:
http://www.gutternes.dk/forum.asp

Headline
Antal svar til den påfældende IDthread (hvor mange poster er der oprettet med den threadID og Type=post)
Forfatter - hvem har oprettet indlæget
Set - views
Sidste post - gerne vise den sidste Type=post der er oprettet til den IDthread
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:09 #3
Så må du lave det sådan den joiner tabellern som to og laver en group by, så prøv sådan her:

SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (threadID) as Svar
FROM thread, users, thread as t1 
WHERE userID = IDuser  AND thread.IDthread = t1.threadID AND t1.type='post'
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY IDthread DESC

eller må det laves med "rigtige" JOIN
Avatar billede mvk Nybegynder
13. marts 2004 - 01:16 #4
Microsoft JET Database Engine error '80004005'
The specified field 'threadID' could refer to more than one table listed in the FROM clause of your SQL statement.
/forum.asp, line 13

hvad er den rigtige join ? :)
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:22 #5
Prøv sådan her:


SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM thread, users, thread as t1 
WHERE thread.userID = IDuser  AND thread.IDthread = t1.threadID AND t1.type='post'
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC


JOIN er noget i stil med dette:

SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM (thread LEFT JOIN users ON thread.userID = IDuser) LEFT JOIN thread as t1 ON  thread.IDthread = t1.threadID
WHERE t1.type='post'
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC
Avatar billede mvk Nybegynder
13. marts 2004 - 01:24 #6
nice: http://www.gutternes.dk/forum.asp

men den viser kun 1 record - jeg ville gerne vise dem alle og så bare skrive '0' i svar når der ikke er nogen - kan det lade sig gøre ?
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:27 #7
Selve SQL skulle ikke begrænse til en record, har du et loog??
Avatar billede mvk Nybegynder
13. marts 2004 - 01:28 #8
loog ?
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:28 #9
når hvis der ikke... hvilken SQL bruger du ?
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:29 #10
hvilken SQL sætning af de to viste :)
Avatar billede mvk Nybegynder
13. marts 2004 - 01:30 #11
databasen ligger på: www.gutternes.dk/db/gutterne.zip
Avatar billede mvk Nybegynder
13. marts 2004 - 01:30 #12
hehe - den første:
SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM thread, users, thread as t1 
WHERE thread.userID = IDuser  AND thread.IDthread = t1.threadID AND t1.type='post'
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:30 #13
Prøv den med JOIN
Avatar billede mvk Nybegynder
13. marts 2004 - 01:31 #14
den anden virker ikke - JOIN expression not supported skriver den
Avatar billede mvk Nybegynder
13. marts 2004 - 01:32 #15
Microsoft JET Database Engine error '80040e14'
Join expression not supported.
/forum.asp, line 131
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:33 #16
hmm prøv sådan her:

SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM (thread LEFT JOIN users ON thread.userID = users.IDuser) LEFT JOIN thread as t1 ON  thread.IDthread = t1.threadID
WHERE t1.type='post'
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:33 #17
Grunden til den anden kun tager med hvis der er svar er pga. denne i WHERE delen:
thread.IDthread = t1.threadID

Den med LEFT JOIN skulle tage alle med også selvom der ikke er nogle svar endnu.
Avatar billede mvk Nybegynder
13. marts 2004 - 01:34 #18
stadig kun 1 record: http://www.gutternes.dk/forum.asp
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:36 #19
Så drop WHERE helt:

SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM (thread LEFT JOIN users ON thread.userID = users.IDuser) LEFT JOIN thread as t1 ON  thread.IDthread = t1.threadID
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC
Avatar billede mvk Nybegynder
13. marts 2004 - 01:39 #20
denne kører med alle records, men viser det samme antal svar for alle records...

SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM thread, users, thread as t1
WHERE thread.userID = IDuser AND t1.type='post'  GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:40 #21
der er da en som den viser 8 ud for.:
Der sker ikke det helt store her in      8
Avatar billede mvk Nybegynder
13. marts 2004 - 01:44 #22
så kører den :)
men nu virker min funktion på 'Emne' ikke. før kunne man klikke på den og se læse posten
Avatar billede mvk Nybegynder
13. marts 2004 - 01:51 #23
den viser også de posts der ligger - den skal kun vise Type = thread

er det fordi jeg griber struktureringen af databasen helt forkert an at det er problematisk ?
Avatar billede eagleeye Praktikant
13. marts 2004 - 01:54 #24
Nej det kan man godt gøre på den måde, typsik bruger man 0 i threadID hvis det er hovedtråd.

Det skulle være muligt at få på me typen:


SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM thread, users, thread as t1
WHERE thread.userID = IDuser AND t1.type='post' AND thread.type='thread'  GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC
Avatar billede mvk Nybegynder
13. marts 2004 - 02:01 #25
typsik bruger man 0 i threadID hvis det er hovedtråd - betyder det at jeg skal smide værdien 0 i threadID når man opretter en ny thread ?

så viser den kun threads, men Svar står til 7 på dem alle sammen
Avatar billede eagleeye Praktikant
13. marts 2004 - 02:04 #26
Brug den med JOIN's der kan man styre det bedre hvordan man sætte tabellerne sammen.

Ja så smider man 0 ind i threadID når man lave ren ny tråd. Det er et alternativ til at havde type som du sikkert bruger til enten "thred" eller "post"
Avatar billede mvk Nybegynder
13. marts 2004 - 02:06 #27
denne her ?:
SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM (thread LEFT JOIN users ON thread.userID = IDuser) LEFT JOIN thread as t1 ON  thread.IDthread = t1.threadID
WHERE t1.type='post'
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC

ja jeg bruger type til thread eller post- hvis jeg fylder 0 på alle threads i threadID burde det så virke ?
Avatar billede eagleeye Praktikant
13. marts 2004 - 02:08 #28
Prøv denne:

SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar
FROM (thread LEFT JOIN [users] ON thread.userID = users.IDuser) LEFT JOIN thread as t1 ON  thread.IDthread = t1.threadID
WHERE thread.type='thread'
GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime
ORDER BY thread.IDthread DESC


Hvis du så har 0 i threadID ville denne WHERE del:
WHERE thread.type='thread'

Være:
WHERE thread.threadID = 0
Avatar billede mvk Nybegynder
13. marts 2004 - 02:16 #29
det ser godt ud :) http://www.gutternes.dk/forum.asp
men min funktion på 'Emne' virker ikke - den burde gå til forum_specifik.asp med det IDthread der passer til emnet
Avatar billede eagleeye Praktikant
13. marts 2004 - 02:18 #30
er det ikke fordi alle form's hedder det samme?
Avatar billede mvk Nybegynder
13. marts 2004 - 02:23 #31
det tror jeg ikke:
        <form ACTION="<%=MM_editAction%>" METHOD="POST" name="specifik">
          <td height="20">
              <a href="java script:document.forms['specifik'].submit()"><%=(rsThreads.Fields.Item("Headline50").Value)%></a>
              <input name="Views" type="hidden" id="Views" value="<%=(rsThreads.Fields.Item("Views").Value)+1%>">
              <input name="IDthread" type="hidden" id="IDthread" value="<%=(rsThreads.Fields.Item("IDthread").Value)%>">
                <input type="hidden" name="MM_update" value="specifik">
              <input type="hidden" name="MM_recordId" value="<%= rsThreads.Fields.Item("IDthread").Value %>">
              </td>
        </form>
Avatar billede mvk Nybegynder
13. marts 2004 - 02:31 #32
strange - den virkede før
jeg synes min seng kalder lige for vildt nu
tusinde tak for hjælpen eagle - sov godt

paste lige koden til min side:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/gutternes.asp" -->
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Update Record: set variables

If (CStr(Request("MM_update")) = "specifik" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_gutternes_STRING
  MM_editTable = "thread"
  MM_editColumn = "IDthread"
  MM_recordId = "" + Request.Form("MM_recordId") + ""
  MM_editRedirectUrl = "forum_specifik.asp?IDthread=" & Request.Form("IDthread") & ""
  MM_fieldsStr  = "Views|value"
  MM_columnsStr = "Views|none,none,NULL"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  ' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim rsThreads
Dim rsThreads_numRows

Set rsThreads = Server.CreateObject("ADODB.Recordset")
rsThreads.ActiveConnection = MM_gutternes_STRING
rsThreads.Source = "SELECT LEFT(thread.Headline,35) AS Headline50, Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime, COUNT (t1.threadID) as Svar  FROM (thread LEFT JOIN [users] ON thread.userID = users.IDuser) LEFT JOIN thread as t1 ON  thread.IDthread = t1.threadID  WHERE thread.threadID = 0  GROUP BY LEFT(thread.Headline,35), Name, thread.Views, thread.IDthread, IDuser, thread.CreateDate, thread.CreateTime  ORDER BY thread.IDthread DESC"
rsThreads.CursorType = 0
rsThreads.CursorLocation = 2
rsThreads.LockType = 1
rsThreads.Open()

rsThreads_numRows = 0
%>
<%
Dim rsFlestIndlaeg
Dim rsFlestIndlaeg_numRows

Set rsFlestIndlaeg = Server.CreateObject("ADODB.Recordset")
rsFlestIndlaeg.ActiveConnection = MM_gutternes_STRING
rsFlestIndlaeg.Source = "SELECT COUNT (IDthread) AS Flest, Nickname  FROM thread, users  WHERE userID = IDuser AND Type = 'thread' GROUP BY Nickname  ORDER BY COUNT (IDthread) DESC"
rsFlestIndlaeg.CursorType = 0
rsFlestIndlaeg.CursorLocation = 2
rsFlestIndlaeg.LockType = 1
rsFlestIndlaeg.Open()

rsFlestIndlaeg_numRows = 0
%>
<%
Dim rsSidsteindlaeg
Dim rsSidsteindlaeg_numRows

Set rsSidsteindlaeg = Server.CreateObject("ADODB.Recordset")
rsSidsteindlaeg.ActiveConnection = MM_gutternes_STRING
rsSidsteindlaeg.Source = "SELECT *  FROM thread  WHERE Type = 'thread'  ORDER BY IDthread DESC"
rsSidsteindlaeg.CursorType = 0
rsSidsteindlaeg.CursorLocation = 2
rsSidsteindlaeg.LockType = 1
rsSidsteindlaeg.Open()

rsSidsteindlaeg_numRows = 0
%>
<%
Dim rsSidsteSvar
Dim rsSidsteSvar_numRows

Set rsSidsteSvar = Server.CreateObject("ADODB.Recordset")
rsSidsteSvar.ActiveConnection = MM_gutternes_STRING
rsSidsteSvar.Source = "SELECT *  FROM thread  WHERE Type = 'post'  ORDER BY IDthread DESC"
rsSidsteSvar.CursorType = 0
rsSidsteSvar.CursorLocation = 2
rsSidsteSvar.LockType = 1
rsSidsteSvar.Open()

rsSidsteSvar_numRows = 0
%>
<%
Dim rsFlestSvar
Dim rsFlestSvar_numRows

Set rsFlestSvar = Server.CreateObject("ADODB.Recordset")
rsFlestSvar.ActiveConnection = MM_gutternes_STRING
rsFlestSvar.Source = "SELECT COUNT (IDthread) AS Flest, Nickname  FROM thread, users  WHERE userID = IDuser AND Type = 'post' GROUP BY Nickname  ORDER BY COUNT (IDthread) DESC"
rsFlestSvar.CursorType = 0
rsFlestSvar.CursorLocation = 2
rsFlestSvar.LockType = 1
rsFlestSvar.Open()

rsFlestSvar_numRows = 0
%>
<%
Dim rsFaerrestIndlaeg
Dim rsFaerrestIndlaeg_numRows

Set rsFaerrestIndlaeg = Server.CreateObject("ADODB.Recordset")
rsFaerrestIndlaeg.ActiveConnection = MM_gutternes_STRING
rsFaerrestIndlaeg.Source = "SELECT COUNT (IDthread) AS Flest, Nickname  FROM thread, users  WHERE userID = IDuser AND Type = 'thread' GROUP BY Nickname  ORDER BY COUNT (IDthread) ASC"
rsFaerrestIndlaeg.CursorType = 0
rsFaerrestIndlaeg.CursorLocation = 2
rsFaerrestIndlaeg.LockType = 1
rsFaerrestIndlaeg.Open()

rsFaerrestIndlaeg_numRows = 0
%>
<%
Dim rsFaerrestSvar
Dim rsFaerrestSvar_numRows

Set rsFaerrestSvar = Server.CreateObject("ADODB.Recordset")
rsFaerrestSvar.ActiveConnection = MM_gutternes_STRING
rsFaerrestSvar.Source = "SELECT COUNT (IDthread) AS Flest, Nickname  FROM thread, users  WHERE userID = IDuser AND Type = 'post' GROUP BY Nickname  ORDER BY COUNT (IDthread) ASC"
rsFaerrestSvar.CursorType = 0
rsFaerrestSvar.CursorLocation = 2
rsFaerrestSvar.LockType = 1
rsFaerrestSvar.Open()

rsFaerrestSvar_numRows = 0
%>
<%
Dim rsTotal
Dim rsTotal_numRows

Set rsTotal = Server.CreateObject("ADODB.Recordset")
rsTotal.ActiveConnection = MM_gutternes_STRING
rsTotal.Source = "SELECT *  FROM thread  WHERE Type = 'thread'"
rsTotal.CursorType = 0
rsTotal.CursorLocation = 2
rsTotal.LockType = 1
rsTotal.Open()

rsTotal_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 20
Repeat1__index = 0
rsThreads_numRows = rsThreads_numRows + Repeat1__numRows
%>
<%
'  *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim rsThreads_total
Dim rsThreads_first
Dim rsThreads_last

' set the record count
rsThreads_total = rsThreads.RecordCount

' set the number of rows displayed on this page
If (rsThreads_numRows < 0) Then
  rsThreads_numRows = rsThreads_total
Elseif (rsThreads_numRows = 0) Then
  rsThreads_numRows = 1
End If

' set the first and last displayed record
rsThreads_first = 1
rsThreads_last  = rsThreads_first + rsThreads_numRows - 1

' if we have the correct record count, check the other stats
If (rsThreads_total <> -1) Then
  If (rsThreads_first > rsThreads_total) Then
    rsThreads_first = rsThreads_total
  End If
  If (rsThreads_last > rsThreads_total) Then
    rsThreads_last = rsThreads_total
  End If
  If (rsThreads_numRows > rsThreads_total) Then
    rsThreads_numRows = rsThreads_total
  End If
End If
%>
<%
'  *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim rsTotal_total
Dim rsTotal_first
Dim rsTotal_last

' set the record count
rsTotal_total = rsTotal.RecordCount

' set the number of rows displayed on this page
If (rsTotal_numRows < 0) Then
  rsTotal_numRows = rsTotal_total
Elseif (rsTotal_numRows = 0) Then
  rsTotal_numRows = 1
End If

' set the first and last displayed record
rsTotal_first = 1
rsTotal_last  = rsTotal_first + rsTotal_numRows - 1

' if we have the correct record count, check the other stats
If (rsTotal_total <> -1) Then
  If (rsTotal_first > rsTotal_total) Then
    rsTotal_first = rsTotal_total
  End If
  If (rsTotal_last > rsTotal_total) Then
    rsTotal_last = rsTotal_total
  End If
  If (rsTotal_numRows > rsTotal_total) Then
    rsTotal_numRows = rsTotal_total
  End If
End If
%>

<%
' *** Recordset Stats: if we don't know the record count, manually count them

If (rsThreads_total = -1) Then

  ' count the total records by iterating through the recordset
  rsThreads_total=0
  While (Not rsThreads.EOF)
    rsThreads_total = rsThreads_total + 1
    rsThreads.MoveNext
  Wend

  ' reset the cursor to the beginning
  If (rsThreads.CursorType > 0) Then
    rsThreads.MoveFirst
  Else
    rsThreads.Requery
  End If

  ' set the number of rows displayed on this page
  If (rsThreads_numRows < 0 Or rsThreads_numRows > rsThreads_total) Then
    rsThreads_numRows = rsThreads_total
  End If

  ' set the first and last displayed record
  rsThreads_first = 1
  rsThreads_last = rsThreads_first + rsThreads_numRows - 1
 
  If (rsThreads_first > rsThreads_total) Then
    rsThreads_first = rsThreads_total
  End If
  If (rsThreads_last > rsThreads_total) Then
    rsThreads_last = rsThreads_total
  End If

End If
%>
<%
' *** Recordset Stats: if we don't know the record count, manually count them

If (rsTotal_total = -1) Then

  ' count the total records by iterating through the recordset
  rsTotal_total=0
  While (Not rsTotal.EOF)
    rsTotal_total = rsTotal_total + 1
    rsTotal.MoveNext
  Wend

  ' reset the cursor to the beginning
  If (rsTotal.CursorType > 0) Then
    rsTotal.MoveFirst
  Else
    rsTotal.Requery
  End If

  ' set the number of rows displayed on this page
  If (rsTotal_numRows < 0 Or rsTotal_numRows > rsTotal_total) Then
    rsTotal_numRows = rsTotal_total
  End If

  ' set the first and last displayed record
  rsTotal_first = 1
  rsTotal_last = rsTotal_first + rsTotal_numRows - 1
 
  If (rsTotal_first > rsTotal_total) Then
    rsTotal_first = rsTotal_total
  End If
  If (rsTotal_last > rsTotal_total) Then
    rsTotal_last = rsTotal_total
  End If

End If
%>

<%
Dim MM_paramName
%>
<%
' *** Move To Record and Go To Record: declare variables

Dim MM_rs
Dim MM_rsCount
Dim MM_size
Dim MM_uniqueCol
Dim MM_offset
Dim MM_atTotal
Dim MM_paramIsDefined

Dim MM_param
Dim MM_index

Set MM_rs    = rsThreads
MM_rsCount  = rsThreads_total
MM_size      = rsThreads_numRows
MM_uniqueCol = ""
MM_paramName = ""
MM_offset = 0
MM_atTotal = false
MM_paramIsDefined = false
If (MM_paramName <> "") Then
  MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
End If
%>
<%
' *** Move To Record: handle 'index' or 'offset' parameter

if (Not MM_paramIsDefined And MM_rsCount <> 0) then

  ' use index parameter if defined, otherwise use offset parameter
  MM_param = Request.QueryString("index")
  If (MM_param = "") Then
    MM_param = Request.QueryString("offset")
  End If
  If (MM_param <> "") Then
    MM_offset = Int(MM_param)
  End If

  ' if we have a record count, check if we are past the end of the recordset
  If (MM_rsCount <> -1) Then
    If (MM_offset >= MM_rsCount Or MM_offset = -1) Then  ' past end or move last
      If ((MM_rsCount Mod MM_size) > 0) Then        ' last page not a full repeat region
        MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
      Else
        MM_offset = MM_rsCount - MM_size
      End If
    End If
  End If

  ' move the cursor to the selected record
  MM_index = 0
  While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend
  If (MM_rs.EOF) Then
    MM_offset = MM_index  ' set MM_offset to the last possible record
  End If

End If
%>
<%
' *** Move To Record: if we dont know the record count, check the display range

If (MM_rsCount = -1) Then

  ' walk to the end of the display range for this page
  MM_index = MM_offset
  While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend

  ' if we walked off the end of the recordset, set MM_rsCount and MM_size
  If (MM_rs.EOF) Then
    MM_rsCount = MM_index
    If (MM_size < 0 Or MM_size > MM_rsCount) Then
      MM_size = MM_rsCount
    End If
  End If

  ' if we walked off the end, set the offset based on page size
  If (MM_rs.EOF And Not MM_paramIsDefined) Then
    If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
      If ((MM_rsCount Mod MM_size) > 0) Then
        MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
      Else
        MM_offset = MM_rsCount - MM_size
      End If
    End If
  End If

  ' reset the cursor to the beginning
  If (MM_rs.CursorType > 0) Then
    MM_rs.MoveFirst
  Else
    MM_rs.Requery
  End If

  ' move the cursor to the selected record
  MM_index = 0
  While (Not MM_rs.EOF And MM_index < MM_offset)
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend
End If
%>
<%
' *** Move To Record: update recordset stats

' set the first and last displayed record
rsThreads_first = MM_offset + 1
rsThreads_last  = MM_offset + MM_size

If (MM_rsCount <> -1) Then
  If (rsThreads_first > MM_rsCount) Then
    rsThreads_first = MM_rsCount
  End If
  If (rsThreads_last > MM_rsCount) Then
    rsThreads_last = MM_rsCount
  End If
End If

' set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
  MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
  End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
  MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "")  Then
  MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
  MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function
%>
<%
' *** Move To Record: set the strings for the first, last, next, and previous links

Dim MM_keepMove
Dim MM_moveParam
Dim MM_moveFirst
Dim MM_moveLast
Dim MM_moveNext
Dim MM_movePrev

Dim MM_urlStr
Dim MM_paramList
Dim MM_paramIndex
Dim MM_nextParam

MM_keepMove = MM_keepBoth
MM_moveParam = "index"

' if the page has a repeated region, remove 'offset' from the maintained parameters
If (MM_size > 1) Then
  MM_moveParam = "offset"
  If (MM_keepMove <> "") Then
    MM_paramList = Split(MM_keepMove, "&")
    MM_keepMove = ""
    For MM_paramIndex = 0 To UBound(MM_paramList)
      MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
      If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
        MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
      End If
    Next
    If (MM_keepMove <> "") Then
      MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
    End If
  End If
End If

' set the strings for the move to links
If (MM_keepMove <> "") Then
  MM_keepMove = Server.HTMLEncode(MM_keepMove) & "&"
End If

MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="

MM_moveFirst = MM_urlStr & "0"
MM_moveLast  = MM_urlStr & "-1"
MM_moveNext  = MM_urlStr & CStr(MM_offset + MM_size)
If (MM_offset - MM_size < 0) Then
  MM_movePrev = MM_urlStr & "0"
Else
  MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
End If
%>
<html>
<head>
<title>Gutternes&trade;</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="shortcut icon" href="icon.ico">
<link href="include/stylesheet.css" rel="stylesheet" type="text/css">
<style>
<!--
body     {
        background-image:             url(images/bg_enlarged.gif);
        background-repeat:             repeat-x;
        }
-->
</style>
</head>

<body bgcolor="#31351B" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<center>
<table width="778" border="0" cellspacing="0" cellpadding="0" bgcolor="F6F6F6">
  <tr>
    <td valign="top" width="26" background="images/lines_leftside.gif"><img src="images/lines_leftcorner_2.gif"></td>
    <td valign="top" width="726" bgcolor="F6F6F6"><table width="726" height="53" border="0" cellpadding="0" cellspacing="0" background="images/background_top.gif">
      <tr>
        <td>&nbsp;</td>
        <td align="right" valign="bottom"><img src="images/nav_on_left.gif" width="2" height="32"><a href="index.asp" class="button"><img src="images/nav_hjem_off.gif" width="62" height="32" border="0"></a><img src="images/nav_on_right.gif" width="2" height="32"><a href="forum.asp" class="button"><img src="images/nav_forum_on.gif" width="62" height="32" border="0"></a><img src="images/nav_on_right.gif" width="2" height="32"><a href="profiler.asp" class="button"><img src="images/nav_profiler_off.gif" width="62" height="32" border="0"></a><img src="images/pixel.gif" width="2" height="53"><a href="galleri.asp" class="button"><img src="images/nav_galleri_off.gif" width="62" height="32" border="0"></a><img src="images/pixel.gif" width="10" height="53"></td>
      </tr>
    </table>
        <table width="726" border="0" cellspacing="0" cellpadding="9"><tr><td>
        <table width="708" height="29" border="0" cellspacing="0" cellpadding="0"><tr><td><iframe src="include/userinfo.asp" frameborder="0" width="708" height="29" scrolling="no" name="login"></iframe></td></tr></table><br>
          <img src="images/pixel.gif" height="5" width="708"><br>
          <table width="708" height="700" border="0" cellpadding="0" cellspacing="0" bgcolor="f6f6f6">
          <tr>
          <td width="183" align="left" valign="top">
          <table width="183" height="269" border="0" cellpadding="3" cellspacing="0">
            <tr>
              <td align="center" valign="top" background="images/background_news.jpg"><table width="90%"  border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td height="10"></td>
                </tr>
                <tr>
                  <td height="20" class="brown12bold">Forum</td>
                </tr>
                <tr>
                  <td height="7"></td>
                </tr>
                <tr>
                  <td height="14" class="black9">Det er ved at tage form men alle elementer virker ikke endnu. <br>
                      <br>
      Jeg tager ogs&aring; meget gerne imod forslag til nye funktionaliteter og design.<br>
      <br>
      De gamle indl&aelig;g er lagt op i et stort rod. Det bliver nemmere at finde rundt i n&aring;r den nye struktur bliver brugt. S&aring; der er bare med at smide noget op. <br>
      <br>
      Skriv til <a href="mailto:fuzzy@fzy.dk">fuzzy@fzy.dk</a></td>
                </tr>
              </table></td>
            </tr>
          </table>
          <img src="images/pixel.gif" height="10" width="183">
          <table width="183" height="269" border="0" cellpadding="0" cellspacing="0">
            <tr>
              <td align="center" valign="top" background="images/background_news.jpg"><table width="90%"  border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td height="10"></td>
                </tr>
                <tr>
                  <td height="20" class="brown12bold">Forum statistik </td>
                </tr>
                <tr>
                  <td height="7"></td>
                </tr>
                <tr>
                  <td height="14" class="black9"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td height="20" class="black9"><span class="black9bold">Flest indl&aelig;g</span></td>
                    </tr>
                    <tr>
                      <td class="black9"><%=(rsFlestIndlaeg.Fields.Item("Nickname").Value)%> med <%=(rsFlestIndlaeg.Fields.Item("Flest").Value)%> </td>
                    </tr>
                    <tr>
                      <td height="20" class="black9"><span class="black9bold">Flest svar</span></td>
                    </tr>
                    <tr>
                      <td class="black9"><%=(rsFlestSvar.Fields.Item("Nickname").Value)%> med <%=(rsFlestSvar.Fields.Item("Flest").Value)%></td>
                    </tr>
                    <tr>
                      <td height="20" class="black9"><span class="black9bold">F&aelig;rrest indl&aelig;g</span></td>
                    </tr>
                    <tr>
                      <td class="black9"><%=(rsFaerrestIndlaeg.Fields.Item("Nickname").Value)%> med <%=(rsFaerrestIndlaeg.Fields.Item("Flest").Value)%></td>
                    </tr>
                    <tr>
                      <td height="20" class="black9"><span class="black9bold">F&aelig;rrest svar</span></td>
                    </tr>
                    <tr>
                      <td class="black9"><%=(rsFaerrestSvar.Fields.Item("Nickname").Value)%> med <%=(rsFaerrestSvar.Fields.Item("Flest").Value)%> </td>
                    </tr>
                    <tr>
                      <td height="20" class="black9"><span class="black9bold">Sidste indl&aelig;g</span></td>
                    </tr>
                    <tr>
                      <td class="black9"><%=(rsSidsteindlaeg.Fields.Item("CreateDate").Value)%>, kl. <%=(rsSidsteindlaeg.Fields.Item("CreateTime").Value)%> </td>
                    </tr>
                    <tr>
                      <td height="20" class="black9"><span class="black9bold">Sidste svar</span></td>
                    </tr>
                    <tr>
                      <td align="left" class="black9"><%=(rsSidsteSvar.Fields.Item("CreateDate").Value)%>, kl. <%=(rsSidsteSvar.Fields.Item("CreateTime").Value)%></td>
                    </tr>
                  </table>
                  </td>
                </tr>
              </table></td>
            </tr>
          </table></td>
          <td width="10">&nbsp;</td>
<td width="515" align="center" valign="top"><table width="515" height="500" border="0" cellpadding="0" cellspacing="0">
  <tr><td align="left" valign="top"><table width="100%" height="30"  border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td width="80"><a href="forum_nytindlaeg.asp"><img src="images/nyt_indlaeg.gif" width="80" height="17" border="0"></a></td>
      <td align="center" class="black9">&nbsp; Viser fra <%=(rsThreads_first)%> til <%=(rsThreads_last)%> af <%=(rsTotal_total)-1%> indlæg</td>
      <td width="50" align="right">    <% If MM_offset <> 0 Then %>
              <a href="<%=MM_movePrev%>"><img src="images/forum_tilbage.gif" border=0></a>
              <% End If ' end MM_offset <> 0 %>
            &nbsp;&nbsp;
              <% If Not MM_atTotal Then %>
              <a href="<%=MM_moveNext%>"><img src="images/forum_frem.gif" border=0></a>
              <% End If ' end Not MM_atTotal %></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td align="right" class="black9">&nbsp;</td>
      <td align="right">&nbsp;</td>
    </tr>
  </table>  <table width="100%"  border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td height="20" class="black9bold">Emne</td>
      <td align="center" class="black9bold">Svar</td>
      <td align="center" class="black9bold">Forfatter</td>
      <td align="center" class="black9bold">Set</td>
      <td align="center" class="black9bold">Sidste post </td>
    </tr>
    <%
While ((Repeat1__numRows <> 0) AND (NOT rsThreads.EOF))
%>
        <%
If blnBGColor = True Then
strBGColor = "#E2E2E2"
Else
strBGColor = "#f6f6f6"
End If
blnBGColor = Not(blnBGColor)
%>
<tr bgcolor="<%=strBGColor%>">
        <form ACTION="<%=MM_editAction%>" METHOD="POST" name="specifik">
          <td height="20">
              <a href="java script:document.forms['specifik'].submit()"><%=(rsThreads.Fields.Item("Headline50").Value)%></a>
              <input name="Views" type="hidden" id="Views" value="<%=(rsThreads.Fields.Item("Views").Value)+1%>">
              <input name="IDthread" type="hidden" id="IDthread" value="<%=(rsThreads.Fields.Item("IDthread").Value)%>">
              <input type="hidden" name="MM_update" value="specifik">
              <input type="hidden" name="MM_recordId" value="<%= rsThreads.Fields.Item("IDthread").Value %>">
        </td></form>
        <td align="center" class="black9"><%=(rsThreads.Fields.Item("Svar").Value)%></td>
        <td align="center"><a href="profil.asp?IDuser=<%=(rsThreads.Fields.Item("IDuser").Value)%>" class="black9"><%=(rsThreads.Fields.Item("Name").Value)%></a></td>
        <td align="center" class="black9"><%=(rsThreads.Fields.Item("Views").Value)%></td>
        <td align="right" class="black9"><%=(rsThreads.Fields.Item("CreateDate").Value)%>, kl. <%=(rsThreads.Fields.Item("CreateTime").Value)%></td>
    </tr>
    <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  rsThreads.MoveNext()
Wend
%>

    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </table>
  </table></td>
</tr>
</table>
      <br>
      <img src="images/pixel.gif" height="10" width="708"></td></tr></table></td>
    <td valign="top" width="26" background="images/lines_rightside.gif"><img src="images/lines_rightcorner_2.gif"></td>
  </tr>
</table>
</center></body></html>
<%
rsThreads.Close()
Set rsThreads = Nothing
%>
<%
rsFlestIndlaeg.Close()
Set rsFlestIndlaeg = Nothing
%>
<%
rsSidsteindlaeg.Close()
Set rsSidsteindlaeg = Nothing
%>
<%
rsSidsteSvar.Close()
Set rsSidsteSvar = Nothing
%>
<%
rsFlestSvar.Close()
Set rsFlestSvar = Nothing
%>
<%
rsFaerrestIndlaeg.Close()
Set rsFaerrestIndlaeg = Nothing
%>
<%
rsFaerrestSvar.Close()
Set rsFaerrestSvar = Nothing
%>
<%
rsTotal.Close()
Set rsTotal = Nothing
%>
<%
rsProfil.Close()
Set rsProfil = Nothing
%>
Avatar billede eagleeye Praktikant
13. marts 2004 - 02:36 #33
det virker ved en submit og alle de forms som indeholder data omkring det hedder det samme:
<form ACTION="/forum.asp" METHOD="POST" name="specifik">

Så alle er som dette:
<a href="java script:document.forms['specifik'].submit()">

det driller nok browseren..
Måske det hjælpr og putte en ID ind:

<form ACTION="<%=MM_editAction%>" METHOD="POST" name="specifik<%=rsThreads.Fields.Item("IDthread").Value%>">

også i linket

<a href="java script:document.forms['specifik<%=rsThreads.Fields.Item("IDthread").Value%>'].submit()"><%=(rsThreads.Fields.Item("Headline50").Value)%></a>
Avatar billede mvk Nybegynder
13. marts 2004 - 10:09 #34
u the top cat!
nej hvor du vild eagle
tak for din hjælp
jeg skylder dig 30 point selvom de ikke gør retfærdighed ift den hjælp du har ydet
TAK :)
Avatar billede eagleeye Praktikant
13. marts 2004 - 11:19 #35
Ok :))
så laver jeg da lige et svar.
Avatar billede mvk Nybegynder
18. marts 2004 - 11:06 #36
thanks :) undskyld at jeg ikke har smidt point din vej før nu

sidste ?:
er det muligt at vise sidste post for den pågældende thread, se evt link: http://www.gutternes.dk/forum.asp
nu viser den hvornår thread'en er oprettet
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
Kurser inden for grundlæggende programmering

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