Avatar billede ravnkilde Nybegynder
10. august 2004 - 13:54 Der er 4 kommentarer og
1 løsning

Udtræk fra DB fordelt over to kolonner pr. side

Hej!

Jeg har nedenstående script, der trækker data ud fra en db til en shop-side, men alle data for den pågældende kategori vises i én kolonne pr. side. Jeg vil gerne have indholdet fordelt over to kolonner pr. side. Jeg har "mistet overblikket" og har brug for lidt hjælp med at rette koden til.

Tak!

--- start på kode ---

<!-- #include file="order_configuration.asp" -->
<!-- #include file="order_message.asp" -->
<%
    r = Request.QueryString("r")
    If Len(r)<1 Then r= -1
    s = Request.QueryString("s")
    If Len(s)<1 Then s = 0
    s = s*10

    Dim Kategorier(100,4)

    Set db = Server.CreateObject("ADODB.Connection")
    Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
    db.Open Connect

    SQL = "SELECT KategoriNavn, KategoriParent, KategoriID, KategoriRank FROM Kategorier ORDER BY KategoriRank"
    Set rs = db.Execute(SQL)
    While Not rs.EOF
    If i<100 Then
    Kategorier(i,0) = rs("KategoriNavn")
    Kategorier(i,1) = rs("KategoriParent")
    Kategorier(i,2) = rs("KategoriID")
    Kategorier(i,3) = rs("KategoriRank")
    End If
    i = i+1
    rs.MoveNext
    Wend
    arrayLength = i-1

    Function show_search(parent1, CategoryLayer)
    If parent1 <> vbNullString Then
    For t = 0 To arrayLength
    If Kategorier(t,1) = parent1 Then

    EmptySpace = ""
    For x = 0 To CategoryLayer
    EmptySpace = EmptySpace & ""
    Next

    ' -> VED AT ÆNDRE 'EmptySpace & ""' TIL 'EmptySpace & "&nbsp;"' LAVES EN INDRYKNING FOR HVER KATEGORI.

    If CategoryLayer = 0 Then
    AddOn = ""
    AddOn1 = ""
    End If
    Response.Write(EmptySpace & "<a href='order_product.asp?r="&Kategorier(t,2)&"'>" & AddOn & Kategorier(t,0) & AddOn1 & "</a><br clear='all'>" & vbCrLf)
    parent2 = Kategorier(t,2)
    CategoryLayer1 = CategoryLayer +1
    show_search parent2, CategoryLayer1
    End If
    Next
    End If
    End Function

    SQLAddOn = ""
    Function show_c(parent3)
    For t = 0 To arrayLength
    If cint(Kategorier(t,1)) = cint(parent3) Then
    parent4 = Kategorier(t,2)
    SQLAddOn = SQLAddOn & " Or KategoriNavn = " & parent4
    show_c parent4
    End If
    Next
    End Function

    show_c r
%>
<%
Response.AddHeader "cache-control","private"
Response.AddHeader "pragma","no-cache"
Response.CacheControl = "no-cache"
Response.CacheControl = "private"
Response.Expires = -1
Response.ExpiresAbsolute = Now() -1
%>
<html>
<head>
    <title>shop</title>

    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="expires" content="-1">
    <meta http-equiv="pragma" content="no-cache">
   
   
   

    <link rel="stylesheet" type="text/css" href="e-shop.css">
</head>

<body onLoad="if ('Navigator' == navigator.appName) document.forms[0].reset();">

<!-- TITEL START -->

<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td align="left" valign="top" width="100%">

<h1>s h o p ' e n</h1>

</td>
</tr>
</table>

<!-- TITEL SLUT -->

<!-- TOM TABEL FOR AT GIVE MERE PLADS -->

<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td align="center" valign="top" width="100%">
<p>&nbsp;</p>
</td>
</tr>
</table>

<!-- INDHOLD START -->

<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td align="left" valign="top" width="140">

<h3>Produkter</h3>

<p><span class="small"><%show_search 0,0%></span></p>

<h3>Ordre Status</h3>

<p><span class="small"><%If (Session("Items"))>-1 Then%><a href="order_review.asp"><%=OrderStatus_ProductsAdded%>&nbsp;<%=Session("Items")+1%></a><%Else%><%=OrderStatus_NoProductsAdded%><%End If%>
<br clear="all">(Klik for beregning)</span></p>

