Avatar billede Slettet bruger
09. oktober 2007 - 10:59 Der er 24 kommentarer og
1 løsning

Count fra database

Jeg har en hjemmeside med filmklip hvor man kan smide en kommentar til hvert klip. Jeg vil nu gerne have lavet så man
kan se hvor mange kommentar der er lavet i databasen til hvert filmklip der bliver vist.

De bliver hentet i databasen sådan her:
strSQL = "SELECT * FROM filmklip WHERE filmid = " & request.querystring("id") & ""

Dvs. den udskriver alle kommentar fra databasen hvor ID = filmid
(Kommentar er i en tabel for sig selv og kigger i den anden database)..

Håber der er nogen der kan hjælpe mig da jeg er lidt lost på hvordan jeg selv laver det.. :-)
Avatar billede fennec Nybegynder
09. oktober 2007 - 11:06 #1
Enten kan du åbne som et recordset også bruge recordcount eller du kan bruge count() metoden:

set rs = Server.CreateObject("ADODB.recordset")
rs.open "SELECT * FROM filmklip WHERE filmid = " & request.querystring("id") & "", conn
response.write rs.recordcount

Eller:
set rs = conn.execute("SELECT count(*) as antal FROM filmklip WHERE filmid = " & request.querystring("id"))
response.write rs("antal")
Avatar billede Slettet bruger
09. oktober 2007 - 11:52 #2
Den kommer med denne fejl:

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/indextest.asp, line 412

(Jeg brugte recordcount)
Avatar billede fennec Nybegynder
09. oktober 2007 - 11:57 #3
Hvilken database bruger du?
Avatar billede fennec Nybegynder
09. oktober 2007 - 12:01 #4
Det kan forresten være nødvendig at angive cursor og locktype på recordsettet:

set rs = Server.CreateObject("ADODB.recordset")
rs.open "SELECT * FROM filmklip WHERE filmid = " & request.querystring("id") & "", conn, 3, 3
response.write rs.recordcount
Avatar billede Slettet bruger
09. oktober 2007 - 12:01 #5
det er en access database..
Avatar billede Slettet bruger
09. oktober 2007 - 12:03 #6
Det hjalp ikke - men jeg har en anden database som vidst stadig er åben - skal den lukkes først ?
Avatar billede fennec Nybegynder
09. oktober 2007 - 12:18 #7
Burde ikke være nødvendig. Hvordan bruger du koden? For den fejl ligner noget man får når man sammenligner data af forskellig data type.
Avatar billede Slettet bruger
09. oktober 2007 - 12:33 #8
Det er her på forsiden: http://www.hyggestedet.dk/

Her vil jeg have det til at stå hvor mange kommentar der er samme sted som der står dato og kategori...
Avatar billede fennec Nybegynder
09. oktober 2007 - 12:51 #9
Har du prøvet count() metoden??
Avatar billede Slettet bruger
09. oktober 2007 - 13:19 #10
Hvis jeg prøver count metoden kommer den med følgende:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/indextest.asp, line 411
Avatar billede fennec Nybegynder
09. oktober 2007 - 13:28 #11
Så er det fordi din kode er forkert. Kan du ikke lige klip/klistre lidt af den ind, så jeg kan se hvordan du har skrevet det...
Avatar billede Slettet bruger
09. oktober 2007 - 13:37 #12
Selvfølgelig. :-)

Her er koden hvor jeg connecter til database til udtræk af mine filmklip:

intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM movies WHERE news < 3 ORDER BY tid DESC, id DESC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/moviedb.mdb")
rs.Open strSQL, strDSN, 1

If Not (rs.BOF Or rs.EOF) Then

    rs.PageSize = 12
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
%>
                       


Her er koden der udskrifter filmklip og hvor jeg har brugt din kode:



<table border="0" width="100%" id="table3095" cellspacing="1">

<%=rs("overskrift")%>
Kategori: <%=rs("moviekategori")%>
- Tilføjet d. <%=rs("tid")%></u><br>
- Antal kommentar: 

<%
set rs = conn.execute("SELECT count(*) as antal FROM filmklip WHERE filmid = " & request.querystring("id"))
response.write rs("antal")
%>

<img border="0" src="http://www.hyggestedet.dk/mimages/<%=rs("pic")%>" width="120" height="82"></font></font></td>
<%           
            else
%>
<img border="1" src="http://www.hyggestedet.dk/mimages/filmklipimage.jpg" width="120" height="82"></font></td>
<%
            end if
%>           
                                                           
<%=rs("beskrivelse")%>
<td width="89%" valign="top" colspan="2">
<hr></td>
</table></td>
<%
    end if
    %>
Avatar billede fennec Nybegynder
09. oktober 2007 - 13:45 #13
Du overskriver det første recordset når du laver den anden select. Omdøb den til rs1 i stedet:

set rs1 = conn.execute("SELECT count(*) as antal FROM filmklip WHERE filmid = " & request.querystring("id"))
response.write rs1("antal")
Avatar billede Slettet bruger
09. oktober 2007 - 14:08 #14
Nu skriver den følgende:
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/indextest.asp, line 411


Men skal jeg ikke også skrive filmid = id
i stedet for request..  Den er jo i databasen så den skal vel bare sammenligne de to eller er det nødvendigt at gøre det på den måde?
Avatar billede fennec Nybegynder
09. oktober 2007 - 14:16 #15
Hvad står der i linje 411
Avatar billede fennec Nybegynder
09. oktober 2007 - 14:18 #16
ahh du har jo heller ikke noget connection:

Set rs1 = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT count(*) as antal FROM filmklip WHERE filmid = " & request.querystring("id")
rs.Open strSQL, strDSN, 1
response.write rs1("antal")
Avatar billede Slettet bruger
09. oktober 2007 - 14:18 #17
haha.. dugh....  :-)

Vi prøver lige igen..
Avatar billede Slettet bruger
09. oktober 2007 - 14:25 #18
Nu kommer den med følgende...
(Har ændret rs til rs1 i 2 sidste linje)

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

ODBC driver does not support the requested properties.

/indextest.asp, line 413
Avatar billede Slettet bruger
09. oktober 2007 - 14:26 #19
Linje 413 er den anden sidste..
Avatar billede fennec Nybegynder
09. oktober 2007 - 14:43 #20
Jeg havde lige en fejl også...

Set rs1 = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT count(*) as antal FROM filmklip WHERE filmid = " & request.querystring("id")
rs1.Open strSQL, strDSN, 1
response.write rs1("antal")
Avatar billede Slettet bruger
09. oktober 2007 - 14:49 #21
Sorry men den giver stadig dette her:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

ODBC driver does not support the requested properties.

/indextest.asp, line 413


Men jeg skal vel heller ikke bruge "request.querystring" når jeg ikke skal hente noget fra URL? Men bare kigge i databasen ?
Avatar billede fennec Nybegynder
09. oktober 2007 - 14:51 #22
Ja selvfølgelig...

Set rs1 = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT count(*) as antal FROM filmklip WHERE filmid = " & rs("id")
rs1.Open strSQL, strDSN, 1
response.write rs1("antal")
Avatar billede Slettet bruger
09. oktober 2007 - 15:10 #23
Yahuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu... :-)

SUPER COOL! Så virker det.... Tak for tålmodigheden! Mange tak..
Avatar billede fennec Nybegynder
09. oktober 2007 - 15:15 #24
np
.o) <-- One Eyed Jack
Avatar billede Slettet bruger
09. oktober 2007 - 15:21 #25
Du kan jo lige checke på forsiden af www.hyggestedet.dk ;-)
Det kører nu..
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