Avatar billede daniel_d Nybegynder
23. august 2004 - 21:29 Der er 14 kommentarer og
1 løsning

position i array + funktion

Jeg har et problem med et billedsystem
Koden er delvis fra eksperten og delvis min egen.

mit problem er min tilbageknap.

Siden med billeder er delt op så den viser 9 billeder pr side.
Klikker jeg på et billede får jeg det vist på samme side i stedet for oversigten (en if else statement) men nu jeg også en forrige og næste billede når jeg ser det store billede. Så jeg kan ikke bruge en history.back funktion.

Men f.eks. hvis jeg f.eks klikker på et billede fra oversigten på side 1 og bruger næste linket på det store billede og klikker frem til et billede der er på side 2 og vil tilbage til oversigten skal jeg bruge en funktion der sender mig til side 2

Lød det kryptisk ? - lidt svært at forklare

måske lettere med koden, så den kommer her. Problemet er på linie 182 - filen hedder default.asp :

<html>
<head>
<title></title>

<style type="text/css">
.TN
{
    border: 1px solid #000000;
}
.LP
{
    border: 1px solid #000000;
}
a:link
{
    font-family: verdana;
    font-size: 8pt;
    color: #000000;
    text-decoration: none;
}
a:visited
{
    font-family: verdana;
    font-size: 8pt;
    color: #000000;
    text-decoration: none;
}
a:active
{
    font-family: verdana;
    font-size: 8pt;
    color: #000000;
    text-decoration: none;
}
a:hover
{
    font-family: verdana;
    font-size: 8pt;
    color: #FFFFFF;
    text-decoration: none;
}
.LI
{
    color: #000000;
    Border: 1px solid #000000;
}
</style>
</head>

<body bgcolor="A0B3C8">
<div align="center">

<table width="100%" border="0">
<%
CurFile = "default.asp"
billedeSti = "./01-Renovering/"
antalBillederPrSide = 9
antalBillederPrRekke = 3

if Request.QueryString("billede") = "" then
  start = request.querystring("start")
  if start = "" then start = 0

  Set fs = CreateObject("Scripting.FileSystemObject")
  Set f = fs.GetFolder(server.mappath(billedeSti))

  Set fc = f.Files
  For Each billed in fc
    arrayBuild = arrayBuild & billed.name & "|"
  next
  arrayBuild = left(arrayBuild, (len(arrayBuild) - 1))
 
  myArray = Split(arrayBuild, "|")

  Antalsider = int(ubound(myarray) / antalBillederPrSide)
  antal = 0
  for i = start to (start + antalBillederPrSide-1)
    if not i > ubound(myarray) then
      if antal = 0 then Response.Write "<TR>"
%>
<td width="<%=Int(antalBillederPrRekke/100)%>"><p align="center">
<a href="<%=CurFile%>?sti=<%=billedeSti%>&billede=<%=myArray(i)%>">
<img class="TN" SRC="<%=billedeSti%>/<%=myArray(i)%>" border="0" color="black" WIDTH="116" HEIGHT="82">
</a></td>
<%
    else
      nesteside = 1
    end if

    antal = antal + 1
    if antal = antalBillederPrRekke then
      Response.Write "</TR>"
      antal = 0
    end if
  next
  if antal > 0 then Response.Write "</TR>"
%>
  </table>
  <center>
<%
  if start <> 0 then
    response.write "<a href=" & (CurFile) & "?start=" & (start - antalBillederPrSide) & ">Forrige</a>"
    response.write("&nbsp;&nbsp;&nbsp;&nbsp;")
  end if




  'Determine if there are multiple pages and if so, display page numbers.
  If Antalsider > 1 Then
        Response.Write BillederPrRekke

        For x = 1 to Antalsider + 1

            z = (x-1)*AntalBillederPrSide
           
            'Response.Write "start:" & "&nbsp;" & start & "&nbsp;" & "z=" & z & "&nbsp;"
           
            If z = cint(start) Then
                Response.Write  x & "&nbsp;&nbsp;&nbsp;&nbsp;"
            Else
                Response.Write "<a href=" & (CurFile) & "?start=" & z & ">" & x & "</a>&nbsp;&nbsp;&nbsp;&nbsp;"
            End If
        Next
    End If





  if nesteside <> 1 then
    response.write "<a href=" & (CurFile) & "?start=" & (start + antalBillederPrSide) & ">Næste</a>"
  end if
%>
  </center>
<%
else
  'Vis billedet
 
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set f = fs.GetFolder(server.mappath(billedeSti))

  Set fc = f.Files
  For Each billed in fc
    arrayBuild = arrayBuild & billed.name & "|"
  next
  arrayBuild = left(arrayBuild, (len(arrayBuild) - 1))
 
  myArray = Split(arrayBuild, "|")

minpos=lbound(MyArray)
maxpos=lbound(MyArray)

for i=lbound(MyArray)+1 to ubound(MyArray)
  if MyArray(i) > MyArray(maxpos) then
    maxpos=i
  end if
  if MyArray(i)<MyArray(minpos) then
    minpos=i
  end if
next

min=MyArray(minpos)
max=MyArray(maxpos)

