Avatar billede marcus456 Nybegynder
25. september 2005 - 23:57 Der er 14 kommentarer og
1 løsning

galleri accessDB - antal tabelrækker

Jeg har et udtræk fra en db herunder.
Hvordan placere jeg opjekt inde i tabel/celle med eget valg af tabelrækker.
Ikke noget problem at lave en række som bare fortsætter enten vanret eller lodret også hvor billedet befinder sig i en celle (ikke omkranset af en´stor tabel) men dete r ligesom ikke hensigten..:|
Det skulle gerne være muligt at ændre border også men er bange for der opstår et problem med "linkborder"
Dette er koden:

<%

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("gal.mdb")
Conn.Open DSN

strSQL = "SELECT stiLilleBillede, stiStortBillede, * FROM billedTabel"

Set rs = Conn.Execute(strSQL)

do while not rs.EOF

response.write "<a href='show.asp?id=" & rs("id") & "' target=''><img src='" & rs("stiLilleBillede") & "'style='border: 0px;'></a>"

rs.MoveNext
loop

Conn.Close
Set Conn = Nothing
%>
Avatar billede meltinis Nybegynder
26. september 2005 - 16:56 #1
Jeg forstår overhovedet ikke hvad det er du vil :)
Kan du ikke prøve at forklarer det lidt bedre?
Avatar billede marcus456 Nybegynder
27. september 2005 - 13:48 #2
måske jeg forklare for meget her :)
..eller spørger om for meget på en gang...

Dette udtræk af billeder i db fortsætter jo bare i en´lang række.
Dette forandre sig ikke når jeg ligger opjektet ind i en tabel.
Der skulle gerne være et "brud" så jeg selv kan bestemme antal columns og rows.

Jeg har en anden kode der er rettet til dette men der er der en fejl i jeg ikke kan gennemskue.
Det er det jeg mener med at den blå/røde "linkborder" omkring billederne som du kan se i koden kunne komme til at lave et problem med border i en tabel der bliver lagt ind i koden.
Det er sket i den anden kode jeg har.
Men glem dette, måske du har en løsning til første del af spørgsmålet
Avatar billede meltinis Nybegynder
27. september 2005 - 17:39 #3
ok... hvis jeg har forstået dig korrekt så søger du at kunne sætte billederne ind i en tabel ved billederne i hver sin celle:
Du gør det at du laver en tabel og sætter din løkke derind som følgende:

<tabel>

<%
do while not rs.EOF

response.write "<tr><td><a href='show.asp?id=" & rs("id") & "' target=''><img src='" & rs("stiLilleBillede") & "'style='border: 0px;'></a></td></tr>"

rs.MoveNext
loop
%>
</table>

Dette vil sætte alle billederne under hinanden og du kan 'styre' layout via table eller td tag'ene.

Hvis du vil ha' billederne stående i mere komplekse opsætninger må du lige sige til så vil jeg uddybe, men det tager lidt tid så hvis det ikke er nødvendigt så vil jeg ikke bruge tiden på det :)
Avatar billede marcus456 Nybegynder
27. september 2005 - 23:39 #4
det er skam ikke noget problem for mig at ligge billederne i en tabel som du gør der.
..som jeg også skrev i mit spørgsmål.
Jeg har brug for at billeder FX står 4 af gangen vandret og nedefter lodret.
En noget mere logisk kode end nedenstående.
(der er foriøvrigt også en fejl i som får tabellen til at ligge sig under billederne)
jeg kan vise dig et eks. på en site.
jeg må dsv afvise dette svar da jeg kan dette selv.

  <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("gal.mdb")
Conn.Open DSN

strSQL = "SELECT stiLilleBillede, stiStortBillede, * FROM billedTabel"

Set rs = Conn.Execute(strSQL)

if rs.EOF then
Response.write "ingen billeder i databasen"
else
  colPrRow = 3
  colInRow = 0
  response.write "<table width=""400"" border=""0"" align=""center"">"
  do while NOT RS.EOF
    if colInRow = 0 then response.write "<tr>"
    response.write "<a href='show.asp?id=" & rs("id") & "' target=''><img src='" & rs("stiLilleBillede") & "'style=border: 0px'></a>&nbsp;"
    colInRow = colInRow + 1
    if colInRow >= colPrRow then
    colInRow = 0
    response.write "</tr>"
    end if
    RS.MoveNext
  loop
  if colInRow > 0 then
  Response.Write "</tr>"
  end if
  response.write "</table>"
end if


Conn.Close
Set Conn = Nothing

%>
Avatar billede marcus456 Nybegynder
27. september 2005 - 23:44 #5
jeg har været nød til at bruge et &nbsp; for i det heletaget at adskille opjektet
- for tabellen  "<table width=""400"" border=""0"" align=""center"">" ligger sig under/udenfor galleriet, det er det der er problemet.
Ville meget gerne have hvis du ville uddybe dette.

