webForumDet fria alternativet

Visa post från databas?

16 svar · 353 visningar · startad av magnus_n

magnus_nMedlem sedan maj 200317 inlägg
#1

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?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Vad menar du? Vad är en "ram" i det här fallet?

Engine^Medlem sedan dec. 20003 887 inlägg
#3

Hur är produkterna lagrade?

SELECT * FROM [i]produktdatabas[/i] WHERE [i]produktID[/i] = 1

Något åt det hållet möjligtvis?

magnus_nMedlem sedan maj 200317 inlägg
#4

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å.

@ndersMedlem sedan juni 200032 969 inlägg
#5

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,

magnus_nMedlem sedan maj 200317 inlägg
#6

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.

Engine^Medlem sedan dec. 20003 887 inlägg
#7

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>
magnus_nMedlem sedan maj 200317 inlägg
#8

Aha, men nu får jag följande:

Inkompatibla typer: 'RecSet'

@ndersMedlem sedan juni 200032 969 inlägg
#9

Så här borde det se ut:

Set RecSet = Connect.Execute (strSQL)

Mvh,

magnus_nMedlem sedan maj 200317 inlägg
#10

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") %>

@ndersMedlem sedan juni 200032 969 inlägg
#11

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,

magnus_nMedlem sedan maj 200317 inlägg
#12

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)%>

???

@ndersMedlem sedan juni 200032 969 inlägg
#13

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

Engine^Medlem sedan dec. 20003 887 inlägg
#14

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.

magnus_nMedlem sedan maj 200317 inlägg
#15

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\>
@ndersMedlem sedan juni 200032 969 inlägg
#16

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

magnus_nMedlem sedan maj 200317 inlägg
#17

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???

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