Avatar billede krel Nybegynder
19. april 2008 - 15:40 Der er 39 kommentarer og
1 løsning

tabel med dummy

Hej derude?
Nu er jeg blevet kastet lidt rundt og fået noget hints hist og her så derfor prøver jeg nu for 3 gang. (mon også lykkens gang?)

Jeg har en tabel der indeholder 72 felter på 37x37px - fordelt over 12 rækker - nu tar jeg udgangspunkt i en enkelt række.

så bliver bredden følgende:
37px 1px 37px 1px 37px 1px 37px 1px 37px 1px 37px
højen:
37px

Til denne side har jeg en databse der indeholde tilsvarende billeder på 37x37px i øjeblikket er der bare kun 27 (dvs. 4 rækker + 1 række hvor der kun er billeder i de første 4 felter)

Hvordan laver jeg smartes tabellen sådan at der skriv det antal rækker der er brug for (max 12) og så ikke sætter noget billede ind hvis der ikke er flere billeder i databasen?

Lige nu har jeg manuelt lavet en tabel [1] med alle <tr> og <td> tags men ville jo gerne komme disse ind i noget asp så det hele lavet sig selv. - især også fordi dette er en reference side og jeg vil som tiden går tilføje flere og flere referencer.

[1] link til tabel: http://www.tourdefoxdecarvalho.dk/KRISproduction/lighting/teknisk.asp

håber jeg fik det hele med..
mvh
Kristian
Avatar billede krel Nybegynder
19. april 2008 - 16:57 #1
har nu prøve at stykke en hurtig kode som vises her:
<html>
<body>
<div align="center">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/fpdb/krispro.mdb")
Conn.Open DSN
Set rs = Conn.Execute("select * from teknisk order by id desc")
%>
<table border="0" width="227" id="table1" cellspacing="0" cellpadding="0">
<%
i = 0
do while not eof
  Response.Write "<tr><td width='37' height='37'><img border='0' src='../grafik/02/referencer/"&rs("arstal")&"/small/"&rs("job")&".png' width='37' height='37'></td></tr>"
  i = i+1
loop
for x=i to 72
  Response.Write 'En dumy-linje
next
%>
</table>
</div>
</body>
</html>

men får en fejl med noget 'responebuffer limit Exceeded'

?
Avatar billede krel Nybegynder
19. april 2008 - 17:01 #2
Avatar billede natsprinter Nybegynder
19. april 2008 - 17:19 #3
Jeg har lavet dette lille sæt til dig, det fungerer glimrende og re helt simpelt.

Jeg fordusætte her, at du har et recordsæt, kaldet db, hvor du har en post i tabellen der hedder foto. Med hensyn til begrænsningen på de 12 billeder, så skal du sætte det i din sql (hvis du bruger mySql) med LIMIT 12

Sådan gør du:

<table>
<%
do wile not db.eof fotos
'Sæt en tæller der holder øje med antallet af kolonner
colNr = colNr + 1

    if conNr = 1 then
        ' Hvis tælleren har værdien 1 skrives en række
        response.Write("<tr>")
    end if
   
    ' Skriv et foto fra databasen i cellen
    response.Write("<td>" &db("foto")& "</td>")
   
    if conNr = 3 then
        ' Hvis tælleren = 3 afsluttes rækken
        response.Write("</tr>")
        ' Tælleren nulstilles
        conNr = 0
    end if

    'Udfyld resten af tabellen, hvis ikke tæller er nået til 3
    if conNr = 1 then
        response.Write("<td>&nbsp;</td><td>&nbsp;</td></tr>")
    end if
   
    if conNr = 2 then
        response.Write("<td>&nbsp;</td></tr>")
    end if
   
db.moveNext
loop
%>
</table>
Avatar billede natsprinter Nybegynder
19. april 2008 - 17:20 #4
En lille bug

do wile not db.eof fotos

skal naturligvis være

do wile not db.eof
Avatar billede natsprinter Nybegynder
19. april 2008 - 17:23 #5
Pokker da - jeg blev lidt for ivrig :-)

Sådan her skal det være!!!!

<table>
<%
do wile not db.eof
'Sæt en tæller der holder øje med antallet af kolonner
colNr = colNr + 1

    if conNr = 1 then
        ' Hvis tælleren har værdien 1 skrives en række
        response.Write("<tr>")
    end if
   
    ' Skriv et foto fra databasen i cellen
    response.Write("<td>" &db("foto")& "</td>")
   
    if conNr = 3 then
        ' Hvis tælleren = 3 afsluttes rækken
        response.Write("</tr>")
        ' Tælleren nulstilles
        conNr = 0
    end if

