Toon posts:

[ASP,SQL] Crossed content in tables

Pagina: 1
Acties:

Verwijderd

Topicstarter
Sorry voor de vage titel, ik zal proberen zo duidelijk mogelijk te zijn:

Ik heb een table met 2 rows. De eerste bevat een titel, de tweede wat er bij een bepaalde titel hoort.
1 title kan bijvoorbeeld 5 of meer items hebben.
Dus mijn rijen zien er dan als volgt uit:

ROW1 | ROW2
title1 | content1
title1 | content2
title1 | content3
title1 | content4
title1 | content5
title2 | content1
title2 | content2
title2 | content3
title3 | content1
title3 | content2
title3 | content3

Nu wil ik in tabellende zooi weergeven.

Het resultaat zou dan moeten worden:

Title1
----------
content1
content2
content3
content4
content5

Title2
----------
content1
content2
content3

etc etc.

Zoals startpagina zeg maar.

Nu zit ik al een uur te denken hoe ik dat aan ga pakken. Ik kan er ook niks over vinden want ik weet niet waar ik naar moet zoeken.

Ik heb geprobeerd om dit in sql met een view of een stored procedure te maken, maar ik geloof niet dat dat goed werkt.

Een do untill EOF in ASP heeft ook geen nut.

Ik dacht dat dit in ASP het beste gemaakt kan worden.
zoiets als:
semipseudocode:
code:
1
2
For each value in row1
do untill EOF


Hoe kan ik dit het beste aanpakken?

[ Voor 7% gewijzigd door Verwijderd op 04-12-2003 01:26 ]


Verwijderd

Topicstarter
Ik zal dan maar zelf antwoord geven 8)7

Ik heb hiervoor de titels in een andere tabel gezet, en die met de originele tabel gekoppeld doormiddel van nummertjes.

Dit is de oplossing:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Set catsRec = objConn.Execute ("SELECT * FROM cats ORDER BY name ASC;")

    While NOT catsRec.EOF
        Set linkRec = ObjConn.Execute ("SELECT * FROM links WHERE catid = " & catsRec("catid") & " AND active = '1' " & SortSQL & ";")
        
        %>

<!---hier de weergave van de titels-->

<%
        If linkRec.BOF then
            Response.Write "<CENTER>Geen content in deze categorie</CENTER>"
        end if
        While NOT linkRec.EOF
            %>

<!---hier de weergave van de content-->

            linkRec.MoveNext
        Wend
        catsRec.MoveNext
    Wend
    objConn.Close
    Set linkRec = Nothing
    Set catsRec = Nothing
%>

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
je had het ook gewoon in je code kunnen doen:

ASP:
1
2
3
4
5
6
7
8
9
do while not rs.eof
  if rs("title") = newtitle
     'voer code uit
  else
     newtitle = ""
  end if
newtitle = rs("title")
rs.movenext
loop


works for me

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Topicstarter
Dat brengt mij op de volgende vraag.

Nu wil ik dat als deze blokken meer dan 5 is, dat hij de volgende 5 blokken er naast zet. Wederom als startpagina dus.

Ik heb hier al een andere methode voor die ik ook ga gebruiken, maar ik ben nieuwsgierig hoe dat in deze vorm uit te voeren :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
De formattering van je gegevens moet je niet in SQL afdwingen, maar moet je in je applicatie doen.
SQL is er enkel om data op te halen/te bewerken/te updaten/etc....

https://fgheysels.github.io/


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 18-05 15:53

Jaspertje

Max & Milo.. lief

Verwijderd schreef op 10 december 2003 @ 23:55:
Dat brengt mij op de volgende vraag.

Nu wil ik dat als deze blokken meer dan 5 is, dat hij de volgende 5 blokken er naast zet. Wederom als startpagina dus.

Ik heb hier al een andere methode voor die ik ook ga gebruiken, maar ik ben nieuwsgierig hoe dat in deze vorm uit te voeren :)
net als whoami boven mij al zegt, je bent nu bezig om de layout in je applicatie te stoppen en dat is niet waar SQL voor bedoeld is. Je zou eens naar arrays kunnen kijken, redelijk makkelijk en goed te hanteren.