<p><span class="small">(Priser i Danske Kroner
<br clear="all">ekskl. Fragt & Moms)</span></p>
</td>

<td align="left" valign="top" width="460">
<%
    If (cint(r)>-1) Then
    SQL = "SELECT ProduktBillede, ProduktNavn, ProduktNummer, ProduktBeskrivelse, ProduktPris, ProduktID FROM Produkter WHERE KategoriID = " & r & SQLAddOn
    Set rs = db.Execute(SQL)
    While Not rs.EOF
    count = count +1
    If count>s And count<=(s+10) Then
    ID = rs("ProduktID")
%>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="440">
<tr>
<td align="left" valign="top" width="100%">
<%If Len(rs("ProduktBillede"))>2 Then%><img alt="Produkt" border="0" height="155" src="<%=rs("ProduktBillede")%>" width="110"><%Else%><img alt="Product" border="0" height="155" src="images/no_image.gif" width="110"><%End If%>

<h3><%=rs("ProduktNavn")%> (<%=ListNumber%><%=rs("ProduktNummer")%>)</h3>

<p><%=formatMessage(rs("ProduktBeskrivelse"))%></p>

<p><%=ListPrice%>: <span class="bold"><%=ListCurrency%> <%=formatNumber(rs("ProduktPris"),2,,-2)%></span></p>

<form action="add_product.asp?a_ID=<%=ID%>" method="post" name="form<%=rs("ProduktID")%>" target="addFrame">

<!-- K N A P  E L L E R  L I N K -->

<!--
AT TILFØJE ET PRODUKT VED AT BRUGE EN KNAP, BRUG DENNE KODE (SE NEDENFOR):
<input class="button" href="java script:document.form<%=ID%>.submit();" onMouseOut="this.className='button'" onMouseOver="this.className='buttonHover'" type="submit" value="<%=CategoryStatus_ProductsAdded%>">

AT TILFØJE ET PRODUKT VED AT BRUGE ET LINK, BRUG DENNE KODE:
<a href="java script:document.form<%=ID%>.submit();"><%=CategoryStatus_ProductsAdded%></a>
-->

<p><input class="button" href="java script:document.form<%=ID%>.submit();" onMouseOut="this.className='button'" onMouseOver="this.className='buttonHover'" type="submit" value="<%=CategoryStatus_ProductsAdded%>">
<input name="Items<%=ID%>" size="3" type="text" value="1">
<input name="ProduktPris<%=ID%>" type="hidden" value="<%=rs("ProduktPris")%>">
<input name="ProduktNummer<%=ID%>" type="hidden" value="<%=rs("ProduktNummer")%>">
<input name="ProduktNavn<%=ID%>" type="hidden" value="<%=rs("ProduktNavn")%>"></p>
</form>
</td>
</tr>
</table>

<center>
<hr noshade size="1" width="100%">
</center>

<!-- DETTE ANGIVER ANTALLET AF SIDER, HVIS DATABASEN INDEHOLDER MERE END 10 EMNER FOR DEN VALGTE KATEGORI -->
<%
    End If
    rs.MoveNext
    Wend

    If count>0 Then
    SQL = "SELECT count(ProduktID) As AllRecords FROM Produkter WHERE KategoriID = " & r & SQLAddOn
    Set rs = db.Execute(SQL)
    AllRecords = int(rs("AllRecords"))
%>
<p><span class="small">SIDE <%For t = 0 To Fix((AllRecords-1)/10)%><a href="order_product.asp?s=<%=t%>&amp;r=<%=r%>"><%If t=(s/10) Then%><%End If%><%=t+1%><%If t=(s/10) Then%><%End If%></a>
<%Next%></span></p>
<%Else%>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="440">
<tr>
<td align="left" valign="top" width="100%">
<%=CategoryStatus_NoProducts%>
</td>
</tr>
</table>
<%End If%>
<%Else%><table align="center" border="0" cellpadding="0" cellspacing="0" width="440">
<tr>
<td align="left" valign="top" width="100%">

<%=OrderIntroduction%>
</td>
</tr>
</table>
<%
    End If