db.moveNext
loop

    'Udfyld resten af tabellen, hvis ikke tæller er nået til 3
    if conNr = 1 then
        response.Write("<td>&nbsp;</td><td>&nbsp;</td></tr>")
    end if
   
    if conNr = 2 then
        response.Write("<td>&nbsp;</td></tr>")
    end if
%>
</table>
Avatar billede krel Nybegynder
19. april 2008 - 17:35 #6
ok jamen så er der noget at gå ud fra
-nyt link: http://www.tourdefoxdecarvalho.dk/KRISproduction/lighting/teknisk_copy(3).asp

har rettet db > rs i stedet for...
kan man så lavet noget i samme stil med rækkerne?

sådan at der kun er 6 billeder pr. række over 6 billeder ny linje..

eks 8 billeder:
linje1 6 billeder
linje2 2 billeder + 4 tommer td'er

hvis du forstår

/kris
Avatar billede natsprinter Nybegynder
19. april 2008 - 17:58 #7
Ligesom en trappe?

Det kræver bare nogle flere if-sætninger
Avatar billede krel Nybegynder
19. april 2008 - 17:59 #8
hmm pøver lige at lave en sådan ska det se ud (bare uden asp) to sek.
Avatar billede krel Nybegynder
19. april 2008 - 18:05 #9
sådan: http://www.tourdefoxdecarvalho.dk/KRISproduction/lighting/teknisk_copy(4).asp

sådan sku det gerne se ud.. har tilføjet en celler både mellem hver 37x37 vandret og lodret så der kommer 1px luft mellem billederne
Avatar billede jansangill Nybegynder
19. april 2008 - 18:05 #10
Hvis jeg forstår dig korrekt, så er det at du vil have 6 billeder i hver række.

Her er en eksempel, som du kan gå ud fra.

<table cellpadding="" cellspacing="" width="100%">
                  <%
                    t=1
                  'sæt databse etc
                    If Not (rs.BOF Or rs.EOF) Then
                      do while not rs.eof
                          if (t+5)/6 = Round((t+5)/6) then Response.write "<tr>"
                           
                            %><td width="150" valign="top" height="130">Indhold</td><%
                            if t/6 = Round(t/6) then Response.write "</tr>"
                            t = t + 1
                            rs.movenext
                        loop
                        if t/6 <> Round(t/6) then Response.write "</tr>"
                    end if
                   
%></table>
Avatar billede natsprinter Nybegynder
19. april 2008 - 18:14 #11
Så skal det bare laves mere dynamisk

Definer øverst, hvor mange kolonner du ønsker, dereftar:

<table>
<%
antalKol = 6

do wile not rs.eof
'Sæt en tæller der holder øje med antallet af kolonner
colNr = colNr + 1

    if conNr = 1 then
        ' Hvis tælleren har værdien 1 skrives en række
        response.Write("<tr>")
    end if
   
    ' Skriv et foto fra databasen i cellen
    response.Write("<td>" &rs("foto")& "</td>")
   
    if conNr = antalKol then
        ' Hvis tælleren = antallet af kolonner afsluttes rækken
        response.Write("</tr>")
        ' Tælleren nulstilles
        conNr = 0
    end if

db.moveNext
loop

    'Udfyld resten af tabellen, hvis ikke tæller er nået til antallet af kolonner
    if conNr <> antalKol then
        ' Find ud af hvor mange kolonner der mangler at blive udfyldt
        for t = 1 to antalKol - conNr
            response.Write("<td>&nbsp;</td>")
        next
        response.Write("</tr>")
    end if
   
%>
</table>
Avatar billede solle Nybegynder
19. april 2008 - 19:03 #12
arrayFotos = rs.GetRows()
intFotoVaelger = 0

CONST fotosti = 1  'Den kolonne i DB'en som indeholder stien til fotoet!
const antal_raekker = 6
const antal_kolonner = 6

