Jag har en databas som innehåller x antal bilder med tillhörande text. Testa att använda querystring istället: Jag tog din kod och förändrade lite, då jag inte skickar med något id i queryn så använde jag mig av cookies som skickas med hela tiden istället. Men problemet kvarstår fortfarande, alltså bilderna som visas är samma för alla inläggen även om det i databasen är olika filer inlagda... Att använda cookies kommer ge dig en massa problem. Du kan bar visa en bild per sida. Om du navigerar mellan bilder kommer du förlora bilder. Koden för sidan som anropas : Vad har du för primärnyckel i tabellen bilar? Nu har jag satt min primärnyckel till BilId och installerat all kod du gav mig, lade till en del " som du hade missat. Men inga större problem förutom att den tjatar på detta felet på en rad som inte har någon kod och är längre upp i dokumentet. Det funkar, lite fix och trix bara! Alltid kul och hjälpa till. Hej,Ang. access och bilder
Jag vill nu såklart loopa fram bilderna, men det som händer nu är att jag får en och samma bild hela tiden men texten ändras, hur gör jag för att byta ut även bilden?
Det som händer är att det alltid är den senaste bilden i databasen som visas.
Kanske det är någon som förstår?
Detta är koden jag använder mig av i en fil som heter binarywriteimage.asp:
<%
dim conntemp, cnpath, sqltemp, rstemp, myid, dbname
dbname="admin/db/bilar.mdb"
myid=request.cookies("AHKId")
set conntemp=server.createobject("adodb.connection")
cnpath="DBQ=" & server.mappath(dbname)
conntemp.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath
sqltemp="select * from bilar where medlemsid="
sqltemp=sqltemp & myid & ""
set rstemp=conntemp.execute(SQLTemp)
size = rstemp("File Data").ActualSize
chunk = rstemp("File Data").GetChunk(size)
Response.Clear
Response.ContentType = "image/JPEG"
Response.BinaryWrite chunk
%>
Anropet till den filen är:
<%if rstemp("File Data").ActualSize > 0 then%>
<img src="binarywriteimage.asp" border="1" alt="<%=rstemp("bilnamn")%>">
<%end if%>
Tacksam för hjälp!
--------------
MarcusSv: Ang. access och bilder
<code>
<%
Dim rs
Dim conn
Dim field
Dim strSQL
Dim strPath
Dim MedlemsId
Const dbName = "admin/db/bilar.mdb"
Response.Buffer = True
MedlemsId = "" & Request.QueryString("MedlemsId")
If IsNumeric(MedlemsId) Then
strPath = Server.MapPath(dbName)
Set conn = Server.Createobject("ADODB.Connection")
conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strPath
strSQL = "SELECT * FROM bilar WHERE MedlemsId = " & MedlemsId
Set rs = Server.Createobject("ADODB.Recordset")
rs.Open strSQL, conn
Set field = rs("File Data")
Response.Clear
Response.ContentType = "image/JPEG"
Response.BinaryWrite field.GetChunk(field.ActualSize)
Set field = Nothing
rs.Close
Se rs = Nothing
conn.Close
Set conn = Nothing
Else
Response.Write "<HTML><BODY>Ange MedlemsId. T.Ex. DinSida.asp?MedlemsId=15</BODY></HTML>"
End If
Response.End
%>
</code>Sv: Ang. access och bilder
Vad är felet?
<code>
<%
Dim rstemp
Dim conntemp
Dim field
Dim strSQL
Dim strPath
Dim MedlemsId
Const dbName = "admin/db/bilar.mdb"
Response.Buffer = True
MedlemsId = "" & Request.Cookies("AHKid")
If IsNumeric(MedlemsId) Then
strPath = Server.MapPath(dbName)
Set conntemp = Server.Createobject("ADODB.Connection")
conntemp.Open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strPath
strSQL = "SELECT * FROM bilar WHERE medlemsid = " & MedlemsId
Set rstemp = Server.Createobject("ADODB.Recordset")
rstemp.Open strSQL, conntemp
Set field = rstemp("File Data")
Response.Clear
Response.ContentType = "image/JPEG"
Response.BinaryWrite(field.GetChunk(field.ActualSize))
Set field = Nothing
rstemp.Close
Set rstemp = Nothing
conntemp.Close
Set conntemp = Nothing
end if
%>
</code>Sv: Ang. access och bilder
Visa gärna koden för sidan där din bild anropas. Ex. <IMG src="Image.asp">Sv: Ang. access och bilder
<code>
<%
Dim rstemp
Dim conntemp
Dim field
Dim strSQL
Dim strPath
Dim MedlemsId
Const dbName = "admin/db/bilar.mdb"
Response.Buffer = True
MedlemsId = "" & Request.Cookies("AHKid")
If IsNumeric(MedlemsId) Then
strPath = Server.MapPath(dbName)
Set conntemp = Server.Createobject("ADODB.Connection")
conntemp.Open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strPath
strSQL = "SELECT * FROM bilar WHERE medlemsid = " & MedlemsId
Set rstemp = Server.Createobject("ADODB.Recordset")
rstemp.Open strSQL, conntemp
Set field = rstemp("File Data")
Response.Clear
Response.ContentType = "image/JPEG"
Response.BinaryWrite(field.GetChunk(field.ActualSize))
Set field = Nothing
rstemp.Close
Set rstemp = Nothing
conntemp.Close
Set conntemp = Nothing
end if
%>
</code>
Koden från sidan som anropar:
<code>
dim conntemp, cnpath, sqltemp, rstemp, myid, dbname
dbname="admin/db/bilar.mdb"
myid=request.cookies("AHKId")
set conntemp=server.createobject("adodb.connection")
cnpath="DBQ=" & server.mappath(dbname)
conntemp.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath
sqltemp="select * from bilar where medlemsid="
sqltemp=sqltemp & myid & ""
set rstemp=conntemp.execute(SQLTemp)
If Not rstemp.EOF Then
While Not rstemp.EOF
response.Write("<table width='500' border='0'><tr valign='top'><td class='stdText'>")
%>
<img src="binarywriteimage.asp" border="1" alt="<%=rstemp("bilnamn")%>">
<%
response.Write("</td><td class='stdText'>")
response.Write("<table width='350' border='0'><tr valign='top'><td class='stdText' width='40'>")
response.Write("Bilnamn:</td><td class='stdText' width='230'>")
if rstemp("bilnamn") = "" then
response.Write("Inget namn sparat!")
else
response.Write(rstemp("bilnamn"))
end if
response.Write("</td></tr><tr><td class='stdText'>")
response.Write("Årsmodell:</td><td class='stdText' width='230'>")
response.Write(rstemp("arsmodell"))
response.Write("</td></tr><tr><td class='stdText' valign='top'>")
response.Write("Beskrivning:</td><td class='stdText' width='230'>")
response.Write(rstemp("beskrivning"))
response.Write("</td></tr><tr><td class='stdText'>")
response.Write("Datum / tid:</td><td class='stdText' width='230'>")
response.Write(rstemp("date") & " / " & rstemp("time"))
response.Write("</td></tr><tr><td class='stdText'>")
response.Write(" </td><td align='right' class='stdText' width='230'>")
response.Write("Ändra uppgifter »")
response.Write("</td></tr><tr><td class='stdText'>")
response.Write("</td></tr></table></table>")
rstemp.MoveNext
Wend
else
response.Write("<table width='350' border='0'><tr valign='top'><td class='stdText'>")
response.Write("<b>Du har ännu inga bilder uppladdade!</b></td>")
response.Write("</tr></table>")
rstemp.close
conntemp.close
set rstemp=nothing
set conntemp=nothing
end if
%>
</code>
Kan du hjälpa mig lösa detta utan att ändra för mycket i koden skulle jag vara extremt tacksam. Jag behöver absolut inte använda cookies, håller som det är just nu på att ändra lite annat från cookie-innehåll till att istället hämta värdet från db.
Tack!
--------------
MarcusSv: Ang. access och bilder
Om du har en ränare som heter BilId, skulle det se ut så här:
binarywriteimage.asp
<code>
<%
Dim rstemp
Dim conntemp
Dim field
Dim strSQL
Dim strPath
Dim BilId
Dim MedlemsId
Const dbName = "admin/db/bilar.mdb"
Response.Buffer = True
BilId = "" & Request.QueryString("BilId")
MedlemsId = "" & Request.Cookies("AHKid")
If IsNumeric(BilId) Then
strPath = Server.MapPath(dbName)
Set conntemp = Server.Createobject("ADODB.Connection")
conntemp.Open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strPath
strSQL = "SELECT * FROM bilar WHERE BilId = " & BilId
Set rstemp = Server.Createobject("ADODB.Recordset")
rstemp.Open strSQL, conntemp
Set field = rstemp("File Data")
Response.Clear
Response.ContentType = "image/JPEG"
Response.BinaryWrite(field.GetChunk(field.ActualSize))
Set field = Nothing
rstemp.Close
Set rstemp = Nothing
conntemp.Close
Set conntemp = Nothing
end if
%>
</code>
<code>
<%
Function GetNamn(Value, EmptyValue)
If Len(Value) > 0 Then
GetNamn = Value
Else
GetNamn = EmptyValue
End if
End Function
Dim rstemp
Dim conntemp
Dim strSQL
Dim strPath
Dim MedlemsId
Const dbName = "admin/db/bilar.mdb"
Response.Buffer = True
MedlemsId = "" & Request.Cookies("AHKid")
If IsNumeric(MedlemsId) Then
strPath = Server.MapPath(dbName)
Set conntemp = Server.Createobject("ADODB.Connection")
conntemp.Open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strPath
strSQL = "SELECT * FROM bilar WHERE medlemsid = " & MedlemsId
If rstemp.EOF Then
response.Write "<TABLE width='350' border='0'>"
Response.Write "<TR valign='top'>"
Response.Write "<TD class='stdText'>Du har ännu inga bilder uppladdade!</TD>"
Response.Write "</TR>"
Response.Write "</TABLE>"
Else
Do
Response.Write "<TABLE width='500' border='0'>"
Response.Write "<TR valign='top'>"
Response.Write "<TD class='stdText'><img src=""binarywriteimage.asp?BilId=" & rstemp("BilId") & """ border=""1"" alt=""" & Server.HTMLEncode(rstemp("bilnamn")) & """></TD>"
Response.Write "<TD class='stdText'>
Response.Write "<TABLE width='350' border='0'>"
Response.Write "<TR valign='top'>"
Response.Write "<TD class='stdText' width='40'>Bilnamn:</TD>
Response.Write "<TD class='stdText' width='230'>" & GetNamn(rstemp("bilnamn"), "Inget namn sparat!") & "</TD>"
Response.Write "</TR>"
Response.Write "<TR>
Response.Write "<TD class='stdText'>Årsmodell:</TD>
Response.Write "<TD class='stdText' width='230'>" & Server.HTMLEncode(rstemp("arsmodell") & "</TD>
Response.Write "</TR>"
Response.Write "<TR>
Response.Write "<TD class='stdText' valign='top'>Beskrivning:</TD>
Response.Write "<TD class='stdText' width='230'>" & Server.HTMLEncode(rstemp("beskrivning")) & "</TD>
Response.Write "</TR>"
Response.Write "<TR><TD class='stdText'>Datum / tid:</TD>
Response.Write "<TD class='stdText' width='230'>" & Server.HTMLEncode(rstemp("date")) & " / " & Server.HTMLEncode(rstemp("time")) & "</TD>
Response.Write "</TR>"
Response.Write "<TR>
Response.Write "<TD class='stdText'> </TD>
Response.Write "<TD align='right' class='stdText' width='230'>Ändra uppgifter »</TD>
Response.Write "</TR>
Response.Write "</TABLE>"
Response.Write "</TD>"
Response.Write "</TR>"
Response.Write "</TABLE>"
rstemp.MoveNext
Loop Until rstemp.EOF
End If
rstemp.close
set rstemp = nothing
conntemp.close
set conntemp = nothing
Else
response.Write "<H3>Du är inte inloggad!</H3>"
End If
%>
</code>
Sv: Ang. access och bilder
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: ''
Du är en helt otrolig människa som hjälper mig med detta!
Om jag med din hjälp får det att fungera ska jag bjuda dig på en öl nästa gång du kommer till Sthlm!
-----------
MarcusSv: Ang. access och bilder
Från och med nu Andreas är du min ALLRA ALLRA bästa vän!
Helt jä--a underbart jobbat av dig!
Finns det något jag kan göra för att visa min uppskattning så säg till?
Har du något PG nummer så kan jag sätta in för en öl redan imorgon...om du inte kommer till Sthlm snart vill säga!
Tack!
----------
MarcusSv: Ang. access och bilder
Jag påstår att eventuella fel i koden är för utbildningssyfte. Tills motsatsen, att jag slarvar, är bevisad. ;o)
Då har jag en anledning till att resa till sthlm. ;o)
Får samla på mig tillräckligt mycket ölpengar för att tjäna in biljetpriset. Fast jag kanske bör nämna att jag är nykterist. ;o)Sv: Ang. access och bilder
jag har sovit gott nu med lösningen färskt i minnet.
Jag tänkte nästan att det var så att det var för utbildningssyfte. Det är klart att det ska vara så, annars är det inte ärligt programmerat. Mycket bra fixat!
Tack återigen, och även om du är nykterist så hör av dig när du är på väg till Sthlm så kan vi alltid dricka en cola. Något för att visa min uppskattning.
---------
Marcus