Avatar billede newbie.dk Praktikant
21. oktober 2008 - 19:49 Der er 12 kommentarer og
1 løsning

Styring af indsætning af kode i tabel

Jeg har noget kode til et billedegalleri. Men jeg kan ikke lige finde ud af hvordan jeg styre retningen på billedeoversigten.
Nu vises billederne lodret, altså første række ét billede + tekst, næste række ét billede + tekst osv.
Jeg kunne godt tænke mig at man viste fx 3 billeder + tekst i hver række, 4. billede starter så en ny række.
Jeg ved ikke lige hvordan dette skal sætte op, håber i kan se jer ud af det.

Her er min kode:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
strSQL = "Select * From Images"
Set RS = Conn.Execute(strSQL)

countSQL = "Select Count(ID) As Count From Images"
RS2 = Conn.Execute(countSQL)
%>
<table border="0" cellpadding="0" cellspacing="0" width="40%">
    <tr>
        <td width="100%" align="center"><font size="1" face="Verdana"><strong><%= RS2("Count")%> </strong>images in database</font></td>
    </tr>
</table>
<br>
<% Do While Not rs.EOF %>

<table border="0" cellpadding="0" cellspacing="4" width="40%" bgcolor="#C0C0C0">
    <tr>
        <td rowspan="3" width="25%">
        <A HREF="java script:displayWindow('showimg.asp?id=<%=RS("ID")%>',<%=RS("Width")%>,<%=RS("Height")%>)">
        <img src="images/<%=RS("Images")%>.<%=RS("Filtype")%>" height=100 width=70 border=0></a></td>
        <td width="75%"><font size="1" face="Tahoma">Filtype: <strong><%= RS("Filtype")%></strong></font></td>
    </tr>
    <tr>
        <td width="75%"><font size="1" face="Tahoma">Højde: <strong><%= RS("Height")%></strong>px Bredde: <strong><%= RS("Width")%></strong>px</font></td>
    </tr>
    <tr>
        <td width="75%"><font size="1" face="Tahoma">Description: <strong><%= RS("Description")%></strong> </font></td>
    </tr>
</table>

<%
RS.MoveNext
Loop
Conn.Close
Set Conn = Nothing
%>
Avatar billede Slettet bruger
21. oktober 2008 - 20:37 #1
Du kan lave en If ... Then kommando, for hver gang data gennemløbes. Og så tilføje variabel t, som der bliver lagt én til, for hvert gennemløb. Når t når 3 skal den starte forfra.

Så noget i retning af:

<%
...

t=t+1
If t=3 Then
  [opret ny række]
  t=0
Else
  [opret ny celle]
End If

RS.MoveNext
Loop

...
%>

  // Steeven
Avatar billede newbie.dk Praktikant
21. oktober 2008 - 21:02 #2
Det lyder jo som en god og fornuftig idé... men det kan jeg ikke se mig ud af hvordan jeg skal lave.
Hvis jeg nu sætter pointne op til 60, vil du så hjælpe mig?
Avatar billede Slettet bruger
21. oktober 2008 - 23:03 #3
Du for mig jo til at lyde helt gnieragtig! :( Jeg skal nok hjælpe for de 30 point du tilbyder ;)


...
<table><tr>

<%
Do While Not RS.EOF

Response.Write "<td>...</td>"

t=t+1
If t=3 Then
  Response.Write "</tr><tr>"
  t=0
End If

RS.MoveNext
Loop

%>
...
Avatar billede Slettet bruger
21. oktober 2008 - 23:04 #4
Bare husk at definere t og sætte den til 0 fra start, altså allerøverst:

<%
Dim t
t=0
...
Avatar billede Slettet bruger
21. oktober 2008 - 23:06 #5
Og husk at afslutte den sidste række samt tabellen uden for asp-koden til slut, altså:

...
%>

</tr></table>
Avatar billede Slettet bruger
21. oktober 2008 - 23:11 #6
Du kan indsætte indhold mellem <td>...</td>-tag'ene - altså du kan hente dit billede og tekst ind på den måde du ønsker.
Når ASP-en gennemløber løkken, oprettes en ny række, hver gang der er sat 3 celler i den nuværende række (fordi t så er lig med 3 - der lægges jo netop 1 til t hver gang, en celle oprettes)

  // Steeven
Avatar billede newbie.dk Praktikant
22. oktober 2008 - 00:39 #7
Øv, jeg kan ikke få det til at virke.
Jeg har prøvet med
Response.Write "<td>...</td>"
og sætte koden ind der, men får en masse fejl som sikkert hænger sammen med apostroferne. Det kan jeg ikke lige se mig ud af.
Avatar billede Slettet bruger
22. oktober 2008 - 09:27 #8
Alle "-tegnene skal du bare udskifte med '-tegn, så kan det lade sig gøre. Fx: Response.Write "'", skriver resultatet: '.
Jeg prøver herunder, at skrive din kode lidt om. Jeg har ændret en del i strukturen, for du oprettede faktisk en ny tabel, for hvert gennemløb af et datasæt.


