webForumDet fria alternativet

Placera ut databasresultatet i olika celler?

ASP

4 svar · 285 visningar · startad av oGGo

Medlem sedan apr. 2003120 inlägg
Frågan#1

Hej.

Sitter som bäst och kodar på ett bildarkiv men har stött på lite problemas.
Jag kommer lagra sökvägen till bilden i en acess-databas och desan köra en <img src="<%=RecSet("url")%>"> för att skriva ut den.
Dock är det så att det inte skulle bli så bra om jag placerade mina thumbnails i lång trave varken vertikalt eller horisontellt.

Vad jag vill uppnå är helt enkelt att jag skall kunna placera ut mina bilder på följande sätt:

<table>
<tr>
<td>Bild1</td><td>Bild2</td><td>Bild3</td>
</tr>
<tr>
<td>Bild4</td><td>Bild5</td><td>Bild6</td>
</tr>
<tr>
<td>Bild7</td><td>Bild8</td><td>Bild9</td>
</tr>
</table>

Lättare sagt är gjort för en simpel novis som jag så började jag pilla, och det ordentligt.
Efter att tag av mången scriptfel så vart jag ganska arg och beslöt mig för att göra https://www.gruvsjo.com en visit.

Jag tankade hem gästboksscriptet för att se hur jag skulle göra för att kunna infoga ett visst antal ur databasen varpå om villkoret var under antal i databasen så skrevs det ut en "Nästa sida>>"

Sagt och gjort så strippade jag den koden med ganska stor förhoppning om resultatlösning.

Icke sa nicke, den gamle räven skulle jag inte gått på.

Kanske det nu är något simpelt jag missat, men jag bifogar ändå koden som jag strippat ned för att ni enklare skall kunna se vad som kan göras åt den.

<%
Set Conn	= Server.CreateObject("ADODB.Connection")
Set Recset = Server.CreateObject("ADODB.Recordset")

Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../databas.mdb")

Const perSida = 9
 
If Request.QueryString("page") = "" then 
page = 1 
Else 
page = Request.QueryString("page") 
End If 

RecSet.CursorLocation = 3
RecSet.CacheSize = perSida

SQL = "SELECT * From inlagg Order By Datum DESC"
Recset.Open SQL, Conn, 1, 2

RecSet.MoveFirst 
RecSet.PageSize = perSida

TotalPages = RecSet.PageCount 
RecSet.AbsolutePage = page 

Count = 0 

Do While Not RecSet.EOF And Count < RecSet.PageSize 
%>

För att skriva ut infon ur databasen:

<%=Recset("Namn")%>

& sist men inte minst: nästa och föregående koden

<%
Count = Count + 1

Recset.MoveNext
Loop
Recset.Close
Conn.Close

Set Recset = Nothing
Set Conn = Nothing

End If
%>

  <tr>
     <td valign="top">
        <% 
          If TotalPages <> 1 Then
          If (Int(page)) <> 1 Then
          %>
          <a href="bilder.asp?page=<%=(Int(page)-1)%>" onfocus="this.blur()"><b>« Bakåt</b></a>
          <%Else%>
          
          <%End If%>
		  <%End If%>

          <%
          If (Int(page)) <> (Int(TotalPages)) AND Count > 0 Then
          %>
          <a href="bilder.asp?page=<%=(Int(page)+1)%>" onfocus="this.blur()"><b>Framåt »</b></a>
          <%Else%>
          
          <%End If%>

Snälla, kan någon hjälpa mig med detta, för jag håller på att bli riktigt murken nu. :(

Medlem sedan apr. 20031 660 inlägg
#2

HEJ!

Jag får två olika intryck av vad du vill göra, dels dela upp i celler, dels på olika rader?!

Jag svarar på alt ett, eftersom det är enklast!

Principen är följande:
Skriv ut cell efter cell, ha en räknare som när den blir 3 sätts till 0 samtidigt som </tr><tr> skrivs ut.
Sedan börjar proceduren om igen
För att sluta tabellen rätt måste man fylla på de celler som fattas här, dvs

response.write <table><tr>
do until rs.eof
  res.w <td>rs(...)</td>
  i=i+1
  if i=3 then res.w </tr><tr>: i=o
rs.movenext:loop

'ex på avslutning, behövs för i=0 och 1 också
if i=2 then res.w <td> </td></tr>

response.write </table>

Dvs testa med jämnt 3-tal först, sedan 4 resp 5 för att se att koden blir rätt gjord.

Medlem sedan apr. 2003120 inlägg
#3

.

Jag vill tacka J.N. för hjälpen en bit på traven.
Tack vare ditt inlägg så fick jag den kunskapen jag behövde för att lista grejjerna ur databasen i olika celler.

Tack vare detta så fick jag till formatteringen på sidan, men att fixa navigering var lättare sagt än gjort.

Dock hittade jag en utmärkt guide om paging på webeye.nu som jag använde mig av!

Resultatet blev till slut såhär:

<%
Set objRs = Server.Createobject("Adodb.Recordset")
strSQL = "Select * from inlagg Order by id"
strConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Server.MapPath("../databas.mdb")

intPageId = request.querystring( "pageid" )
if intPageId = "" then intPageId = 1

with objRs
  .cursorlocation = 3
  .open strSQL, strConString
  .pagesize = 9
  .absolutepage = intPageId
end with

intPages = cint( objRs.pagecount )
intCurrentPost = 0
%>

<table border="0" width="100%"><tr>

<%
do while not objRs.eof and intCurrentPost < objRs.pagesize

  'strContents = strContents & 
  response.write "<td valign=middle align=center>" & objRS("namn") & "</td>"
	
			if intCurrentPost = 2 Then
			response.write "</tr><tr>"
			end if
			
			if intCurrentPost = 5 Then
			response.write "</tr><tr>"
			end if
			
			if intCurrentPost = 8 Then
			response.write "</tr></table>"
			end if			

  intCurrentPost = intCurrentPost + 1
  objRs.movenext
loop

for i = 1 to objRs.pagecount
  strNavigation = strNavigation & " <a href='?pageid=" & i & "'>" & i & "</a>"
next

response.write "<table>" & strContents & "</table>"
response.write "<div align=center><table><tr><td>Sida: " & strNavigation & "</td></tr></table></div>" 
%>

Tack återigen!

Medlem sedan apr. 2003120 inlägg
#4

oj, denna kom visst lite fel, skulle vara ett svar på min tråd:
Placera ut databasresultatet i olika celler? men blev visst en nytt inlägg!

OveRRidE kanske skulle merga denna tråden med den den skulle hamnat i så jag slipper skämmas! :r

Medlem sedan sep. 20005 700 inlägg
#5

Trådarna är nu ihopslagna.
mvh, Patrik

275 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)