response.write("<table border=1>")
for x=1 to antal_raekker
    response.write("<tr>")
    for y=1 to antal_kolonner
        if(intFotoVaelger<=UBound(arrayFotos, 2))then
            response.write("<td><img src="""& arrayFotos(fotosti, intFotoVaelger) &"""></td>")
        else
            response.write("<td>&nbsp;</td>")
        end if
        intFotoVaelger = intFotoVaelger + 1
    next
        response.write("</tr>")
next
response.write("</table>")
Avatar billede solle Nybegynder
19. april 2008 - 19:09 #13
Hvis du kun vil have det antal rækker der er nødvendigt, så prøv med det her...

arrayFotos = rs.GetRows()
intFotoVaelger = 0

CONST fotosti = 1  'Den kolonne i DB'en som indeholder stien til fotoet!
const antal_kolonner = 6

antal_fotos  = UBound(arrayFotos, 2)
antal_raekker = antal_fotos - (antal_fotos MOD antal_kolonner) / antal_kolonner
if(antal_fotos MOD antal_kolonner > 0)then antal_raekker=antal_raekker+1

response.write("<table border=1>")
Avatar billede krel Nybegynder
19. april 2008 - 19:30 #14
så har jeg prøvet det forskellige og jansangill er helt klart tættest på!

har lidt kosmetik tilbage at hører om, for mellem de 6 felter i hver række vil jeg gerne have et felt på 1px dvs de første 5 felter skal der være 1 px efter - ikke det 6 og sidste felt?

link er nu: http://www.tourdefoxdecarvalho.dk/KRISproduction/lighting/teknisk_copy(2).asp
Avatar billede krel Nybegynder
19. april 2008 - 19:45 #15
fik løst det med 1px vandret man kan ikke gennemsku lodret? det virker som om det er på dem alle på nær mellem første og andet felt fra venstre...

/kris
Avatar billede krel Nybegynder
19. april 2008 - 20:54 #16
hu hej da!
har selv bakset lidt frem og tilbage og nu virker det som det skal!

smider du ikke et svar jansangill ?
Avatar billede no_doubt Nybegynder
19. april 2008 - 21:12 #17
Krel. Gider du adde mig på msn: mark.mikkelsen83@gmail.com
Avatar billede jansangill Nybegynder
19. april 2008 - 21:22 #18
Jamen det er da dejligt. Heller ingen grund til at skrive 500 liniers kode for noget der kan gøres på 15
Avatar billede krel Nybegynder
19. april 2008 - 22:36 #19
^^
lige præcis.

desværre har jeg kun haft it på handelsskole og var jeg sådan kom igang med det så fik foden lidt indenfor men efterhånden har jeg ikke fået fulgt op eller gjort noget ved så ved man kan en del, kan bare ikke selv sætte mig ned og skrive ud af det blå...

^^ no doubt msn? til hvad?
Avatar billede no_doubt Nybegynder
20. april 2008 - 11:49 #20
Ville bare gerne lige vende noget med dig
Avatar billede krel Nybegynder
20. april 2008 - 18:18 #21
så send du en msn.. har dig allerede liggende fra noget andet html snak..
Avatar billede no_doubt Nybegynder
20. april 2008 - 18:27 #22
kan ikke se dig :-)
Avatar billede krel Nybegynder
20. april 2008 - 18:42 #23
hmm du er heller ikke på hos mig...
Avatar billede no_doubt Nybegynder
20. april 2008 - 18:51 #24
hvad er din
Avatar billede krel Nybegynder
27. april 2008 - 14:10 #25
^^
kristiannielsen@dbmail.dk

>> jansangill

har prøvet at rode lidt med en zoom-ting:
Skal foregå sådan at når man trykker på et af de små billeder bliver dette større og der vises 9 midre billeder nedenunder det store..
det virker også meget fint, men igen kun med alm. manuel kode og ville gerne igen lave at hvis der nu kun er 7 billeder laves der

- 2 rækker med 3 billeder
- 1 række med 1 billede

men disse billeder lægger på en anden måde i db'en: ud for hver post har jeg lavet felterne img1 til img9 pg ville så trække på dem så hvis nu der ingen data er i img8 + img9 skal der enten ikke sættes billeder i feltet eller også skal rækken og tabellen sluttes.

eks: http://www.tourdefoxdecarvalho.dk/KRISproduction/lighting/teknisk_copy(2).asp
* med manuel kode...
Avatar billede jansangill Nybegynder
27. april 2008 - 17:13 #26
Lad mig forstå dig ret, det du vil, er det samme som før, denne gang bare m ed 2 rækker af 3, og en række af 1?

Hvis ja, så gør du bare sådan her:

<table cellpadding="" cellspacing="" width="100%">
                  <%
                    t=1
                  'sæt databse etc
                    If Not (rs.BOF Or rs.EOF) Then
                      do while not rs.eof
                          if (t+2)/3 = Round((t+2)/3) then Response.write "<tr>"
                           
                            %><td width="150" valign="top" height="130">Indhold</td><%
                            if t/3 = Round(t/3) then Response.write "</tr>"
                            t = t + 1
                            rs.movenext
                        loop
                        if t/3 <> Round(t/3) then Response.write "</tr>"
                    end if
                   
%></table>
Avatar billede krel Nybegynder
27. april 2008 - 18:13 #27
jo der er hul igennem men ikke helt...

måske er det min db-opbyning der er forkert måske min kode..
hver job har:
- id
- job
- titel
- status
også 9 felter til billeder
- img1
osv.
osv.
- img9

for ved den manuelle kode brugte jeg jo:
../../<%=rs("img1")%>
../../<%=rs("img2")%>
../../<%=rs("img3")%>

det giver lidt knas i og med at jeg ikke bare kan skrive img og så loope for der ikke noget img uden tal men img(og så et tal)
kan man evt. lave noget regnestykke s¨å der kommer til at stå noget i retning af img(så en formel) der gør at vær gang man rykker videre i db'en pluses der med 1 så imgA -hvor A er et tal starter med 1 næste post 2 osv osv ..

???
Avatar billede jansangill Nybegynder
27. april 2008 - 18:29 #28
ja du bruger jo bare t

T er 1 i første gennemgang, 2 i næste, 3 i trdje etc
Avatar billede krel Nybegynder
27. april 2008 - 18:58 #29
hmm nu hedder mit felt i db'en img1 forsøgte så med img(t) men så viste den fejl... men man skal vel lave en form for funktion eller?

noget alá strimg = rs("img(funktion (t) der stiger med 1)")

- igen kan ikke lige skrive det korrekte asp-sprog`?
Avatar billede jansangill Nybegynder
27. april 2008 - 19:22 #30
<%=rs("img"&t)%> = img1
Avatar billede jansangill Nybegynder
27. april 2008 - 19:23 #31
første gang det er.
Avatar billede krel Nybegynder
27. april 2008 - 19:32 #32
okay.. er med på t = 1 og den + med 1 efter hånden som det løbes igennem men kunne bare ikke lige gennemskue hvordan denne værdi skulle sættes sammen med...

jeg takker.
Avatar billede krel Nybegynder
27. april 2008 - 19:37 #33
hmmm..

den viser stadig kun det ene billede som ligger i img1 og ikke de 9 som jeg ved der er...?
Avatar billede krel Nybegynder
27. april 2008 - 19:47 #34
arhhh tror godt jeg kan se det nu..

jeg har lavet det sådan at den jo zoom'er på samme side med en if aller først igen jeg gør noget som helst og hvis ?zoom=1 skal der kun vælges fra den række i tabellen hvor id = 1 altså kan man vel ikke bruge rs.movenext da der kun er den ene??

jeg skal i stedet for at hoppe i næste række hoppe i næste kollone i db'en altså fra img1 med id1 til img2 med id1 osv osv...

?
Avatar billede jansangill Nybegynder
27. april 2008 - 19:51 #35
Aner det ikke for at være ærlig. Ved stadig ikke helt hvad du vil oå, og prøv at vis koden også
Avatar billede krel Nybegynder
27. april 2008 - 20:02 #36
<%
        Set Conn = Server.CreateObject("ADODB.Connection")
        DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/fpdb/krispro.mdb")
        Conn.Open DSN
        if request.querystring("zoom") <> "" then
        Set rs = Conn.Execute("select * from teste where id = "&request.querystring("zoom"))
        response.write "<table border='0' width='100%' id='zoom' cellspacing='0' cellpadding='0'>"
        response.write "<tr><td height='227px' width='227px' colspan='5'><a href='java script:history.back(-1)'><img border='0' src='../grafik/02/referencer/"&rs("arstal")&"/"&rs("job")&".png' width='227px' height='227px' alt='' title='tilbage til oversigten..'></a></td></tr>"
        response.write "<tr><td height='1px' width='227' colspan='5'></td></tr>"
        t=1
        If Not (rs.BOF Or rs.EOF) Then
        do while not rs.eof
        if (t+2)/3 = Round((t+2)/3) then Response.write "<tr>"       
        response.write "<td height='75px' width='75px'><img border='0' src='../grafik/02/billeder/"&rs("arstal")&"/"&rs("job")&"/"&rs("img"&t)&".png' width='75px' height='75px' alt='' title='"&rs("arstal")&": "&rs("titel")&"&nbsp["&rs("status")&".]'></td>"
        if t/3 = Round(t/3) then Response.write "</tr>"
        t = t + 1
        rs.movenext
        loop
        if t/3 <> Round(t/3) then Response.write "</tr>"
        end if
        response.write "</table>"
        else
        Set rs = Conn.Execute("select * from teknisk order by id desc")
        response.write "<table border='0' width='100%' id='teknisk' cellspacing='0' cellpadding='0'>"
        t=1
        If Not (rs.BOF Or rs.EOF) Then
        do while not rs.eof
        if (t+5)/6 = Round((t+5)/6) then Response.write "<tr>"
        response.write "<td height='37px' width='1px'></td>"
        response.write "<td height='37px' width='37px'><a href='?zoom="&rs("id")&"'><img style='cursor:hand;cursor:pointer' border='0' src='../grafik/02/referencer/"&rs("arstal")&"/small/"&rs("job")&".png' width='37px' height='37px' alt='' title='"&rs("arstal")&": "&rs("titel")&"&nbsp["&rs("status")&".]'></td>"
        if t/6 = Round(t/6) then Response.write "<tr><td height='1px' width='227px' colspan='11'></td></tr></tr>"
        t = t + 1
        rs.movenext
        loop
        if t/6 <> Round(t/6) then Response.write "<tr><td height='1px' width='227px' colspan='11'></td></tr></tr>"
        end if
        response.write "</table>"
        end if
        %>

dette her er min ide;

En liste med de job jeg har være med til vises i form af små billeder 6 i bredde og maks 12 i højden (virker helt fint!) når der så klikkes på et af disse små billeder er det meningen at det skal blive stort og fylde 6 x 6 små felter i toppen (227x227px) og nedenunder her skal der så vises 9 billeder á 75x75px fra det pågældende job.

?zoom= id fra db'en

For at undgå at der vises dette irrerterende hvide billede med et lille kryds i hjørnet ville jeg gennemgå felterne i databasen og vis dette er tomt skal der ikke vises noget lille billede (75x75) men rækken/tabellen skal blot afsluttes ligesom med den store liste (inden ?zoom)

forskellen er at ved den store liste løbes db-tabellen igennem og når der 'zoomes' er der ikke noget at løbe igennem fordi der kun skal trækkes fra den db-række hvor id = ?zoom=værdi'en

min db-tabel er bygget sådan op - en række i db-tabellen begynder med:
- id
- job
- titel
- status
- img1
- img2
- img3
- img4
- img5
- img6
- img7
- img8
- img9

dvs. når jeg 'zoom'er' skal jeg ikke til næste række (rs.movenext) men (hvis det kan lade sig gøre) hoppe videre i samme række.

håber det er til at forstå?
Avatar billede jansangill Nybegynder
27. april 2008 - 21:02 #37
Kan du ikke bare lade være med at lave en do while så? Og så bygge hver td op hvis der er en billede?

<div id="billede_holder">
<%
if not rs.eof then

'indhold
if rs("img1")<>"" then response.write "<div class='billede'>"&rs("img1")&"</div>"
if rs("img2")<>"" then response.write "<div class='billede'>"&rs("img2")&"</div>"
if rs("img3")<>"" then response.write "<div class='billede'>"&rs("img3")&"</div>"

'etc

end if
%>
</div>



Id'en billede_holder definere du i CSS, med en width på det ønskede, og height på det ønskede,

Class'en billede har widt på hver billede, og height, og den floater left.
Avatar billede krel Nybegynder
27. april 2008 - 21:10 #38
det var da en mulighed... vil jeg prøve at kaste mig ud i i løbet af senere i morgen så det kan være jeg giver et piv her i tråden vis det driller...

men mange gange tak for tid og ideer!
Avatar billede krel Nybegynder
28. april 2008 - 16:53 #39
jamen det bliver jo lige som jeg ville have det skulle være... har det bare med at få nogle idéer om hvordan det kan gøres og så viser det sig at det kan gøres meget nemmere c",)
Avatar billede jansangill Nybegynder
28. april 2008 - 17:43 #40
Hehe, jamen det er jo godt. Held og lykke med dit projekt.
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