webForumDet fria alternativet

lista bilder > använda pagin

ASP

23 svar · 538 visningar · startad av roady

Medlem sedan jan. 2002473 inlägg
Frågan#1

Jag har en fråga och om det går så skulle det vara lite trevligt med hjälp...

Jag skulle vilja visa bilder från en mapp, 9st åt gången!

Sättet jag vill visa dem på är:

Bild1 Bild2 Bild3
Bild4 Bild5 Bild6
Bild7 Bild8 Bild9

Och sedan om det finns fler bilder så skall det vara en pagin osv. Tror ni förstår idéen. Jag har inte fått så mycket att funka än, men hur gör man och är det möjligt?

Skall man använda sig med pagin så måste man väll först räkna antalet bilder i mappen???

<% Option Explicit

	Dim objFSO, objFolder, objFile, File

	Set objFSO = CreateObject ("Scripting.FileSystemObject")
	Set objFolder = objFSO.GetFolder ("C:\InetPub\wwwroot\lista\bilder")

%>
<html>
<head>
	<title>Bilder...</title>
</head>

<body>
Antalet bilder i mappen:
<%
	For Each objFile In objFolder.Files
		File = File + 1
	Next

	response.write File
%>

Bilderna i mappen:
<TABLE>
	<TR>
<%

	For Each objFile In objFolder.Files
		IF LCase(Right(objFile.Name, 4)) = ".jpg" THEN
			response.write "<TD><IMG src=bilder\" & objFile.Name & " width=100 heigth=100></TD>"
		END IF
	Next

%>
	</TR>
</TABLE>

<%
	Set objFSO = Nothing
	Set objFolder = Nothing
%>
</body>
</html>
Medlem sedan juli 20012 450 inlägg
Medlem sedan jan. 2002473 inlägg
#3

Jo, men detta är det vanliga att man listar från en databas...

Det jag vill göra är att lista antal bilder från en mapp, funkar det eller måste man lägga in bildsökvägarna i en databas?

Medlem sedan juli 20012 450 inlägg
#4

Du kan väl lägga in endast namnet på bilden (om alla kommer ligga i samma katalog) sedan ange sökvägen i asp-koden?
namn | url

Sven | bild1.jpg
Kalle | bild2.jpg
Britta | bild3.jpg
Kurt | bild4.jpg

Medlem sedan jan. 2002473 inlägg
#5

Jo, men det som har tänkt är ex. att jag har 18 landskapsbilder jag vill lista, om jag i sådana fall skulle gå genom en databas så skulle det senare i längden bli jobbigt.

Därför vill jag visa bilderna direkt från mappen, men efter ett tag så kanske jag kommer att ha 35 landskapsbilder, vilket blir lite mycket att visa på samma gång och därför vill jag ha en pagin-funktion.

Medlem sedan juni 200032 967 inlägg
#6

Jag hittade denna tråd, se om den kan hjälpa: http://www.webforum.nu/showthread.php?s=&threadid=38820

Mvh,

Medlem sedan juli 20012 450 inlägg
#7

Tack @aders...
Jag har själv letat efter en sådan funktion :)

Medlem sedan jan. 2002473 inlägg
#8

Detta var ju helt underbart...
Precis vad jag ville ha och har änteligen fått det att funka...

Men nu kommer jag tillbaka till en fråga jag hade i början:

Sättet jag vill visa dem på är:

Bild1 Bild2 Bild3
Bild4 Bild5 Bild6
Bild7 Bild8 Bild9

Jag kan bara få dem att listas:
Bild1 Bild2 Bild3

Antar att det är någon jobbigt loop-sats man skall använda sig av!

Medlem sedan juli 20012 450 inlägg
#9

Sätt en räknare i for-loopen och varje gång talet är jämnt delbart med tre: sätter du ett <br> eller </tr> om du använder tables.

Medlem sedan juni 200032 967 inlägg
#10

Hur ser din kod ut nu?

Jag antar att det du vill är att få till någon sorts radbrytning efter var 3:e bild?

Före loopen: intCounter = 0

I loopen:

intCounter = intCounter + 1
' visa bilden
if intCounter mod 3 = 0 then
' fixa radbrytning
end if

Något att börja med kanske...

Mvh,

Medlem sedan jan. 2002473 inlägg
#11

*kliar sig hårt i huvudet*

Såhär ser koden ut,

'## -- startar tabellen utanför loopen --
	Response.Write ("<table border=""1"" cellpadding=""4"" cellspacing=""0"" width=""650""><TR>")

