Avatar billede KLS Novice
07. april 2002 - 17:23 Der er 8 kommentarer og
1 løsning

Kategori indeksering.

Jeg har en database, med lidt over 340 kateorier, og disse hentes også af mit script, men jeg vil havde den til at hente informationerne, så det kommer til at se sådanne ud :

Hovedekategori
sub_kategori1, Sub_kategori2, sub_kategori3 ...

Der efter skal den forsætte til næste kattegori, men den vil ikke som jeg vil, den udskriver det hele  og ellers kommer den med en fejl. Er der en der har en hurtig løsning ?

Koden ser således ud for den der hedder Function.asp :

Function Sub_kat(id)
count = 0
        ban2 = "Select * from kategorier where parent_id="&id&" and parent = False"
        Set Record2 =  Rslinks.Execute(ban2)
        While not record2.eof
        id2 = Record2("id")
        count = count +1
        Response.write "<font face='verdana' size='1' color='gray'><a href='kat.asp?kid="&id2&"&pid="&id&"'>"&record2("kategori")&"</a>&nbsp;,"
        if count = 3 Then
        response.write "..."
        else
        record2.movenext
        end if
        'response.write "</font>"
        wend
end function

Function Links()
    ban1 = "Select * from kategorier where parent=true order by kategori"
    Set Record1 =  Rslinks.Execute(ban1)
    while record1.bof
    id = Record1("id")
    response.write "<tr>"
    response.write"<td width='200 height='19'><font face='verdana' size='2'><a href='/links/kat.asp?kid="&id&"&parent=yes'>"&Record1("kategori")&"</a></font><br>"
    sub_kat(id)
    response.write"</td>"
    response.write"<td width='15' height='19'>&nbsp;</td>"
    record1.movenext
    if record1.eof Then
    response.write"<td width='200' height='19'>&nbsp;</td>"
    response.write"</tr>"
    else
    response.write"<td width='200 height='19'><font face='verdana' size='2'><a href='/links/kat.asp?kid="&id&"&parent=yes'>"&Record1("kategori")&"</a></font><br>"
    sub_kat(id)
    response.write"</td></tr>"
    end if
    record1.movenext
    wend

end function


for selve siden ser den sådanne ud :

<!-- #INCLUDE VIRTUAL="functions.asp"  -->
<%links()%>

Er der en måde så hove kategorien, kan blive listet en gang, og de resterende 3 under kategorier neden under, men Maks 3 stk.
Avatar billede apollo Nybegynder
07. april 2002 - 18:36 #1
har du et link til scriptet?? så jeg kan se?
Avatar billede KLS Novice
07. april 2002 - 19:13 #2
80.62.20.246/links1

Og det er helt i kluder, jeg sender lige den nye Source kode med :

function.asp :
<%
Response.Buffer = True
Set Rslinks = Server.CreateObject("ADODB.Connection")
Rslinks.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\inetpub\wwwroot\links.mdb" 'D:\home\danskdriverdbdk\db\links.mdb"
Server.ScriptTimeout = 600
Function Sub_kat(id)
        ban2 = "Select * from kategorier where parent_id="&id&" and parent = False"
        Set Record2 =  Rslinks.Execute(ban2)
        While not record2.eof
        id2 = Record2("id")
        Response.write "<font face='verdana' size='1' color='gray'><a href='kat.asp?kid="&id2&"&pid="&id&"'>"&record2("kategori")&"</a>&nbsp;,"
        if count = 3 Then
        response.write "..."
        else
        record2.movenext
        end if
        'response.write "</font>"
        wend
end function

Function Links()
    ban1 = "Select * from kategorier where parent=true order by kategori"
    Set Record1 =  Rslinks.Execute(ban1)
    while NOT record1.eof
    id = Record1("id")
    response.write "<tr>"
    response.write"<td width='200 height='19'><font face='verdana' size='2'><a href='/links/kat.asp?kid="&id&"&parent=yes'>"&Record1("kategori")&"</a></font><br>"
    sub_kat(id)
    response.write"</td>"
    response.write"<td width='15' height='19'>&nbsp;</td>"
    record1.movenext
    if record1.eof Then
    response.write"<td width='200' height='19'>&nbsp;</td>"
    response.write"</tr>"
    else
    response.write"<td width='200 height='19'><font face='verdana' size='2'><a href='/links/kat.asp?kid="&id&"&parent=yes'>"&Record1("kategori")&"</a></font><br>"
    sub_kat(id)
    response.write"</td></tr>"
    end if
    record1.movenext
    wend