je wilt niet voor elke rij een nieuwe SQL statement maken, dan wordt je aplicatie retetraag zeker omdat je geen ingewikkelde query hebt..

dus: gebruik een array (of een tellertje ofzo: if i = 5 then </tr><tr>) ofzoiets..

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Verwijderd schreef op 10 december 2003 @ 23:55:
Dat brengt mij op de volgende vraag.

Nu wil ik dat als deze blokken meer dan 5 is, dat hij de volgende 5 blokken er naast zet. Wederom als startpagina dus.

Ik heb hier al een andere methode voor die ik ook ga gebruiken, maar ik ben nieuwsgierig hoe dat in deze vorm uit te voeren :)
dan zou je iets als dit krijgen binnen je loop,
je moet wel tables oid gebruiken.

ASP:
1
2
3
4
5
6
7
8
If i MOD 5 = 0 Then
  If NOT i = 0 Then
    'code
  End If
 'code
Else
 'code
End If

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
ik hep ook zoiets gemaakt, maar dan met arrays (GetRows() op je recordset)

1 versie in gewoon XHTML, en 1 versie in XML. de laatste is zo simpel dat je het niet gelooft.

ik heb 2 tabellen;

1 met alle links,
1 met de titels (text bovenaan elk blok),


de titels hebben allemaal een kolomnummer (1 - 3, maar kan van alles zijn)

voor de xml versie sorteer je op titel, en laat je ALLE records onder elkaar zien. in je stylesheet kan je de code dan een tabel zetten met het aantal kolommen dat je wilt hebben. (niet verder denken,m dit is het werkelijk)

daarna doorloop je de xml-file net zoveel keer als dat je kolommen hebt. (met natuurlijk de wijziging dat je een andere kolomnummer wilt)

voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="imagetoolbar" content="no" />
    <style type="text/css">
    .div1 {font-family: 'Arial', 'Times New Roman', 'Courier';
        background-color: #003366;
        color: #ffffff;
        font-size: 10pt;
        font-weight: bold;
        border-width: 1px 1px 0px;}
    .div2 {background-color: white;
        border-width: 0px 1px;}
    .div3 {background-color: white; color: blue;
        border-width: 0px 1px 1px;}
    div {width: 200px;
        border-style: solid;
        border-color: #003366;}
    body {background-color: #e9e9e9;
        font-family: 'Arial', 'Times New Roman', 'Courier';
        color: #003366;
        font-size: 11pt;
        overflow: auto;
        width: 100%;}
    a.top {font-family: 'Arial', 'Times New Roman', 'Courier';
        color: #003366;
        font-size: 11pt;}
    a.bottom {font-family: 'Arial', 'Times New Roman', 'Courier';
        color: #ffffff;
        font-size: 11pt;}
    a {font-family: 'Arial', 'Times New Roman', 'Courier';
        color: blue;
        font-size: 10pt;}
    span {color:green;
        font-size: 9pt;}
    </style>
</head>

<body><form method="GET" action="http://www.google.nl/search" target="_blank">
<center>
<table>
    <tr>
        <td colspan="4" align="center">In samenwerking  met<br/>
        <a class="top" href="http://www.google.nl" target="_blank" title="www.conet.nl">www.google.nl</a><hr/>
        <b>titel hier</b><hr/></td>
    </tr>
    <tr>
        <td colspan="4" align="center">
        <a href="http://www.google.nl/">
        [img]"images/Logo_40wht.gif"[/img]</a>
        <input type="text" name="q" size="31" maxlength="255" value=""/>
        <input type="hidden" name="hl" value="nl"/>
        <input type="submit" name="btnG" value="Google Zoeken"/>
        </td>
    </tr>
    <tr>
        <td valign="top">
        <xsl:for-each select="root/links/link">
        <xsl:if test="@column=1">
        <xsl:if test="@start&gt;0">
            <div class="div1"><xsl:value-of select="@header"/></div>
        </xsl:if>
        <xsl:choose>
        <xsl:when test="@end&gt;0">
            <div class="div3"><a><xsl:attribute name="href"><xsl:value-of select="@url"/>
            </xsl:attribute><xsl:value-of select="@text"/></a>
            <span><xsl:value-of select="@tooltip"/></span></div><br/>
        </xsl:when>
        <xsl:otherwise>
            <div class="div2"><a><xsl:attribute name="href"><xsl:value-of select="@url"/>
            </xsl:attribute><xsl:value-of select="@text"/></a>
            <span><xsl:value-of select="@tooltip"/></span></div>
        </xsl:otherwise>
        </xsl:choose>
        </xsl:if>
        </xsl:for-each></td>

        <td valign="top"><xsl:for-each select="root/links/link">
        <xsl:if test="@column=2">
        <xsl:if test="@start&gt;0">
            <div class="div1"><xsl:value-of select="@header"/></div>
        </xsl:if>
        <xsl:choose>
        <xsl:when test="@end&gt;0">
            <div class="div3"><a><xsl:attribute name="href"><xsl:value-of select="@url"/>
            </xsl:attribute><xsl:value-of select="@text"/></a>
            <span><xsl:value-of select="@tooltip"/></span></div><br/>   
        </xsl:when> 
        <xsl:otherwise>
            <div class="div2"><a><xsl:attribute name="href"><xsl:value-of select="@url"/>
            </xsl:attribute><xsl:value-of select="@text"/></a>
            <span><xsl:value-of select="@tooltip"/></span></div>
        </xsl:otherwise>
        </xsl:choose>
        </xsl:if>
        </xsl:for-each>
        </td>
        
        <td valign="top"><xsl:for-each select="root/links/link">
        <xsl:if test="@column=3">
        <xsl:if test="@start&gt;0">
            <div class="div1"><xsl:value-of select="@header"/></div>
        </xsl:if>
        <xsl:choose>
        <xsl:when test="@end&gt;0">
            <div class="div3"><a><xsl:attribute name="href"><xsl:value-of select="@url"/>
            </xsl:attribute><xsl:value-of select="@text"/></a>
            <span><xsl:value-of select="@tooltip"/></span></div><br/>   
        </xsl:when> 
        <xsl:otherwise>
            <div class="div2"><a><xsl:attribute name="href"><xsl:value-of select="@url"/>
            </xsl:attribute><xsl:value-of select="@text"/></a>
            <span><xsl:value-of select="@tooltip"/></span></div>
        </xsl:otherwise>
        </xsl:choose>
        </xsl:if>
        </xsl:for-each>
        </td>
    </tr>
        <tr><td style="height: 100%;" colspan="4"> </td></tr>
    <tr>
        <td valign="bottom" colspan="4" style="background-color: #003366;" align="center">
        <a class="bottom" href="">Opmerkingen of suggesties?</a></td>
    </tr>
</table>
</center></form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

xml file: (in asp)
0=url, 1=title, 2=link_ID, 3=subject_ID, 4=subject, 5=column, 6=extra
SQL = "SELECT * FROM [Linktable] ORDER BY [Subject_ID];"
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<root>
    <links>
        <% GetLinks
        subject = linktable(4, 0)
        for I = LBound(linktable, 2) to UBound(linktable, 2)
        if I + 1 <= UBound(linktable, 2) then
            X = I + 1
        else
            X = I
        end if
        if subject <> linktable(4, I) OR I = Lbound(linktable,2) then 
            strSTART = "1"
        else 
            strSTART = "0"
        end if
        subject = linktable(4, I)
        if I = UBound(linktable, 2) OR Cstr(subject) <> Cstr(linktable(4, X)) then 
            strEnd = "1"
        else
            strEnd = "0"
        end if %><link column="<%= linktable(5, I) %>" start="<%= strSTART %>" end="<%= strEnd %>" header="<%= linktable(4, I) %>" url="<%= server.HTMLEncode(linktable(0, I)) %>" text="<%= server.HTMLEncode(linktable(1, I)) %>" tooltip=" <% if Len(linktable(6, I)) >1 then %>(<%= server.HTMLEncode(linktable(6, I)) %>)<% end if %>" />
        <% next %>
    </links>
</root>

[ Voor 32% gewijzigd door BasSpruit op 11-12-2003 10:40 ]

Pagina: 1