<%
Dim t
t=0
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
strSQL = "Select * From Images"
Set RS = Conn.Execute(strSQL)

countSQL = "Select Count(ID) As Count From Images"
RS2 = Conn.Execute(countSQL)
%>
<table border="0" cellpadding="0" cellspacing="0" width="40%">
    <tr>
        <td width="100%" align="center"><font size="1" face="Verdana"><strong><%= RS2("Count")%> </strong>images in database</font></td>
    </tr>
</table>
<br>

<tabel border="0" cellpadding="0" cellspacing="4" width="100%" bgcolor="#C0C0C0">
<tr>

<%
Do While Not rs.EOF

Response.Write "<td rowspan='3'>"
Response.Write "<A HREF='java script:displayWindow('showimg.asp?id=" & RS("ID") & "'," & RS("Width") & "," & RS("Height") & ")'>"
Response.Write "<img src='images/" & RS("Images") & "." & RS("Filtype") & " height=100 width=70 border=0></a></td>"

Response.Write "<td>
Response.Write "<font size='1' face='Tahoma'>Filtype: <strong>" & RS("Filtype") & "</strong></font><br />"
Response.Write "<font size='1' face='Tahoma'>Højde: <strong>" & RS("Height") & "</strong>px, Bredde: <strong>" & RS("Width") & "</strong>px</font>
Response.Write "<font size='1' face='Tahoma'>Description: <strong>" & RS("Description") & "</strong></font>
Response.Write</td>

t=t+1
If t=3 Then
  Response.Write "</tr><tr>"
  t=0
End If

RS.MoveNext
Loop

Conn.Close
Set Conn = Nothing
%>
    </tr>
</table>


Der kommer helt sikkert nogle fejlmeddelelser, for det var lidt besværligt at overskue. Giv besked om, hvad der sker, når du forsøger at få det til at virke.

I virkeligheden får du her oprettet to celler ved siden af hinanden for hvert billede + tekst, der skal indsættes.

  // Steeven
Avatar billede Slettet bruger
22. oktober 2008 - 09:30 #9
I den nederste grupper af Response.Write kommandoer mangler der nogle "-tegn. Det skal se således ud:

Response.Write "<td>"
Response.Write "<font size='1' face='Tahoma'>Filtype: <strong>" & RS("Filtype") & "</strong></font><br />"
Response.Write "<font size='1' face='Tahoma'>Højde: <strong>" & RS("Height") & "</strong>px, Bredde: <strong>" & RS("Width") & "</strong>px</font>"
Response.Write "<font size='1' face='Tahoma'>Description: <strong>" & RS("Description") & "</strong></font>"
Response.Write "</td>"

  // Steeven
Avatar billede newbie.dk Praktikant
22. oktober 2008 - 23:29 #10
Så nu begynder det at se rigtigt fint ud - super. Det drillede lige lidt med nogle tastefejl.

Eneste problem jeg lige kan finde er at javascriptet ikke får værdierne ind. Kun java script:displayWindow( bliver returneret. Så der mangler dette: 'showimg.asp?id=1',280,400)

Jeg har prøvet at lege lidt med " og ', men det har ikke hjulpet. Stort set kun givet fejl.
Håber du kan finde fejlen.


Response.Write "<A HREF='java script:displayWindow('showimg.asp?id=" & RS("ID") & "'," & RS("Width") & "," & RS("Height") & ")'>"
Avatar billede Slettet bruger
23. oktober 2008 - 00:01 #11
Nå ja...

I linjen:
<A HREF="java script:displayWindow('showimg.asp?id=<%=RS("ID")%>',<% ...

har jeg jo ændret alle "-tegn til '-tegn. Men så kan den ikke adskille det fra de '-tegn, der allerede står i linjen. Vi må vel bare trække den uden for ASP-koden.

Kodestykket her:

Response.Write "<td rowspan='3'>"
Response.Write "<A HREF='java script:displayWindow('showimg.asp?id=" & RS("ID") & "'," & RS("Width") & "," & RS("Height") & ")'>"
Response.Write "<img src='images/" & RS("Images") & "." & RS("Filtype") & " height=100 width=70 border=0></a></td>"

bliver til:

Response.Write "<td rowspan='3'>"
%>
<A HREF="java script:displayWindow('showimg.asp?id=<%=RS("ID")%>',<%=RS("Width")%>,<%=RS("Height")%>)">
<%
Response.Write "<img src='images/" & RS("Images") & "." & RS("Filtype") & " height=100 width=70 border=0></a></td>"

hvor jeg har indsat din oprindelige javascript-kode igen uden for ASP-området. Prøv nu.

  // Steeven
Avatar billede newbie.dk Praktikant
23. oktober 2008 - 00:17 #12
Det er jo helt perfekt. Det er super godt.

Jeg takker mange gange. Fedt.

Ligger du ikke et svar.
Avatar billede Slettet bruger
23. oktober 2008 - 08:37 #13
Jo :)

Det er godt det virkede.

  // Steeven
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