Avatar billede justdoit Nybegynder
28. august 2002 - 21:02 Der er 4 kommentarer og
1 løsning

Count funkrion på en søgning?

Jeg har en søge funktion hvor jeg gerne vil samle de data der ligger under samme kategori, og i stedet tælle hvor mange der er sådan:

fx. computer:
    computer:

skulle gerne se sådan ud:

    computer (2)

Hvordan gør jeg det?? Jeg ved hvordan jeg bruger COUNT, men kan ikke finde ud af at sætte det ind!!

Her er koderne:

strSQL = "SELECT Catalogs.catalogName as UdskrivNavn , Catalogs.CatalogName, Products.ProductID, Products.ProductName, Products.ProductDesc, Products.CatalogID FROM Products, catalogs where Catalogs.catalogNameID = Products.CatalogID"
    strSQL = strSQL & " AND (products.productName LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (products.productDesc LIKE '%" & strKeyword & "%')"
    RS.open strSQL, con


    If Not (rs.BOF Or rs.EOF) Then
        Response.Write "<p><div align=""center"">Der blev søgt på ordet<b> " & strKeyword & " </b> som gav følgende resultat:</div></p>"
        Response.Write "<table border=0 width=430>"
        Response.Write "<tr><td><b>Kategori</b></td></tr>"
            Do While Not rs.EOF
            Response.Write "<tr><td>" & rs("UdskrivNavn") & "</td>"
            Response.Write "<td>" & rs("CatalogID") & "</td></tr>"
Avatar billede davidfossil Nybegynder
29. august 2002 - 07:23 #1
jeg håber da koden er længere ... der mangler vist noget ... ;)

og hvor er det du vil have antallet ind?
Avatar billede justdoit Nybegynder
29. august 2002 - 10:19 #2
Hej. Når jeg skriver ud lige nu ser det fx. sådan ud:

computer (her er Products.CatalogID = 1)
software (her er Products.CatalogID = 2)
cykeler  (her er Products.CatalogID = 3)
computer (her er Products.CatalogID = 1)

Og det vil jeg gerne have samlet til:
computer(2)
software(1)
cykeler(1) 



Her er hele koden:

<%
strKeyword = Trim(Request.Form("soeg"))


If Len(strKeyword) = 0 Then

  Response.Clear
  Response.Redirect("default.asp")

Else

  strKeyword = Replace(strKeyword,"'","''")

End If

ordArray = Split(strKeyword, " ")
strSQLWhere = ""
strSQL = "SELECT Catalogs.catalogName as UdskrivNavn, Products.ProductID, products.productDesc, Products.ProductName, Products.CatalogID FROM Products, catalogs where Catalogs.catalogNameID = Products.CatalogID"
    strSQL = strSQL & " AND (products.productName LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (products.productDesc LIKE '%" & strKeyword & "%')"
   
for i = lbound(ordArray) to ubound(ordArray)
  if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR "
  strSQLWhere = strSQLWhere & "(Products.ProductName LIKE '%" & ordArray(i) & "%')"
next
for i = lbound(ordArray) to ubound(ordArray)
  if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR "
  strSQLWhere = strSQLWhere & "(products.productDesc LIKE '%" & ordArray(i) & "%')"
next

Set con = server.CreateObject("ADODB.Connection")
      Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../e-handel/db/database.mdb")

Set rs = Con.Execute(strSQL)
   
    If Not (rs.BOF Or rs.EOF) Then
        Response.Write "<p><div align=""center"">Der blev søgt på ordet<b> " & strKeyword & " </b> som gav følgende resultat:</div></p>"
        Response.Write "<table border=0 width=430>"
        Response.Write "<tr><td><b>Kategori</b></td></tr>"
            i = 1
            Do While Not rs.EOF
            If i mod 2 = 0 then
            Response.Write "<tr bgcolor='#EEEEEE' class='tekst'><td><a href='#'>" & rs("UdskrivNavn") & "</a>&nbsp;(0)</td></tr>"
            ELSE
            Response.Write "<tr class='tekst'><td><a href='#'>" & rs("UdskrivNavn") & "</a>&nbsp;(0)</td></tr>"
            End if
            i = i + 1
            rs.MoveNext
            Loop
        Response.Write "</table>"
    Else
        Response.Write "Der er ikke fundet noget på denne søgning."
    End If
Con.Close
Set Con = Nothing
%>
Avatar billede 3z Nybegynder
29. august 2002 - 16:13 #3
Her er koden til din løsning - så skriver den navnet efterfulgt af antallet i parantesen:

(Har kun taget den sidste del af din kode)

If Not (rs.BOF Or rs.EOF) Then
        Response.Write "<p><div align=""center"">Der blev søgt på ordet<b> " & strKeyword & " </b> som gav følgende resultat:</div></p>"
        Response.Write "<table border=0 width=430>"
        Response.Write "<tr><td><b>Kategori</b></td></tr>"
            i = 0
            Do While Not rs.EOF
            i = i + 1
            rs.MoveNext
            Loop
            Response.Write "<tr class='tekst'><td><a href='#'>" & rs("UdskrivNavn") & "</a>&nbsp;(" & i & ")</td></tr>"

        Response.Write "</table>"
    Else
        Response.Write "Der er ikke fundet noget på denne søgning."
    End If
Avatar billede justdoit Nybegynder
29. august 2002 - 16:57 #4
Hej, tak for det, men jeg får denne fejl:

Fejltype:
(0x80020009)
Undtagelse opstod.
/e-handel/soeg_db.asp, line 102

line 102 er linien med: Response.Write "<tr class='tekst'><td><a href='#'>" & rs("UdskrivNavn") & "</a>&nbsp;(" & i & ")</td></tr>"
Avatar billede justdoit Nybegynder
23. oktober 2002 - 11:23 #5
lukket
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