%>
  <tr><td align="center">
  <a border="0" class="LP" href="java script:history.back();"><img SRC="<%=Request.QueryString("sti") & Request.Querystring("Billede")%>" border="0" class="LI"></a>
  <p align="center">
  <%
  For n = 0 to UBound(MyArray)
    If Request.Querystring("Billede") = MyArray(n) Then
     
      if MyArray(n) = min Then
      Else
      forrige = MyArray(n-1)
      Response.Write "<a href='default.asp?sti=" & Request.Querystring("sti") & "&Billede=" & forrige & "'>" & "Forrige" & "</a>" & "&nbsp;"
      End if
     
      'Response.Write "<a href='java script:history.back();'>Tilbage</a>"
     
      'HER SKAL TILBAGE KNAPPEN VÆRE
      'TILBAGELINKET SKAL MÅSKE HAVE EN HREF = CurFile?Start= (UBound(Myarray)/AntalBillederPrRekke -+*/ en aller anden funktion)
      'Talværdi af aktuel position i array
     
      'eks
      '27/3=9
      'pos = 16
      'start=9 da 9 < 16 < 18
     
      'pos = 26
      'start = 18 da 18 < 26 < 27
     
      if MyArray(n) = max Then
      Else
      naeste = MyArray(n+1)
      Response.Write "&nbsp;" & "<a href='default.asp?sti=" & Request.Querystring("sti") & "&Billede=" & naeste & "'>" & "Næste" & "</a>" & "&nbsp;"
      End if
     
    End if
  Next 
  %>
  </p>
 
  </td>
  </tr>
  </table>
<%
end if %>
</div>
</body>
</html>
Avatar billede daniel_d Nybegynder
23. august 2004 - 22:34 #1
Foreløbig kommet frem til noget a la :

      pos = funktion der finder startposition som talværdi - eks 3

      if pos < 9 then
        start=0
      else
        start=pos - (9 * antallet af gange 9 kan gå op i pos)
      end if
Avatar billede daniel_d Nybegynder
23. august 2004 - 22:35 #2
pos = funktion der finder nuværende position og IKKE startposition
Avatar billede daniel_d Nybegynder
23. august 2004 - 22:37 #3
pos = funktion der finder aktuel position som talværdi - eks 3

      if pos < 9 then
        start=0
      else
        start=(9 * antallet af gange 9 kan gå op i pos)
      end if
Avatar billede daniel_d Nybegynder
23. august 2004 - 23:15 #4
Mangler nu bare funktionen til at bestemme nuværende position...

      pos = 17 'funktion der finder startposition som talværdi - eks 3

      if pos < 9 then
        startpos = 0
        Response.Write startpos & "&nbsp;"
      else
        startpos = Int(pos/9)*9
        Response.Write startpos
      end if
Avatar billede ellebaek Nybegynder
23. august 2004 - 23:41 #5
skal lige være sikker... du mener at 17 skal give 2 som start ikke..?
2*9 = 18 :-)

pos = 19 => 3

if pos < 9 then
  startpos = 0
  Response.Write startpos & "&nbsp;"
else
  startpos = Int(pos/9)*9
  Response.Write startpos
end if

umiddelbart synes jeg ovenstående burde give det rigtige resultat...
hvad giver den for et resultat..=
Bliver nødt til at få sovet, men kigger forbi i morgen.!
Avatar billede daniel_d Nybegynder
23. august 2004 - 23:49 #6
Ved godt at 2*9=18, men i mit script svarer det til side 2 da hver sde holder 9 billeder

mit problem er at finde pos i array som feks ku være 17
Avatar billede daniel_d Nybegynder
23. august 2004 - 23:50 #7
ovenstående kodestump er rigtig nok - som sagt skal jeg bare finde arraypositionen nu
Avatar billede daniel_d Nybegynder
24. august 2004 - 00:24 #8
arrayet består af filnavne men hvis filnavnet blot havde en talværdi var det jo let

a la pos = value(MyArray)
Avatar billede eagleeye Praktikant
24. august 2004 - 00:33 #9
Du kan da bruge n som positionen som jeg lige læser koden:

  For n = 0 to UBound(MyArray)
    If Request.Querystring("Billede") = MyArray(n) Then


Du har en forsætninge og hvis det valgte billede er lig det som er i MyArray(n) så kommer du ind i if sætningen som uskriver linket "tilbage" så har du n som pos i arrayet hvor den valgte fil er.
Avatar billede eagleeye Praktikant
24. august 2004 - 00:41 #10
Du finder også forrige og næste fil ud fra n:  forrige = MyArray(n-1)

n er tal og kan bruges som pos i den kode du har som udregner startpos:

      pos = n 'funktion der finder startposition som talværdi - eks 3

      if pos < 9 then
        startpos = 0
        Response.Write startpos & "&nbsp;"
      else
        startpos = Int(pos/9)*9
        Response.Write startpos
      end if
Avatar billede daniel_d Nybegynder
24. august 2004 - 00:51 #11
det giver 0 = virker ikke rigtigt
Avatar billede daniel_d Nybegynder
24. august 2004 - 00:53 #12
sludder - det virker !!! Kanon
Avatar billede daniel_d Nybegynder
24. august 2004 - 00:53 #13
Tænk at man kan se sig blind på en så lille og latterlig ting
Avatar billede daniel_d Nybegynder
24. august 2004 - 01:12 #14
men smid et svar :)

Deler lige koden. Synes selv den er blevet ganske udemærket. EagleEye> Du kan sikkert genkende noget af koden...
Avatar billede eagleeye Praktikant
24. august 2004 - 08:42 #15
Jeg gik i seng efter sidste kommentar :)

Jeg kan godt genkende nogle bider af koden, og det er godt at se andre kan bruge det :)  Ja det ser godt ud det du har tilføjet.
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