webForumDet fria alternativet

Ett litet problem med tabeller o loopar...

ASPur ASP

2 svar · 255 visningar · startad av LearningASP

Medlem sedan okt. 2001127 inlägg
Frågan#1

Hej! det är så att jag har en sida där jag ska visa bilder och då har jag ett pagingscript till detta och jag vill att det ska visas 6 bilder i varje kolumn och sen ny rad, det fyllas på rader beronde på hur många bilder det ligger i den mappen... ja ni förstår

jag har fixat lite med denna koden men får inte den att fungera... bilderna byter inte rad utan visas bara på en lång rad

<%
		'## -- hämta alla poster --
		Function getImages
			Dim objFSO, objFolder, File, objRSimg
			Dim strExtension

			Const adChar = 129

			'## -- skapar recordsetet --
			Set objRSimg = Server.CreateObject("ADODB.Recordset")
				'## -- skapar en kolumn i recordsetet --
				objRSimg.Fields.Append "ImageName", adChar, 255
				
				'## -- öppnar recordsetet. Notera att nu behövs ingen
				'##    sql-fråga eller connection object eftersom
				'##    vi skapar det dynamiskt och sedan fyller det --
				objRSimg.Open
			
				'## -- skapar ett filesystemobject för att kunna få mapp information --
				Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
					
					'## -- fysiska sökvägen till mappen från root --" & strFolder & "
					strFolderPath = Server.MapPath("\pump\foto\mode\v8\thumbnails\")
					
					'## -- hämta folder info --
					Set objFolder = objFSO.GetFolder(strFolderPath)
										
						'## -- här börjar vi att loopa igenom alla filer som finns
						'##    i mappen --
						For Each File IN objFolder.Files
							'## -- vilken filändelse har filen --
							strExtension = objFSO.GetExtensionName(File)
							
							'## -- se till att ändast giltiga bild-filer
							'##    läggs till i recordsetet. gif eller jpeg --
							Select Case UCase(strExtension)
								Case "GIF", "JPG"
								
									'## -- ställ recordsetet i update läge --
									objRSimg.AddNew
									
										'## -- vilken information ska läggas till
										'##    i kolumnen --
										objRSimg("ImageName") = File.Name
										
									'## -- uppdatera recordsetet med en ny post --
									objRSimg.Update
							End Select
						Next
					Set objFolder = Nothing
				Set objFSO = Nothing
			
				If Not objRSimg.EOF Then
					objRSimg.MoveFirst
					getImages = objRSimg.GetRows()
				End If
			
				objRSimg.Close
			Set objRSimg = Nothing
		End Function

		'## -- vilken post ska pagingen börja på --
		Function getStartID(ByVal PageSize, ByVal ViewPage) ' As Integer
			Dim m_intStart
			m_intStart = ((PageSize * ViewPage) - PageSize)
			getStartID = m_intStart
		End Function

		'## -- räkna ut hur många sidor som ska visas --
		Function countPages(ByVal HowManyRecords, ByVal PageSize)
			Dim m_intTotalPages, m_intRest

			m_intTotalPages = HowManyRecords / PageSize

			If m_intTotalPages < 1 Then
				m_intTotalPages = 1
			Else
				m_intRest = m_intTotalPages - CLng(m_intTotalPages)
				If m_intRest > 0 AND m_intRest < 0.5 Then
					m_intTotalPages = CLng(m_intTotalPages) + 1
				Else
					m_intTotalPages = CLng(m_intTotalPages)
				End If
			End If

			'## -- return how many pages --
			countPages = m_intTotalPages
		End Function
		'##***********************************************************************************
		
		
		Dim arrRecords
		Dim intPageSize
		Dim intPage
		Dim intStartID
		Dim I			
		Dim intTotalPages
		Dim intTotalRecords
		
		'Egna Vriabler	
								

		'## -- vilken sida ska visas --
		intPage = Request.QueryString("page")
		If intPage = "" Then intPage = 1

		'## -- hur många poster ska visas per sida --
		intPageSize = 4

		'## -- hämta alla records, hämtas med metoden getrows och returneras
		'##    som en array. --
		
		'## -- här hämtar vi alla bilder till en 2 dimensionell array --
		arrRecords = getImages

		'## -- vilken post är den första --
		intStartID = getStartID(intPageSize, intPage)

		'## -- printa ut sidan som ska visas
		'##    alla poster finns i arrayen arrRecords som
		'##    kommer från funktionen getRecords --
		If IsArray(arrRecords) Then
			'Response.Write "E ju en array<BR>"
		'## -- hur många records finns det totalt --
		intTotalRecords = UBound(arrRecords,2) + 1
	
		'## -- hur många sidor finns det i recordsetet --
		intTotalPages = countPages(intTotalRecords, intPageSize)

		'## -- startar tabellen utanför loopen --
		Response.Write("<div align=""center"">")
		Response.Write ("<table border=""0"" cellpadding=""2"" cellspacing=""4"">")
		Response.Write "<tr>"
		Call PrevPage(intPage)
				
		'## -- Loopen av bilderna börjar
		intCounter = intCounter + 1 
		For I = intStartID To ((intStartID + intPageSize) -1)
		
		iNr = I + 1
				
		strImageName = arrRecords(0,I)
			
		'## -- skriv ut en bild --									
		
		Response.Write ("<TD align=""center""><A href=""bildpres.asp?mapp="& strFolder &"&rosta="& strVote &"&bild="& strImageName &""" target=""TopFrame""><IMG src=""" & strFolder & "/thumbnails/" & strImageName & " "" border=""0"" alt=""""></A><br>" & iNr & "</TD>")
		
		If intCounter mod 2 = 0 Then Response.Write "</tr><tr>"
		
		If I = UBound(arrRecords, 2) Then Exit For
		
		

		Next
		
		'## -- stänger tabellen efter loopen --
		If intCounter mod 2 <> 0 Then
			Do Until intCounter mod 2 = 0
				Response.Write "<td> </td><td></td>"
				intCounter = intCounter + 1
			Loop
		End If
			Response.Write "</tr></table><br>"
		
		Call NextPage(intTotalPages,intPage)
		'Response.Write("</tr></table>")
		'Response.Write("</div>")
								
		'## -- skriv ut sidnavigerings menyn --
		

		

		'## -- skriver ut sidnavigeringen --
		'## -- skriv ut föregående sida --
		Sub PrevPage(ByVal WichPage)
			Dim strScriptName
			strScriptName = Request.ServerVariables("SCRIPT_NAME")
			
		'## -- skriver ut sidnavigeringen --
		'## -- skriv ut en länk till föregående sida --
			If CInt(WichPage) > 1 Then
				Response.Write("<td align=""left"">" & _
				"<a href='" & strScriptName & "?" & "mapp=" & Server.URLEncode((strFolder)) & "&rosta="& strVote &"&page=" & WichPage - 1 & "'>" & _
				"<img border=""0"" src=""../bilder/knappar/left.gif"" alt=""Gå " & intPageSize & " bilder bakåt...""></a></td>")
			Else
				Response.Write("<td align=""left""></td>")
			End If
		End Sub
		
		'## -- skriv ut nästa sida --
		Sub NextPage(ByVal HowManyPages, ByVal WichPage)
			Dim strScriptName
			strScriptName = Request.ServerVariables("SCRIPT_NAME")
	
			'## -- skriv ut en länk till nästa sida --
			If CInt(WichPage) < CInt(HowManyPages) Then
				Response.Write("<td align=""right"">" & _
				"<a href='" & strScriptName & "?" & "mapp=" & Server.URLEncode((strFolder)) & "&rosta="& strVote &"&page=" & WichPage + 1 & "'>" & _
				"<img border=""0"" src=""../bilder/knappar/right.gif"" alt=""Gå " & intPageSize & " bilder framåt..""></a></td>")
			Else
				Response.Write("<td align=""right""></td>")
			End If
		End Sub
			Else
				'## -- inga poster fanns i db --
				intPage = 0
				intTotalRecords = 0
				intTotalPages = 0
	
				'## -- skriv ut att inga poster hittades --
				Response.Write("<P>Inga bilder hittades</P>")
			End If
			%>

Tack på förhand

Jonas

Medlem sedan jan. 20022 440 inlägg
#2

Men herregud människor!!! Skicka inte så förbannat mycket kod jag kan ju inte koncentrera mig så länge det tar att läsa igenom allt :(

Medlem sedan mars 20002 836 inlägg
#3

Du får nog flytta på denna rad så att den ligger i For Loopen:

intCounter = intCounter + 1

Sedan för att få 6 bilder i rad måste du även ändra denna rad:

If intCounter mod 2 = 0 Then

till

If intCounter mod 6 = 0 Then

Finns en rad till efter loopen som oxå måste ändras för att tabellen ska bli korrekt formaterad:

'## -- stänger tabellen efter loopen --
If intCounter mod 2 <> 0 Then

ändra till:

'## -- stänger tabellen efter loopen --
If intCounter mod 6 <> 0 Then

testa dessa ändringar. Funkar de inte är det bara att komma tillbaka

cya,
PatrikB

130 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)