end function
    response.flush
%>

default.asp :

<table border="1" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2" height="4">
      <tr>
        <td width="100%" height="11" bgcolor="#336699">
        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
          <tr>
            <td width="100%"><b><font face="Verdana" size="2" color="#FFFFFF">
            LINKS : Handel &amp; Shopping &gt; </font>
            <font face="verdana" color="#FFFFFF" size="2">Blomster</font></b></td>
          </tr>
        </table>
        </td>
      </tr>
    </table>
    </td>
  </tr>
  <tr>
    <td width="100%" height="7" colspan="3"><font size="1">&nbsp;</font></td>
  </tr>
<%links()%>
  <tr>
    <td width="100%" height="19" colspan="3" valign="bottom">
    <p align="center"><font size="1" face="Verdana">Alle Retigheder til at rette
    i indsendte links forbeholdes</font></td>
  </tr>
</table>

Banner Koden er pillet ud plus lidt andet, men det skulle ikke betyde noget.
Avatar billede KLS Novice
07. april 2002 - 19:13 #3
Avatar billede apollo Nybegynder
07. april 2002 - 20:21 #4
1. fejl i linje 40:??
Avatar billede KLS Novice
07. april 2002 - 21:48 #5
Ja ok, den er ny flyttet, men det er alle de kategorier der står med småt, som der kun skal vises 3 af, og de bliver gentaget, men hvorfor, kan jeg ikke finde ud af.
Avatar billede KLS Novice
07. april 2002 - 23:24 #6
Der er opdateret kode, men mere om det i morgen en gang, men kom evt, med jeres forslag stadig, kan være det er bedre end det lort jeg roder med ige nu.
Avatar billede KLS Novice
09. april 2002 - 10:47 #7
Den nye kode jeg snakkede om kommer her, det der er problemet er at den laver timeout, eller ikke kommer frem, og det sker kun når intcount er sat til, hvorfor sker det, og er der en anden måde jeg kan tvinge den til kun at lave 3 underkategorier ?

<<<<<< function.asp >>>>>>

Function kat(id)
intcount=0
        ban2 = "Select * from kategorier where parent_id="&id
        Set Record2 =  Rslinks.Execute(ban2)
        %>
        <font face='verdana' size='1' color='gray'>
        <%
        While not record2.eof
        id2 = Record2("id")%>
        <a href='/kat.asp?kid=<%=id2%>&pid=<%=id%>'><%=record2("kategori")%></a>,&nbsp;
<%        intcount = intcount+1
        If intcount<3 Then
        record2.movenext
        else
        end if
        wend %>
        </font><%
end function

Function Links()
    ban1 = "Select * from kategorier where parent=true order by kategori"
    Set Record1 =  Rslinks.Execute(ban1)
    while NOT record1.eof
    id = Record1("id")
    strkat = record1("kategori")
'    strkat = replace(strkat, " ","&nbsp;")
    response.write "<tr>"%>
    <td width='260' valign='toP'><font face='verdana' size='2'><a href='/links/kat.asp?kid=<%=id%>"&parent=yes'><%=Strkat%></a></font><br>
<%    kat(id)%>
    </td>
    <td width='10'>&nbsp;</td><%
    record1.movenext
    if record1.eof Then %>
    <td width='260'>&nbsp;</td>
    </tr>
    <%
    else
    id = Record1("id")
    strkat = record1("kategori")%>
    <td width='250' height='19' valign='toP'><font face='verdana' size='2'><a href='/links/kat.asp?kid=<%=id%>&parent=yes'><%=Strkat%></a></font><br>
<%    kat(id)
    response.write"</td>"'</tr>"
    record1.movenext
    end if
    wend
    response.flush
end function

%>
Avatar billede KLS Novice
09. april 2002 - 13:12 #8
Jeg løste problemet på en helt anden måde, så nu bliver dette spørgsmålæ lukket.
Avatar billede KLS Novice
09. april 2002 - 13:14 #9
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