'## -- Loopen av bilderna börjar
	For I = intStartID To ((intStartID + intPageSize) -1)
	'intId = arrRecords(0,I)

		strImageName = arrRecords(0,I)

		'## -- skriv ut en bild --
		Response.Write "<TD><IMG src=""bilder/" & strImageName & """>"
			If I = UBound(arrRecords, 2) Then Exit For
	Next

'## -- stänger tabellen efter loopen --
	Response.Write("</TR></table>")

Hittade någonstans att man kan göra såhär:

<%
Nynr = 0
Do until News.EOF 
'skriv ut
IF Nynr mod 4 = 0 and nynr > 0 then %><p> <%
end if
Nynr = Nynr + 1
News.MoveNext
Loop
%>

Men hur får jag ihop det hela... Sedan tänkte jag på det som du skrev, jag visar ju max 9 bilder åt gången, men när bilderna tar slut så kanske det bara visas 5 och det kan man ju inte dela på 3!

Medlem sedan jan. 2002473 inlägg
#12

Fick det att funka med:

'## -- startar tabellen utanför loopen --
	Response.Write ("<table border=""1"" cellpadding=""4"" cellspacing=""0"" width=""650""><TR>")

'## -- Loopen av bilderna börjar
	For I = intStartID To ((intStartID + intPageSize) -1)
	'intId = arrRecords(0,I)
		intCounter = intCounter + 1
		strImageName = arrRecords(0,I)

		'## -- skriv ut en bild --
		Response.Write "<TD><IMG src=""bilder/" & strImageName & """>"
			If I = UBound(arrRecords, 2) Then Exit For
	'## -- Kollar om tre bilder har gått
	If intCounter mod 3 = 0 then
		response.write "<TR>"
	End IF
	Next

'## -- stänger tabellen efter loopen --
	Response.Write("</TR></table>")

men jag har en liten fråga.....
när jag tittar på <html> - koden i webläsaren så är det ett väldigt långt mellanrum mellan

<IMG src="bilder/bilden.jpg

                                                       "\>

varför blir det så?

och den skriver ut en extra <tr></tr> i slutet som är helt tom? :q

Medlem sedan juni 200032 967 inlägg
#13

Det är möjligt att det där fungerar, men det är inte rätt.
Du avslutar ingen <td>-tagg, och inte heller någon <tr>-tagg.

Du får nog gå igenom din tabell ordentligt och se till så din html är korrekt. Det är nog bara IE (som felaktigt) visar din tabell som du tänkt dig.

Ang. din lilla fråga kan det vara så ett det ligger en dold tabb i koden precis där. Prova att skriva om dina citationstecken.

Mvh,

Medlem sedan mars 20015 287 inlägg
#14

Den gör vad du säger till den att göra ;)

If intCounter mod 3 = 0 then
		response.write "<TR>"
	End IF

Gör ju att den skriver den tomma <tr>, Du borde kunna flytta upp innan du fyller ditt table i istället. Till början av For-slingan.

Äsch...

Medlem sedan feb. 20012 412 inlägg
#15

Testad kod som fungerar:

Inte det optmila sättet, men det enkla.

For i = 0 To ubound(arrMyArray,2)

If intCheck = 1 Then Response.Write "<tr>"
	   
Response.Write "<td>någon info</td>"

If intCheck = 3 Then
   Response.Write "</tr>"
intCheck = 0
End If

intCheck = intCheck + 1
		
Next
Medlem sedan jan. 2002473 inlägg
#16

Fick det precis att fungera med:

'## -- startar tabellen utanför loopen --
	Response.Write ("<table border=""1"" cellpadding=""4"" cellspacing=""0"" width=""650""><TR>")

'## -- Loopen av bilderna börjar

	For I = intStartID To ((intStartID + intPageSize) -1)
	'intId = arrRecords(0,I)
		intCounter = intCounter + 1
		strImageName = arrRecords(0,I)

		'## -- skriv ut en bild -- 
		response.write "<TD><IMG src=""bilder/" & strImageName & """></TD>"
			If I = UBound(arrRecords, 2) Then Exit For
	'## -- Kollar om tre bilder har gått

	IF intCounter = 9 Then 
		response.write ""
	ELSEIF intCounter mod 3 = 0 then
		response.write "</TR><TR>"
	End IF
	Next

'## -- stänger tabellen efter loopen --
	Response.Write("</TR></table>")

Inte kanske för att man skall bry sig, men när man tittar på <html> koden som skrivs ut så blir det en ända lång rad

Och sedan vid:
response.write "<TD><IMG src=""bilder/" & strImageName & """></TD>"
Blir:
<TD><IMG src="bilder/Pict0006.jpg

                                     "\>\</TD\> 

Så blir det ett jätte långt mellanrum i <html> koden, varför detta?

Medlem sedan juli 20012 450 inlägg
#17

prova med att skriva:
trim(strImageName) där du skriver sökvägen.
Förmodligen massa skräputrymme från databasen.

Medlem sedan jan. 2002473 inlägg
#18

Ser mycket bättre ut, men har ännu inte fått svar på en fråga...

när man använder sig utan
response.write "en massa kod"

så skrivs allt ut på en enda rad,,, detta kan man undankomma med "<br>", men när man skriver tabeller så funkar det ju inte så!

Medlem sedan juli 20012 450 inlägg
#19

Jag förstår inte. Vad är frågan?

Medlem sedan mars 20015 287 inlägg
#20

Om det är i htmlkoden du vill ha radbrytningar kan du skriva:

response.write "<TD><IMG src=""bilder/" & strImageName & """></TD>" & vbcrlf
472 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
332 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)