Det er lidt nemmere at vise fejlen i koden her
http://freehost14.websamba.com/nsnsns/
Avatar billede meltinis Nybegynder
27. september 2005 - 23:54 #6
ok :) Sorry.. Nu er jeg med - håber jeg.
For det første mangler du en <td> </td> omkring dine <a /> tag.
For det andet ville jeg bygge din kode lidt nemmere op:




  <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("gal.mdb")
Conn.Open DSN

strSQL = "SELECT stiLilleBillede, stiStortBillede, * FROM billedTabel"

Set rs = Conn.Execute(strSQL)

if rs.EOF then
Response.write "ingen billeder i databasen"
else
  colPrRow = 3
  colInRow = 0
  response.write "<table width=""400"" border=""0"" align=""center"">"
  do while NOT RS.EOF

    if colInRow mod colPrRow = 0 then response.write "<tr>" end if
    colinRow = colInRow + 1

    response.write "<td><a href='show.asp?id=" & rs("id") & "' target=''><img src='" & rs("stiLilleBillede") & "'style=border: 0px'></a></td>"

    if colInRow mod colPrRow = 0 then response.write "</tr>" end if
    RS.MoveNext
  loop
  response.write "</table>"
end if


Conn.Close
Set Conn = Nothing

%>
Avatar billede meltinis Nybegynder
27. september 2005 - 23:57 #7
Hov... lille fejl... du skal først lave colinRow = colInRow + 1 efter den anden test:


  <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("gal.mdb")
Conn.Open DSN

strSQL = "SELECT stiLilleBillede, stiStortBillede, * FROM billedTabel"

Set rs = Conn.Execute(strSQL)

if rs.EOF then
Response.write "ingen billeder i databasen"
else
  colPrRow = 3
  colInRow = 0
  response.write "<table width=""400"" border=""0"" align=""center"">"
  do while NOT RS.EOF

    if colInRow mod colPrRow = 0 then response.write "<tr>" end if
 
    response.write "<td><a href='show.asp?id=" & rs("id") & "' target=''><img src='" & rs("stiLilleBillede") & "'style=border: 0px'></a></td>"

    if colInRow mod colPrRow = 0 then response.write "</tr>" end if

    colinRow = colInRow + 1
    RS.MoveNext
  loop
  response.write "</table>"
end if


Conn.Close
Set Conn = Nothing

%>
Avatar billede meltinis Nybegynder
27. september 2005 - 23:59 #8
Nej nu er jeg helt væk... den sidste if skal naturligvis hedde:

if colInRow mod colPrRow = 3 then response.write "</tr>" end if

ellers lukker den jo tag'en efter første billede :) Det er vidst ved at være sent...
Avatar billede meltinis Nybegynder
28. september 2005 - 00:04 #9
Og du bør nok tilføje en ekstra test - hvis antallet af billeder ikke er deleligt med 3 så lukker den ikke tabellen ordentligt. Derfor skal du nok lave en:

If colInRow mod colPrRow <> 3 then
while colInRow mod colPrRow <> 3
response.write "<td></td>"
colInRow = colInRow + 1
loop
response.write "</tr>"
end if

Nu bliver det nok lidt rodet, men det burde gøre det...
Avatar billede meltinis Nybegynder
28. september 2005 - 00:07 #10
Og nu for at gøre det hele mere dynamisk skal du selvfølgelig skifte alle mine 3 taller ud med colPrRow :)
Avatar billede marcus456 Nybegynder
28. september 2005 - 00:11 #11
1000 tak, jeg vil lige teste det.
Giver lige points for din hjælp..uanset om det virker...men det gør det jo nok :)

takker
Avatar billede meltinis Nybegynder
28. september 2005 - 00:20 #12
Ellers skriver du bare igen... så skal jeg se om jeg kan finde problemet :)
Avatar billede marcus456 Nybegynder
28. september 2005 - 00:43 #13
det funger....;)
Avatar billede marcus456 Nybegynder
28. september 2005 - 00:53 #14
vil lige finde logikken i koden...denne er jo rimeligt afgørende på mange områder og har ikke kunne finde dette i bøger eller på nettet.
Men spørgsmålet er om den kan skrives helt anderledes??
Eller om dette er den eneste måde at dele det op på?

takker
Avatar billede meltinis Nybegynder
28. september 2005 - 00:57 #15
Det er helt sikkert ikke den eneste måde. Idéen er at man skal finde en måde at dele det op på. Her er mod-fuktionen benyttet, men der er helt sikkert mange andre måder. Fordelen ved denne metode er at den er helt dynamisk - dvs. vil du pludselig ha' 4 billeder på række så ændrer du blot colPrRow til 4 og så klarer koden resten :)
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