04. maj 2002 - 10:34Der er
89 kommentarer og 1 løsning
En sag for questis og eagleeye
Ang. spørgsmål 205854
Tak questis. Ja, det virker nu, meeeeeeeeeeeeen havd nu, når den som har logget sig på korrekt går op i url'en og ændrer id-nummeret, så er man lige pludselig på en anden side, og det var jo ikke meningen. Undskyld jeg ikke svarede i går, men jeg blev så glad for at det virkede, at jeg skyndte mig i seng.
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Du kan enda også benytte session("brugerID") til før at tjekke om man er logget ind på i index.asp filen...:
<% 'hvis session("brugerID") er tom så er man ikke logget ind. if session("brugerID") = "" then response.write "du skal være logget ind" else ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' Hent fra databasen afhængig af værdien id fra URL strSQL = "Select * From login Where Id = " & session("brugerID") '<--her stod request("ID") Set rs = myConn.Execute(strSQL) ' Rydder op efter os myConn.Close Set myConn = Nothing end if %>
index.asp siden her er ligeglad havd der står i url'en..
Har du noget i den database?? du har vist en kolonne username så vidt jg husker fra sidst.. Til føj disse liner: if not rs.EOF then response.write rs("username") end if
efter: Set rs = myConn.Execute(strSQL) if not rs.EOF then response.write rs("username") end if
Jeg har både en kolonne username og en kolonne password! Gider du kigge forbi spørgsmålet i aften (eller på et andet tidspunkt), da jeg er på vej ud af huset.
Vil det sige, at jeg skal sætte det du skriver ind på siden index.asp
Jeg paster det lige, kan du så ikke vise det rigtige sted?
<% ' bruges til at tjekke om brugeren finde i db ved login ' Sender resultaterne fra tilføj links til databasen ' Database connection ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
strUsername = Trim(Replace(Request.Form("username"),"'","")) strPassword = Trim(Replace(Request.Form("password"),"'","")) strSQL ="SELECT * FROM login WHERE UCase(username) = '" & UCase(strUsername) & "' AND UCase(Password) = '" & UCase(strPassword) & "'" set rs = myConn.execute(strSQL) 'først tjekke om brugeren findes ved at tjekke om recordsetet er tomt. if not rs.EOF then if LCase(rs("username")) = LCase(strUsername) then 'LOGIN OK session("brugernavn") = LCase(strUsername) session("brugerID") = rs("Id") Response.Redirect("index.asp?id=" & session("brugerID")) else 'INGEN BRUGER FUNDET 'Eller en blev fundet men databasen bruger navn passer ikke med det 'indtastede brugernavn end if else 'brugeren ikke fundet lave det som skal ske hvis brugeren ikke er fundet her end if myConn.Close Set myConn = Nothing
%>
Ellers er det bare lækkert at login virker nu, men jeg vil gerne have det sidste med.
3. index2.asp ser nu sådan ud. Bemærk at der er indsat en forespørgsel:
<html> <head> <title>Ny side 1</title> </head>
<body>
<% 'hvis session("brugerID") er tom så er man ikke logget ind. if session("brugerID") = "" then response.write "du skal være logget ind" else ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' Hent fra databasen afhængig af værdien id fra URL
strSQL = "Select * From login Where Id = " & session("brugerID") '<--her stod request("ID") ' SQL forespørgsel strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";" ' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then ' Hvis der er fundet poster på søgningen Response.Write "<h4 align=center><font face=Verdana>Her er resultatet af din søgning</font></h4><hr><br>" Response.Write "<table border=0>"
Response.Write "<tr bgcolor=blue><th>Id</th><th ><font color=white face=verdana size=2>Bilmærke</font></th><th>Model</th><th>Årgang</th><th>Km</th><th>Pris</th><th>Forhandler</th></tr>" Do While Not rs.EOF Response.Write "<tr bgcolor=red><td><font color=white>" & rs("Id") & "</font></td>" Response.Write "<td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Model") & "</td>" Response.Write "<td>" & rs("Aargang") & "</td>" Response.Write "<td>" & rs("Km") & "</td>" Response.Write "<td>" & rs("Pris") & "</td>" Response.Write "<td>" & rs("Forhandler") & "</td></tr>" rs.MoveNext Loop Response.Write "</table>" Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<p>Der er ikke fundet noget på denne søgning</p>" End If
' Rydder op efter os myConn.Close Set myConn = Nothing end if %> </body>
</html>
Det kniber for mig overskue det nu hvor jeg har ændret noget. Håber I kigger forbi!
<body> <% ' bruges til at tjekke om brugeren finde i db ved login ' Sender resultaterne fra tilføj links til databasen ' Database connection ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
strUsername = Trim(Replace(Request.Form("username"),"'","")) strPassword = Trim(Replace(Request.Form("password"),"'","")) strSQL ="SELECT * FROM login WHERE UCase(username) = '" & UCase(strUsername) & "' AND UCase(Password) = '" & UCase(strPassword) & "'" set rs = myConn.execute(strSQL) if not rs.EOF then response.write rs("username") end if 'først tjekke om brugeren findes ved at tjekke om recordsetet er tomt. if not rs.EOF then if LCase(rs("username")) = LCase(strUsername) then 'LOGIN OK session("brugernavn") = LCase(strUsername) session("brugerID") = rs("Id") Response.Redirect("index2.asp") else 'INGEN BRUGER FUNDET 'Eller en blev fundet men databasen bruger navn passer ikke med det 'indtastede brugernavn end if else 'brugeren ikke fundet lave det som skal ske hvis brugeren ikke er fundet her end if myConn.Close Set myConn = Nothing
Er det problemet? Hvordan retter jeg den fejl. Lige for at få det helt på det rene. Er det helt tosset, det jeg har gang i. Mit mål er et login-system, hvor brugeren kan logge ind på sin egne side, som så giver mulighed for at tilføje, slette og opdatere egne data i en db. Andre må naturligvis ikke kunne komme ind og gøre disse ting. Er det muligt, hvis ovenstående kommer til at virke?
Ja det kan komme til at virke det. Prøv at lave din index2.asp sådan, den udskriver det bruger navn som man er logget ind med.:
<% 'hvis session("brugerID") er tom så er man ikke logget ind. if session("brugerID") = "" then response.write "du skal være logget ind" else ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
strSQL = "Select * From login Where Id = " & session("brugerID") Set rs = myConn.Execute(strSQL) if NOT rs.EOF then response.write rs("username") end if myConn.Close Set myConn = Nothing end if %>
OK. Har prøvet ovenstående. Det udskriver username, når man er korrekt logget på. Hvis man ikke logger korrekt på, så ryger man til login2.asp. Er det rigtigt?
Ja hvis man ikke er logget rigtig ind, ja så bliver den på login2.asp siden.
Du kan udvide din login.asp fil til enten at redirecte til login.htm eller skrive en besked....Der er en if sætning som afgøre om man er korrekt logget ind:
'først tjekke om brugeren findes ved at tjekke om recordsetet er tomt. if not rs.EOF then if LCase(rs("username")) = LCase(strUsername) then 'LOGIN OK session("brugernavn") = LCase(strUsername) session("brugerID") = rs("Id") Response.Redirect("index2.asp") else 'INGEN BRUGER FUNDET 'Eller en blev fundet men databasen bruger navn passer ikke med det 'indtastede brugernavn end if else 'brugeren ikke fundet lave det som skal ske hvis brugeren ikke er fundet her 'Her kan du udskrive en besked eller lave en redirect response.write "Forkert password eller brugernavn, prøv igen." '<--- ny linie end if
Ja det virker også. Vil du hjælpe mig med det sidste?
Jeg har vel nu en side (index2.asp) som kan bruges af forskellige brugere med korrekt login.
Jeg vil gerne have, at den enkelte bruges skal kunne følgende på sin side, og jeg har også de scripts, som skal til, men jeg ved ikke hvordan jeg linker dem til index2.asp.
Først et script, som henter brugerens data i db'en:
' SQL forespørgsel strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";" ' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then ' Hvis der er fundet poster på søgningen Response.Write "<h4 align=center><font face=Verdana>Her er resultatet af din søgning</font></h4><hr><br>" Response.Write "<table border=0>"
Response.Write "<tr bgcolor=blue><th>Id</th><th ><font color=white face=verdana size=2>Bilmærke</font></th><th>Model</th><th>Årgang</th><th>Km</th><th>Pris</th><th>Forhandler</th></tr>" Do While Not rs.EOF Response.Write "<tr bgcolor=red><td><font color=white>" & rs("Id") & "</font></td>" Response.Write "<td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Model") & "</td>" Response.Write "<td>" & rs("Aargang") & "</td>" Response.Write "<td>" & rs("Km") & "</td>" Response.Write "<td>" & rs("Pris") & "</td>" Response.Write "<td>" & rs("Forhandler") & "</td></tr>" rs.MoveNext Loop Response.Write "</table>" Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<p>Der er ikke fundet noget på denne søgning</p>" End If ---------------------------------------------------
Så et script, som giver brugeren mulighed for at indsætte data i db'en:
Ja jeg er med endu... Ja det kan godt komme til at virke... Jeg prøver lige at skrive hvordan jeg har læst din sidste kommentar:
På siden index2.asp vil du havde en liste som hendter brugerens data ud: ' SQL forespørgsel strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";"
Så skal der være X- antal muligheder for brugeres bla andet Slet, Indsæt og Opdater? Jeg vil lave det sådan at når man udskriver alle de biler brugeren har i en tabel sætter man et slet link ind i tabellen. Ligeledes med opdater hvis det skal være muligt.
Så et sted på siden øverst/nederst et knap/link til indseat siden hvor en bruger har mulighed for at indtaste data omkring en bil.
Du har alderede lavet sådan at bilerne bliver skrevet ud i en tabel på din index2.asp side. I det loop vil jeg lave en ekstra kolonne med et slet ud fra hver bil: Response.Write "<td><a href='slet.asp?id=" & rs("bilID") & "'>slet</a></td>"
Tak for svaret. Jeg var hoppet af i går. Har arbejdet sent i dag, så jeg har ikke haft tid til at prøve dit forslag. Skal arbejde igen nu i aften, så det bliver sent, hvis jeg får lavet noget. Gider du kigge forbi igen på et eller andet tidspunkt, da jeg er meget hooked på at få lavet det færdigt, men det kniber som sagt med tiden. /riishoj
strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";"
i min index2.asp???
Har prøvet forskellige muligheder, men får fejl. Det hele skal stå i én linje, ikke sandt?
<% 'hvis session("brugerID") er tom så er man ikke logget ind. if session("brugerID") = "" then response.write "du skal være logget ind" else ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
strSQL = "Select * From login Where Id = " & session("brugerID")
Response.Write "<a href='indsaet.htm'>indsaet.htm</a>" Set rs = myConn.Execute(strSQL) if NOT rs.EOF then response.write rs("username") end if myConn.Close Set myConn = Nothing end if %>
Synes godt om
Slettet bruger
06. maj 2002 - 22:59#31
jo det hele skal stå i en linie..... da det hele er en sammenhængende SQL
<% 'hvis session("brugerID") er tom så er man ikke logget ind. if session("brugerID") = "" then response.write "du skal være logget ind" else ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
strSQL = "Select * From login Where Id = " & session("brugerID") strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";"
Response.Write "<a href='indsaet.htm'>indsaet.htm</a>" Set rs = myConn.Execute(strSQL) if NOT rs.EOF then response.write rs("username") end if myConn.Close Set myConn = Nothing end if %>
Synes godt om
Slettet bruger
06. maj 2002 - 23:09#34
det du gør der giver i hvertfald fejl, der har du 2 SQL med samme navn
strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & Session("brugerID") & ";"
Ja, det gør. Men som du kan se er tabellen "biler" joinet med tabellen "forhandler", så den bruger der logger på kun får udskrevet sine egne data fra db'en. Dette er hele ideen i systemet. Jeg har før fået det til at virke, men ikke i forbindelse med et loginsystem.
Så du skal altså havde forhandlerID til at passe med ID ved login.. BrugerID/forhandlerID bliver gemt ved loin i denne linie: session("brugerID") = rs("Id")
Så det skulle man bare kunne bruger i en SQL som sådan her: strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & Session("brugerID") & ";"
Jeg var til bowlings afslutning i går aftes :) Ja jeg kommer online i aften.
Nærste tabel i SQL-sætningen er for, findes for tabellen samt kolonnerne navn, forhandlerid?: du har denne: for.navn as Forhandler
du laver en INNER JION: FROM biler inner join forhandler as for.. Der er nu både en tabel samt en kolonne som omtalles forhadler. Prøv i første omgang at ungå at laves aliaser (AS) for tabeller og kolenner.
Prøv med Denne SQL, den regner med du har en tabel ved navn biler samt en ved navn for strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as ForhandlerNavn FROM biler inner join for ON biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & Session("brugerID") & ";"
ok.. det fordi rs("username") ikke findes i de tabeller og man forsøger at udskirve fra den efter SQL sætningen er kørt: Set rs = myConn.Execute(strSQL) if NOT rs.EOF then response.write rs("username") end if
Med denne SQL: strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as ForhandlerNavn FROM biler inner join for ON biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & Session("brugerID") & ";"
Kan du benytte rs("kolonnemnavn") til at udskrive dog skal kolonnenavnet ingå i SELECT'en dvs du kan udskriver følgende med rs("kolonnemnavn") ID, Bilmaerke, Model, Aargang, Km , Pris, samt ForhandlerNavn. Hvis man skriver "SELECT * FROM.." kan man udskive med alle de kolonner som er i tabellen.
Prøv at rette linie 24 til: response.write "ID:"& rs("ID") & " Navn : " & rs("ForhandlerNavn")
Ja nu får jeg ingen fejl og jeg får ganske rigtigt udskrevet id-nummer og forhandlernavn.
Men jeg skulle jo gerne have udskrevet de data brugeren har i db'en, altså dette herskal vel indsættes et eller andet sted
Then ' Hvis der er fundet poster på søgningen Response.Write "<h4 align=center><font face=Verdana>Her er resultatet af din søgning</font></h4><hr><br>" Response.Write "<table border=0>"
Du kan sådan set bare udskift linie 24 med din kode som uskriver sådan her:
strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";"
Response.Write "<a href='indsaet.htm'>indsaet.htm</a>" Set rs = myConn.Execute(strSQL) Response.Write "<h4 align=center><font face=Verdana>Her er resultatet af din søgning</font></h4><hr><br>"
if NOT rs.EOF then ' Hvis der er fundet poster på søgningen Response.Write "<table border=0>" Response.Write "<tr bgcolor=blue><th>Id</th><th ><font color=white face=verdana size=2>Bilmærke</font></th><th>Model</th><th>Årgang</th><th>Km</th><th>Pris</th><th>Forhandler</th></tr>" Do While Not rs.EOF Response.Write "<tr bgcolor=red><td><font color=white>" & rs("Id") & "</font></td>" Response.Write "<td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Model") & "</td>" Response.Write "<td>" & rs("Aargang") & "</td>" Response.Write "<td>" & rs("Km") & "</td>" Response.Write "<td>" & rs("Pris") & "</td>" Response.Write "<td>" & rs("Forhandler") & "</td></tr>" rs.MoveNext Loop Response.Write "</table>" end if myConn.Close Set myConn = Nothing
<% 'hvis session("brugerID") er tom så er man ikke logget ind. if session("brugerID") = "" then response.write "du skal være logget ind" else ' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";"
Response.Write "<a href='indsaet.htm'>indsaet.htm</a>" Set rs = myConn.Execute(strSQL) Response.Write "<h4 align=center><font face=Verdana>Her er resultatet af din søgning</font></h4><hr><br>"
if NOT rs.EOF then ' Hvis der er fundet poster på søgningen Response.Write "<table border=0>" Response.Write "<tr bgcolor=blue><th>Id</th><th ><font color=white face=verdana size=2>Bilmærke</font></th><th>Model</th><th>Årgang</th><th>Km</th><th>Pris</th><th>Forhandler</th></tr>" Do While Not rs.EOF Response.Write "<tr bgcolor=red><td><font color=white>" & rs("Id") & "</font></td>" Response.Write "<td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Model") & "</td>" Response.Write "<td>" & rs("Aargang") & "</td>" Response.Write "<td>" & rs("Km") & "</td>" Response.Write "<td>" & rs("Pris") & "</td>" Response.Write "<td>" & rs("Forhandler") & "</td></tr>" rs.MoveNext Loop Response.Write "</table>" end if myConn.Close Set myConn = Nothing end if %>
Arh jeg har sat en forkert SQL ind, det må du undskylde der skal være den dem Session("brugernavn") og ikke forhandlerId .... Prøv at ændre denne linie: strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join forhandler as for on biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & forhandlerId & ";"
Med denne: strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as ForhandlerNavn FROM biler inner join for ON biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & Session("brugerID") & ";"
Så, nu sker der noget!! der er dog 2 problemer. Kolonnen "Forhandler" bliver ikke udskrevet, og der bliver kun udskrevet én bil selvom forhandleren har flere biler i db'en. Eks. Toyota logger sig på. Der er 3 Toyotaer i d´'en men der bliver kun udskrevet en. Mht. den manglende forhandlerkolonne står der over udskriften
error '800a0cc1' ADO Could not find the object in the collection corresponding to the name or ordinal reference requested by the collection.
ok enten skal stSQL rettes: for.navn as ForhandlerNavn til for.navn as forhandler eller skal rs("Forhadler") rettes til rs("forhandlernavn"): Her er SQL'en rettet. strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler inner join for ON biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & Session("brugerID") & ";"
Prøv i sted at rette din SQL så det er en LEFT Join og ikke INNER JOIN, INNER join der namlig være lige mange i hver table .. Hvorimod LEFT join bare skal havde en i forhandler tabellen og medtager alle i bil tabellen:
strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris , for.navn as Forhandler FROM biler left join for ON biler.ForhandlerId = for.forhandlerId WHERE for.forhandlerId = " & Session("brugerID") & ";"
Hurraaaaaaaaaaaaa!!! Så hejser vi flaget, eagleeye. Nu virker det sgu!! Du skrev tidligere, at mht. at slette ville du sætte et slet link ind i tabellen. Hvordan gør man det?
Der findes 3 join typer: INNER, LEFT og RIGHT.. Hvor LEFT og RIGHT mere eller mindre er ens der kan bestemmes ved hvilken tabel man skriver først efter FROM i SQL-sætnigen.
INNER JOIN: tager en record hvor biler.forhandlerID = for.forhandlerID LEFT JOIN: tager alle records fra biler hvor biler.forhandlerID = for.forhandlerID
Håber det hjalp lidt eller så spørg igen..
Det jeg mente med link til en side som slette/rette i recorden kan laves sådan her, du skal udvide antallet af celler i din <tabel>:
Response.Write "<td>" & rs("Pris") & "</td>" Response.Write "<td>" & rs("Forhandler") & "</td>" '<--- her er en </td> fjernet/flyttet
Ja sådan her... For en sikkerheds skyld kan du includre forhandlerID (via session("brugerID")) til den SQL sætninge som sletter en bil. Så en forhandler kun kan slette sig egene biler:
strSQL = "DELETE FROM biler WHERE Id = " & Request.QueryString("bilid") & " AND forhandlerID = " & Session("brugerID") & "" connection.execute (strSQL)
Yes, det virker fint. Jeg ved godt, at nu burde jeg stoppe, sige tak og give dig en masse point, men jeg kan ikke dy mig! Det eneste jeg mangler nu, er at kunne opdatere en eksisterende post i tabellen. Jeg har allerede en indsaet.asp som via en form indsætter data i tabellen, men hvordan ændrer/opdaterer man eksisterende poster. Jeg ved der er en funktion der hedder UPDATE, men det er lige at få det strikket sammen så det virker i systemmet her.
Det er helt iorden... Du laver som du selv skrive en form som den ved indsæt, og så benytter du SQL UPDATE, du skal bare huske også at gemme ID på bilen i FORM'en så man let ka finde og opdater recorden i databsen. Du kan for at man ikke kan rette i det ligge den i et hidden felt: <input type="hidden" name="ID" value="<%=rs("ID")%>">
strSQL = "UPDATE biler SET Bilmaerke = '" & Request.Form("bilmaerke") & "', Model = '" & Request.Form("Model") & "', Aargang = '" & Request.Form("Aargang") & "', km = '" & Request.Form("km") & "', Pris = '" & Request.Form("Pris") & "' WHERE Id = " & Request.Form("ID")
Hvis nu km og Pris er defineret som tal i databasen skal der ikke ' omkring i SQL-sætningen. Du kan evt kikke på denne side omkrng SQL: http://www.w3schools.com/sql/default.asp
Lige et spørgsmål inden jeg prøver din løsning. Er det meningen, at der skal laves et link på hver række i tabellen, som når man trykker bringer en til opdater.asp og som indeholder id på bilen i den pågældende række? Hvis det er rigtig forstået, hvad skal jeg så sætte ind i index2.asp for at lave dette link?
Ja der skal være et link til hver bil man kan rette.
linier ser sådan ud hvis filen hedder opdater.asp, bilid bliver ført med over..: Response.Write "<td><a href='opdater.asp?bilid="&rs("ID")&"'>ret</a></td>"
Filen opdater:
<% 'database connection Her.
if request.servervariables("REQUEST_METHOD") = "POST" then strSQL = "UPDATE biler SET Bilmaerke = '" & Request.Form("bilmaerke") & "', Model = '" & Request.Form("Model") & "', Aargang = '" & Request.Form("Aargang") & "', km = '" & Request.Form("km") & "', Pris = '" & Request.Form("Pris") & "' WHERE Id = " & Request.Form("ID") conn.execute(strSQL) conn.Clsoe response.redirect("index2.asp") 'Send tilbage til hoved siden efter opdatering end if
strSQL = "SELECT * FROM biler WHERE ID = " request.Querystring("bilid") set rs = conn.execute(strSQL) if rs.not EOF then %> <html> <body> <!-- Lav HTML form --> <form action="opdater.asp" method="post"> <input type="text" name="bilmaerke" value="<%=rs("bilmaerke")%>"> <br> <input type="text" name="model" value="<%=rs("model")%>"> <br> <input type="text" name="Aargang" value="<%=rs("Aargang")%>"> <br> <input type="text" name="km" value="<%=rs("km")%>"> <br> <input type="text" name="pris" value="<%=rs("pris")%>"> <br> <input type="submit" name="Gem" value="Gem"> </form> </body> </html> <% end if conn.close %>
OK eagleeye, så er vi ved vejs ende. Alt virker nu. Du skal have mange tusind tak for din kæmpe hjælp og utrolige tålmodighed. Jeg har lært meget af det her, som jeg tror kan bringe mig til at forstå en lille smule af den komplicerede asp/sql-verden. Jeg kan godt gennemskue de forskellige funktioner, men får problemer når jeg skal kombinere tingene. Nå, det er jo ikke dit problem. Jeg har tænkt mig at slutte tråden her ved at give dig de 60 point og så oprette et nyt spørgsmål til 200 point, som du kan svare på. Er det OK.
Ja det er helt fint med mig. Dog for at ungå uheldigheder, og anmeldelser, så må du max give 200 ialt for dette spørgsmål. Der er vist en avanceret knap ud fra accepter hvor man kan angive antal points. Så hvis du opretter et nyt så skal det være på 200-60=140.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.