%>
<%
    rs.Close
    db.Close
    Set rs = Nothing
    Set db = Nothing
    Erase Kategorier
%>
</td>
</tr>
</table>

<!-- INDHOLD SLUT -->

<!-- TOM TABEL FOR AT GIVE MERE PLADS -->

<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td align="center" valign="top" width="100%">
<p>&nbsp;</p>
</td>
</tr>
</table>

<!-- FODNOTE START -->

<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td align="center" valign="top" width="100%">

<hr noshade size="1" width="100%">

<p><span class="small">| Tekst her |</span></p>

</td>
</tr>
</table>

<!-- FODNOTE SLUT -->

</body>
<head>
    <meta http-equiv="expires" content="-1">
    <meta http-equiv="pragma" content="no-cache">
</head>
</html>
Avatar billede pierrehusted Nybegynder
11. august 2004 - 09:31 #1
Sikke meget kode, kan godt forstå at du har mistet overblikket. En god idé er at indrykke koden ved FUNCTION, IF og den slags - så synes jeg det bliver mere overskueligt.


Bliver variablen "i" sat i nogen af dine INCLUDES ?


Du vil have det fordelt over 2 kolonner - men hvordan ??

1 2
3 4
5 6
...

eller

1 4
2 5
3 6
Avatar billede pierrehusted Nybegynder
11. august 2004 - 09:32 #2
Hvis kodestykket øverst bliver opsat sådan her, så synes jeg det er nemmere at overskue.

<%
    r = Request.QueryString("r")
    If Len(r)<1 Then r= -1
    s = Request.QueryString("s")
    If Len(s)<1 Then s = 0
    s = s*10

    Dim Kategorier(100,4)

    Set db = Server.CreateObject("ADODB.Connection")
    Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
    db.Open Connect

    SQL = "SELECT KategoriNavn, KategoriParent, KategoriID, KategoriRank FROM Kategorier ORDER BY KategoriRank"
    Set rs = db.Execute(SQL)
    While Not rs.EOF
      If i<100 Then
        Kategorier(i,0) = rs("KategoriNavn")
        Kategorier(i,1) = rs("KategoriParent")
        Kategorier(i,2) = rs("KategoriID")
        Kategorier(i,3) = rs("KategoriRank")
      End If
      i = i+1
      rs.MoveNext
    Wend
    arrayLength = i-1


    FUNCTION show_search(parent1, CategoryLayer)
      If parent1 <> vbNullString Then
        For t = 0 To arrayLength
          If Kategorier(t,1) = parent1 Then

            EmptySpace = ""
            For x = 0 To CategoryLayer
              EmptySpace = EmptySpace & ""
            Next

            ' -> VED AT ÆNDRE 'EmptySpace & ""' TIL 'EmptySpace & "&nbsp;"' LAVES EN INDRYKNING FOR HVER KATEGORI.

            If CategoryLayer = 0 Then
              AddOn = ""
              AddOn1 = ""
            End If
            Response.Write(EmptySpace & "<a href='order_product.asp?r="&Kategorier(t,2)&"'>" & AddOn & Kategorier(t,0) & AddOn1 & "</a><br clear='all'>" & vbCrLf)
            parent2 = Kategorier(t,2)
            CategoryLayer1 = CategoryLayer +1
            show_search parent2, CategoryLayer1
          End If
        Next
      End If
    END FUNCTION

    SQLAddOn = ""
    FUNCTION show_c(parent3)
      For t = 0 To arrayLength
        If cint(Kategorier(t,1)) = cint(parent3) Then
          parent4 = Kategorier(t,2)
          SQLAddOn = SQLAddOn & " Or KategoriNavn = " & parent4
          show_c parent4
        End If
      Next
    END FUNCTION

    show_c r
%>
Avatar billede ravnkilde Nybegynder
11. august 2004 - 09:45 #3
pierrehusted: jeg vil helst have:

1 2
3 4
5 6
Avatar billede ravnkilde Nybegynder
11. august 2004 - 09:50 #4
pierrehusted: "i" sættes IKKE i nogle af de to includes
Avatar billede ravnkilde Nybegynder
11. august 2004 - 12:48 #5
pierrehusted: Hej!  Har du opgivet mig!?
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