12. marts 2003 - 01:17
Der er
43 kommentarer og 1 løsning
Problem med at tælle indhold
Jeg har dette script (to jeg prøver at sætte sammen) som skal tælle hvor mange artikler der ligger i bestemte områder (kategorier) - problemet er at der vises at der er (0) i alle kategorier - selvom der ligger flere. Jeg tillader mig at indsætte filen her: <!--#include file="config.asp"--> <% Function SQLVal(pvValue) Dim sTemp Select Case VarType(pvValue) Case 0, 1: SQLVal = "NULL" Case 2, 3, 4, 5, 6: SQLVal = "" & pvValue Case 8: 'String sTemp = Trim(pvValue) On Error Resume Next SQLVal = "" & CDbl(sTemp) If Err.Number <> 0 Then Err.Clear SQLVal = "NULL" End If Case 11: SQLVal = "" & Cint(pvValue) Case Else SQLVal = "NULL" End Select End Function gsConnect = "Data Source=d:\home\minwebside\db\tekster.mdb;Provider=Microsoft.Jet.OLEDB.4.0;" Set GobjConnect = server.createobject("ADODB.Connection") GobjConnect.open gsConnect cSQL = "Select ID, skribent, katid FROM artikler ORDER BY ID " Set Crs = GobjConnect.Execute(cSQL) Function CountAds(katid) caSQL = "" caSQL = caSQL & "SELECT COUNT(*) as Total FROM artikler WHERE katid = " & SQLVal(katid) Set rs = GobjConnect.Execute(caSQL) CountAds = rs.Fields("Total") rs.Close Set rs = Nothing End Function Function Showlinks Set objRec = Server.CreateObject("ADODB.Recordset") SQL = "SELECT * FROM kategorier Order by navn asc" objRec.Open SQL, objCon %> <div align="center"> <center> <table border="0" width="487" cellspacing="5" cellpadding="0"> <tr> <% Do While NOT objRec.EOF %> <%if not objRec.EOF then%> <TD ALIGN=LEFT WIDTH="165" bgcolor="#FFFFFF"> <b><a class=5 href="/artikler/artikler.asp?kat=<%=objRec("katid")%>"> <p align="left"><img border="0" src="functi8.gif"> <%=objRec("navn")%></a> </b> <% Response.Write(" <SMALL>(" & CountAds(Crs.Fields("ID")) & ")</SMALL>") %> </TD> <%objRec.movenext end if %> <%if not objRec.EOF then%> <TD ALIGN=LEFT WIDTH="165" bgcolor="#FFFFFF"> <b><a class=5 href="/artikler/artikler.asp?kat=<%=objRec("katid")%>"> <p align="left"><img border="0" src="functi8.gif"> <%=objRec("navn")%></a> </b> <% Response.Write(" <SMALL>(" & CountAds(Crs.Fields("ID")) & ")</SMALL>") %> </TD> <%objRec.movenext end if %> <%if not objRec.EOF then%> <TD ALIGN=LEFT WIDTH="152" bgcolor="#FFFFFF"> <b><a class=5 href="/artikler/artikler.asp?kat=<%=objRec("katid")%>"> <p align="left"><img border="0" src="functi8.gif"> <%=objRec("navn")%></a></b> <% Response.Write(" <SMALL>(" & CountAds(Crs.Fields("ID")) & ")</SMALL>") %> </TD> <%objRec.movenext end if %> </tr> <% loop %> </table> </center> </div> <% end function %>
Annonceindlæg fra HP
12. marts 2003 - 03:26
#1
Har du prøvet at response.write caSQL efter følgende linje: caSQL = caSQL & "SELECT COUNT(*) as Total FROM artikler WHERE katid = " & SQLVal(katid) Og efterfølgende prøve det mod din database? (Det kunne jo være at SQLVal() returnerede noget uventet...)
12. marts 2003 - 08:47
#2
Når jeg gør dette får jeg dette svar: SELECT COUNT(*) as Total FROM artikler WHERE katid = 47 (0) Og det skrives der ved siden af alle kategorier. Så den kalder altså alle kategorier for katid=47 - dog er selve navnet på kategorierne fint nok. Hvad kan jeg gøre nu? Findes der en anden måde at tælle posterne på?
12. marts 2003 - 09:02
#3
SELECT COUNT(katid) as Total FROM artikler WHERE katid = 47 (0) response.write objRS("Total")
12. marts 2003 - 09:09
#4
Hej Horsmark Denne linie: SELECT COUNT(*) as Total FROM artikler WHERE katid = 47 (0) var svaret når jeg lavede en response.write Jeg forstår ikke dit forslag. Skal jeg indsætte det du skriver?
12. marts 2003 - 09:11
#5
er du sikker på at katid er gemt som tal i db´en?
12. marts 2003 - 09:11
#6
Hvilket resultat giver dette: SELECT COUNT(*) as Total FROM artikler
12. marts 2003 - 09:12
#7
Ja der er det. Og lige nu ligger der to artikler under katid=7 og alligevel vises der kun (0)
12. marts 2003 - 09:13
#8
Hvilket resultat giver dette: SELECT COUNT(*) as Total FROM artikler
12. marts 2003 - 09:14
#9
Så får jeg dette: Microsoft VBScript compilation error '800a0409' Unterminated string constant /artikler/functions.asp, line 39 caSQL = caSQL & "SELECT COUNT(*) as Total FROM artikler -------------------------------------------------------^
12. marts 2003 - 09:17
#10
du mangler et " i enden af linien caSQL = caSQL & "SELECT COUNT(*) as Total FROM artikler"
12. marts 2003 - 09:20
#11
Så får jeg det svar at der ligger (3) artikler i alle kategorierne. (Der ligger kun 2 artikler i 1 kategori - alle andre kategorier er tomme) - Mærkligt ikke?
12. marts 2003 - 09:21
#12
...men der der ligger ialt 3 artikler i databasen. Måske er det det der hentes/tælles?
12. marts 2003 - 09:28
#13
har du mulighed for at kigge ned i databasen rent fysisk og se hvad rækkerne indeholder
12. marts 2003 - 09:28
#14
Rækkerne indeholder: ID Skribent Dato KatID Tekst
12. marts 2003 - 09:29
#15
Hvis du har opsat db´ens katid til at den gerne må indeholde null values så kan det være der ligger rækker uden katid...
12. marts 2003 - 09:29
#16
Og jeg vil som sagt bare have den til at vise hvormange gange samme KatID gentages - så man kan se hvor mange artikler der ligger i en given kategori
12. marts 2003 - 09:30
#17
SELECT COUNT(*) as Total FROM artikler WHERE katid = 1 skulle gerne give 2
12. marts 2003 - 09:30
#18
KatID er Datatype number
12. marts 2003 - 09:33
#19
SELECT COUNT(*) as Total FROM artikler WHERE katid = 1 Giver dette 2?
12. marts 2003 - 09:36
#20
WHERE katid = 1 (så skrives der antallet af KatID 1 ud for alle kategorier) WHERE katid = 7 (så skrives antallet af KatID 7 ud for alle kategorier antallet af KatID 21 (så skrives antallet af KatID 21 ud for alle kategorier
12. marts 2003 - 09:37
#21
Er problemet så ikke løst?
12. marts 2003 - 09:40
#22
...Nej - fordi jeg skal have talt og vis hvormange artikler der ligger i databasen..
Du kan evt. se min side her:
www.mindbodysoul.dk/artikler Og der ligger 2 artikler i kategorien: Clairvoyance KatID7
Og 1 artikel i kategorien: Akupunktur KatID 1
Alle andre kategorier er tomme?
12. marts 2003 - 09:43
#24
Nej det er det der vises i (0), men det er forkert
12. marts 2003 - 09:45
#25
- sorry Nej det er det der vises i (), men det er forkert.
12. marts 2003 - 09:48
#26
mærkligt at der vises at der er (1) artikel selvom der ingen er... hmm fejlen er andetsteds...
12. marts 2003 - 09:50
#27
Jo, men skal denne ikke ændres? Denne sidder inde nu: caSQL = caSQL & "SELECT COUNT(*) as Total FROM artikler WHERE katid = 1" Den skal vel ændres tilbage til: caSQL = caSQL & "SELECT COUNT(*) as Total FROM artikler WHERE katid = " & SQLVal(katid)
12. marts 2003 - 09:52
#28
jepper prøv det og så kan jeg lige se output igen
12. marts 2003 - 09:52
#29
..Dette har jeg gjort nu og så vises der (0) ud for alle kategorier. - Jeg er ved at få grå hår...
12. marts 2003 - 10:02
#30
I denne linie: Response.Write(" <SMALL>(" & CountAds(Crs.Fields("ID")) & ")</SMALL>") Er det så ikke katID, du skal spørge på?
12. marts 2003 - 10:04
#31
Tomh - det har du ret i, men skrives der bare (1) ud for alle kategorier - selvom de er tomme.
12. marts 2003 - 10:04
#32
Altså: Response.Write(" <SMALL>(" & CountAds(Crs.Fields("katid")) & ")</SMALL>")
12. marts 2003 - 10:05
#33
Men løkken løber jo gennem et andet recordset? <%if not objRec.EOF then%> ...
12. marts 2003 - 10:06
#34
Skal jeg så fjerne: <%if not objRec.EOF then%> helt væk?
12. marts 2003 - 10:06
#35
Der bliver aldrig lavet .movenext op Crs-recordsettet? Undskyld at disse kommentarer ikke blev samlet til 1!
12. marts 2003 - 10:07
#36
Næ prøv at ændre: Response.Write(" <SMALL>(" & CountAds(Crs.Fields("katid")) & ")</SMALL>") til Response.Write(" <SMALL>(" & CountAds(objRac.Fields("KatID")) & ")</SMALL>")
12. marts 2003 - 10:08
#37
Så hvad kan jeg gøre? (Jeg er absolut nybegynder)
12. marts 2003 - 10:09
#38
Sorry: objRac i ovenstående er selvfølgig objRec
12. marts 2003 - 10:09
#39
kpl>> prøv dette Function CountAds(katid) caSQL = "SELECT COUNT(*) as Total FROM artikler WHERE katid = " & SQLVal(katid) Set rs = GobjConnect.Execute(caSQL) CountAds = rs("Total") rs.Close Set rs = Nothing End Function
12. marts 2003 - 10:11
#40
Tomh - Det virkede! Så kører det - Tusinde tak - Horsmark - Mange tak for dit enorme enagagement!
12. marts 2003 - 10:13
#41
Jeg er glad for at kunne hjælpe.
12. marts 2003 - 10:13
#42
anytime... learning by learning... så om sige ;-)
12. marts 2003 - 10:17
#43
tomh hvad gør jeg med points - vil du lægge et svar?
12. marts 2003 - 13:38
#44
Oh - der er jo lige det med points, ja. Hermed er svaret på ovenstående :-)
Kurser inden for grundlæggende programmering