I ram1 listas de produkter som finns med i databasen. Om man klickar på en av produkterna i ram1 vill jag att information om den specifika produkten visas i ram2. För tillfället visas all information om alla produkter om jag klickar på en av produkterna. Någon som vet hur man löser det här problemet?
Visa post från databas?
16 svar · 353 visningar · startad av magnus_n
Vad menar du? Vad är en "ram" i det här fallet?
Hur är produkterna lagrade?
SELECT * FROM [i]produktdatabas[/i] WHERE [i]produktID[/i] = 1
Något åt det hållet möjligtvis?
charkprodukter.asp består av ram1 (chark.asp) placerad till vänster samt ram2 (produktsvar.asp) som är placerad till höger.
Då jag klickar på en produkt i chark.asp ska tillhörande information visas till höger i produktsvar.asp. Jag vill alltså att innehållet i produktsvar.asp ska ändras beroende på vilken produkt man klickar på.
I chark.asp listar du alla produkter. Lägg till produktens id-nummer i querystring i länken.
<a href="produktsvar.asp?id=<%=objRS("ID")%>" target="högerframen"><%=objRS("produkten") %></a>
I produktsvar.asp hämtar du upp querystringen och använder den som villkor i din SQL-fråga.
strSQL = "SELECT * FROM tabellen WHERE ID = " & Request.Querystring("id")
(Du får givetvis ändra så objektnamnen stämmer)
Mvh,
Koden i chark.asp fungerar bra, men jag får det inte att stämma i produktsvar.asp:
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DBQ=" & Server.MapPath("admin/jm.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Produkt WHERE ProduktID = " & Request.Querystring("id")
%>
<ul>
<li><b><% =RecSet("Namn") %></b>
Får då följande feltyp:
Feltyp:
ADODB.Recordset (0x800A0CC1)
Objektet kunde inte hittas i mängden med det begärda namnet eller numret. (på raden <% =RecSet("Namn") %>)
Jag vill här visa produktens namn till att börja med för att sen fylla på md ytterligare produktinformation som hämtas från db:n.
Du glömmer att fylla recordsettet med data...
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DBQ=" & Server.MapPath("admin/jm.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Produkt WHERE ProduktID = " & Request.Querystring("id")
[b]Set RecSet = Connect.Execute (strSQL, , 128) [/b]
%>
<ul>
<li><b><% =RecSet("Namn") %></b>
Tack, nu fungerar det! Sista frågan (förhoppningsvis):
Om jag nu vill hämta info från en annan tabell (Fetthalt) i db:n hur ser då koden ut. Något i stil med:
<% Set RecSet2 = Server.CreateObject("ADODB.Recordset")
strSQL2 = "SELECT * FROM Fetthalt WHERE ProduktID = " & Request.Querystring("id")
Set RecSet2 = Connect.Execute (strSQL2)%>
<% =RecSet2("Fetthalt") %>
Det är i alla fall inget syntaxfel i koden. Den ser ut att fungera under förutsättning att tabell- och fältnamn samt villkoret i SQL-frågan stämmer.
Mvh,
Provade att lägga in koden men följande feltyp dyker upp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/magnus/produktsvar.asp, line 39
Rad 39: <% Set RecSet2 = Connect.Execute (strSQL2)%>
???
Då finns kanske inte tabellen Fetthalt, eller så finns inte fältet ProduktID i den tabellen.
Felmeddelandet betyder att man skrivet ett objektnamn (tabell / fält) i SQL-frågan som är felstavat / inte finns.
Mvh
magnus_n skrev:
Aha, men nu får jag följande:
Inkompatibla typer: 'RecSet'
Jo... det är helt riktigt :r
Det skulle inte vara 128 utan 1. Lessen över det lilla klavertrampet.
Löste problemet genom att skriva in följande kod i produktsvar.asp:
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DBQ=" & Server.MapPath("admin/jm.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT Namn, Bild, Info, Köttmängd, Fetthalt, Förvaring, Användningsområde, Telefon, Övrigt FROM Produkt, Svenskkottravara, Kottmangd, Fetthalt, Kylvara, Anvandningsomrade, Konsumentkontakt, Ovrigt WHERE ProduktID = " & Request.Querystring("id")
Set RecSet = Connect.Execute (strSQL)%\>
<ul>
<li><b><% =RecSet("Namn") %></b><br>
<br>
<img src="<% =RecSet("Bild") %>"<br>
<br>
<br>
<b><% =RecSet("Info") %></b><br>
<br>
<b>Köttmängd: </b><% =RecSet("Köttmängd") %><br>
\<b\>Fetthalt: \</b\>\<% =RecSet("Fetthalt") %\>\<br\>
\<br\>
\<b\>Förvaring: \</b\>\<% =RecSet("Förvaring") %\>\<br\>
\<b\>Användningsområde: \</b\>\<% =RecSet("Användningsområde") %\>\<br\>
\<br\>
\<b\>Konsumentkontakt: \</b\>\<% =RecSet("Telefon") %\>\<br\>
\<b\>Övrigt: \</b\>\<% =RecSet("Övrigt") %\>\<br\>
Oj, har du en tabell för varje värde? Du borde lagra allt i samma tabell. Den datastruktur du har nu är, ursäkta, rent förkastlig. :)
Mvh
hmm? jag trodde jag löst problemet med att lista specifik info för tillhörande produkt, men ej...
Namn och bild hämtas korrekt från db:n men övrig info blir densamma för exv fetthalt o köttmängd... någon???