Hej och tack för bra sida och inlägg av alla kunniga personer där ute. Har ett problem och har sökt igenom forumet för att finna svar, men hittar inget som tycks lösa problemet. Hej, Jag har några förslag: Hmm.. mycket tack till er. har fått lite att tänka på. SKa nog ta och göra om lite. AH!! Stort tack, Anna-Karin. Otroligt. Mitt liv blev mycket lättare. ASP - "update" tabell i MS access databas problem. -Mycket att lä
Tacksam om någon har lust att ägna några minuter till läsa igenom och försöka lösa problemet. kortfattat: kan ej updatera information i min tabell (tblMovie) i MS acess databas.
Längre:
Jag har en sida där man kan bli medlem (medlemmarna sparas i en databas) och få olika möjligheter. När man loggar in (vilket funkar fint) skapas session("username") och session("pass"). Dessa använder jag för att bla hålla koll på att gästen är medlem och att kunna öppna databaser där jag behöver veta medlemmens namn och lösen.
Som medlem ska man kunna "köpa filmer". Detta genom att först gå till en sida (buy.asp) som läser filmernas namn + attribut från en databas (tabell: tblMovie).
tblMovie har följande fält: movieID, movieName, movieGenre och memberID.
memberID innehåller ingen information (och satt som "text").
Medlemmen ska gå till buy.asp och där välja filmen han vill "beställa". Varje film har ett id (movieID) och genom att fylla ID-nummret i en ruta och klicka på "köp" så ska cart_insert.asp köras.
Denna fil skall:
1.ta fram medlemmens ID (medlemmen får ett unikt id när denne registreras)
2.Leta reda på filmen (som gästen angivet på sidan buy.asp) i tblMovie och
lägga till medlemsID´t i fältet memberID i databasen.
Jag har kommit så långt att nummer 1 fungerar, men när den skall utföra steg 2, så blir det problem. Update måste användas (antar jag) då det redan finns en tom post för varje film - den post där medlems id´t skall ligga.
Anledningen till att jag vill lägga till medlemmens id till filmen, är för att då kan jag göra en kundvagn där medlemmen kan se vilka filmer han "beställt".
Koden för cart_insert.asp (där felet ligger) sidan kan testas: http://www32.brinkster.com/sputtilutti/index1.asp
<code>
<!-- Denna sida lägger till medlems id på filmens post -->
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("\sputtilutti\db\whatsnew.mdb")
' Först hämtar vi medlems id
strUser = Session("username")
strPass = Session("pass")
sql = "SELECT * from tblMember WHERE username = '" & strUser & "' and password = '" & strPass & "'"
Set rs = db.Execute(SQL)
idmember = rs("id")
' Set rs = nothing
' Set db = nothing
' Set sql = nothing
' db.close
%>
'steg 2
<%
'Set db = Server.CreateObject("ADODB.Connection")
'db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("\sputtilutti\db\whatsnew.mdb")
' Sedan sätter vi in det i databasen på filmens post.
SQL = "UPDATE tblMovie SET memberID = " & idmember & " WHERE movieID = " & Request.Form("choice") & ""
Set rs = db.Execute(SQL)
'Response.Write SQL
' Set rs = nothing
' Set db = nothing
' db.close
Response.Redirect "buy.asp"
%>
</code>
Använder brinkster. och request.form("choice") är alltså valet av film - filmens id.
FELET: det funkar inte att köra 'update'. Om ni går till sidan så märker ni att den kan skriva ut sql satsen, men den kan inte "executa" den.
Kan ni finna något fel - jag kan iallafall inte?
Detta är ett skolarbete och endast på skoj.
Tack för att du tog tid att läsa detta.
Mvh /Erik IverothSv: ASP - "update" tabell i MS access databas problem. -Mycket att l
Utan att veta felmeddelandet så får man gissa.
Eftersom du inte kan köra en UPDATE så antar jag att det kan vara någon rättighet som ställer till det, att t tex IUSR_xxxx inte har skrivrättigheter.
Är det inte det som är fel så måste vi få veta hur felmeddelandet ser ut för att kunna hjälpa till.Sv: ASP - "update" tabell i MS access databas problem. -Mycket att l&a
Du skriver att "memberID innehåller ingen information (och satt som "text")"
Eftersom det är ett textfält ska du ha enkelfnuttar runt memberID.
Eller rättare sagt runt idmember.
<code>
SQL = "UPDATE tblMovie SET memberID = '" & idmember & "' WHERE ...
</code>
Micke MicrosoftSv: ASP - "update" tabell i MS access databas problem. -Mycket att l
* Lagra idmember i Sessions variabeln istället för username och pass. Då slipper du slå upp den.
* Lägg till en tabell för ange vilka filmer användaren valt. Annars kan bara en användare välja en film åt gången.
* Lägg koden överst i buy.asp
Detta borde ge en seda som ser ut något sånt här:
<code>
<%
' Först hämtar vi medlems id
MemberId = Session("MemberId")
' Sedan sätter vi in det i databasen på filmens post.
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("\sputtilutti\db\whatsnew.mdb")
If IsNumeric("" & Request.Form("choice")) Then
SQL = "INSERT INTO tblMemberMovies (MemberID, movieID) VALUES (" & MemberId & ", " & Request.Form("choice") & ")"
Else
Response.Write "Du har inte markerat någon film!"
End If
db.Execute SQL
db.Close
Set db = nothing
'Response.Write SQL
Response.Redirect "buy.asp"
</code>
För att lista en användares valda filer skriver du då:
<%
' Först hämtar vi medlems id
MemberId = Session("MemberId")
' Sedan sätter vi in det i databasen på filmens post.
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("\sputtilutti\db\whatsnew.mdb")
SQL = "SELECT tblMovies.*" & vbCrLf & _
"FROM tblMemberMovies LEFT JOIN tblMovies ON tblMemberMovies.movieID = tblMovies.movieID" & vbCrLf & _
"WHERE MemberID = " & MemberId
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, db
Do Until rs.EOF
'Här listar du valda filmer:
rs.MoveNextr
Loop
rs.Close
Set rs = Nothing
db.Close
Set db = nothing
%>
</code>Sv: ASP - "update" tabell i MS access databas problem. -Mycket att l&a
Förlåt, glömde visst berätta om felmeddelandet. Jag använder brinkster, så jag får inget direkt felmeddelande. Det står bara att sidan inte kan visas ungefär.
Brinkster är väldigt dåligt på detta.
Ska göra lite ändringar på det mesta.
/erikSv: ASP - "update" tabell i MS access databas problem. -Mycket att l&a
Gå in uner Verktyg => Internet options => Avancerad.
Leta upp Visa vänliga felmeddelanden/show friendly errors och klicka ur den,
nu ska du får felmeddelandet i klartext, även hos Brinkster.
Det underlättar när man ska felsöka eftersom man els får reda på felet och dels på vilken rad det smäller.
/Anna-KarinSv: ASP - "update" tabell i MS access databas problem. -Mycket att l&a
Trodde att det var brinkster som inte kunde visa felmeddelande.
Tack!
/erik