Avatar billede riishoj Nybegynder
04. maj 2002 - 10:34 Der 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.

Mit spørgsmål minder vel lidt om spm. 206883
Avatar billede wilweb Nybegynder
04. maj 2002 - 10:40 #1
Bare ment som en hjælp:>
Det er lettere, hvis du henviser sådanne.
http://www.eksperten.dk/spm/205854
Avatar billede riishoj Nybegynder
04. maj 2002 - 10:48 #2
Ja, selvfølgelig.Tak skal du have.
Avatar billede eagleeye Praktikant
04. maj 2002 - 11:04 #3
har du fået svar med det jeg skrev i det andet?
Avatar billede riishoj Nybegynder
04. maj 2002 - 11:06 #4
Øh, hvad mener du?
Avatar billede eagleeye Praktikant
04. maj 2002 - 11:08 #5
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
%>
Avatar billede riishoj Nybegynder
04. maj 2002 - 11:17 #6
Det ændrer ikke noget. Jeg kan stadig gå i url'en og ændre id-nummer og så komme ind på en anden side!
Avatar billede eagleeye Praktikant
04. maj 2002 - 11:24 #7
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
Avatar billede eagleeye Praktikant
04. maj 2002 - 11:26 #8
Når du så redirector i på din login.asp side behøver du ikke ?id=33 længere:

Denne:
Response.Redirect("index.asp?id=" & session("brugerID"))
Rettes til:
Response.Redirect("index.asp")
Avatar billede riishoj Nybegynder
04. maj 2002 - 11:29 #9
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.
Avatar billede eagleeye Praktikant
04. maj 2002 - 11:32 #10
Ok.. Jeg er også på vej ud.. det bliver først i morgen.
Avatar billede Slettet bruger
04. maj 2002 - 11:37 #11
det er pga. du skal lave et sikkerheds tjek på den nye side, dette kan du gøre ved at få den til at tjekke i din database om

Sesion brugerID er = Request.Querystring("id")
Avatar billede Slettet bruger
04. maj 2002 - 11:41 #12
ikke i din databas, kun tjekke om disse to er lig hinanden
Avatar billede riishoj Nybegynder
04. maj 2002 - 18:05 #13
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.
Avatar billede riishoj Nybegynder
04. maj 2002 - 22:21 #14
Lukker for i dag. Jeg håber, at I er med i morgen :)
Avatar billede riishoj Nybegynder
05. maj 2002 - 11:31 #15
Kan skisme ikke få det til at virke!! Prøver lige at samle op

1. login2.htm ser nu sådan ud - der burde ikke være nogen problemer:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Ny side 1</title>
</head>

<body>

<form target='_parent' action='login2.asp' method='post'>
<input name='username'>
<p>
<input name='password' maxlength='8' type='password'>
</p>
<p>
<input type='submit' value='login'>



</p>
</form>

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>

</html>

2. login2.asp ser nu sådan ud:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Ny side 1</title>
</head>

<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

%>


</body>

</html>
Avatar billede riishoj Nybegynder
05. maj 2002 - 11:33 #16
Kom til at bytte om på rækkefølgen 2 og 3
Avatar billede eagleeye Praktikant
05. maj 2002 - 12:59 #17
i index2.asp bruger du en variable i din SQL-sætning: forhandlerId men den bliver ikke sat til noget inden den bliver brugt
Avatar billede riishoj Nybegynder
05. maj 2002 - 13:06 #18
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?
Avatar billede riishoj Nybegynder
05. maj 2002 - 13:36 #19
eagleeye> Er du på endnu?
Avatar billede eagleeye Praktikant
05. maj 2002 - 15:04 #20
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
%>
Avatar billede riishoj Nybegynder
05. maj 2002 - 15:19 #21
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?
Avatar billede eagleeye Praktikant
05. maj 2002 - 15:32 #22
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
Avatar billede riishoj Nybegynder
05. maj 2002 - 16:00 #23
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:

Formen

<form action="indsaet.asp" method="post">
<input type="text" name="Bilmaerke">
<p><input type="text" name="Model">
</p>
<p>
<input type="text" name="Aargang">
</p>
<p>
<input type="text" name="Km">
</p>
<p>
<input type="text" name="Pris">
</p>
<p>
<input type="text" name="Forhandler">

</p>
<p>

<input type="submit" value="Gem">
</p>
</form>

Scriptet

<%
' Databaseforbindelse
ConnString = "DSN=riishojwebsoftdkdsn"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnString

' SQL sætning opbygges
strSQL = "Insert into biler (Bilmaerke,Model,Aargang,Km,Pris,Forhandler) values('" & Request.Form("Bilmaerke") & "','" & Request.Form("Model") & "','" & Request.Form("Aargang") & "','" & Request.Form("Km") & "','" & Request.Form("Pris") & "','" & Request.Form("Forhandler") & "')"
Conn.Execute(strSQL)
' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

-----------------------------------------------

Så et script, som giver brugeren mulighed for at slette data i db'en:

Formen

<form action="slet.asp" method="post">
<input type="text" name="RecordToDelete">
<input type="submit" value="Delete">
</form>

Scriptet

<%
' Databaseforbindelse
ConnString = "DSN=riishojwebsoftdkdsn"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnString


' SQL sletter record
strSQL = "Delete from biler where Id = " & replace(request.form("RecordToDelete"),"'","''")
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

Kan det mon komme til at virke? Spenderer gerne flere point for et vellykket resultat!!
Avatar billede riishoj Nybegynder
05. maj 2002 - 18:12 #24
eagleeye> Er du med endnu?
Avatar billede eagleeye Praktikant
05. maj 2002 - 22:47 #25
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>"
Avatar billede riishoj Nybegynder
06. maj 2002 - 18:47 #26
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
Avatar billede eagleeye Praktikant
06. maj 2002 - 20:43 #27
Jeps jeg holder øje med min mailbox...
Avatar billede riishoj Nybegynder
06. maj 2002 - 22:55 #28
Når ikke noget i dag, da jeg er helt død. Prøver i morgen!
Avatar billede riishoj Nybegynder
06. maj 2002 - 22:57 #29
Prøver lige alligevel!

Hvor skal jeg indsætte

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?
Avatar billede riishoj Nybegynder
06. maj 2002 - 22:58 #30
Her er index2.asp

<%
'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
%>
Avatar billede Slettet bruger
06. maj 2002 - 22:59 #31
jo det hele skal stå i en linie..... da det hele er en sammenhængende SQL
Avatar billede Slettet bruger
06. maj 2002 - 23:00 #32
hvad er din fejl du får ?
Avatar billede riishoj Nybegynder
06. maj 2002 - 23:05 #33
Er det her jeg skal indsætte linjen?

<%
'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
%>
Avatar billede 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
Avatar billede riishoj Nybegynder
06. maj 2002 - 23:11 #35
Øh, hva' så?
Avatar billede eagleeye Praktikant
06. maj 2002 - 23:16 #36
Er forhandlerId det samme som brugerID?
Avatar billede riishoj Nybegynder
06. maj 2002 - 23:16 #37
Ja, det mener jeg.
Avatar billede riishoj Nybegynder
06. maj 2002 - 23:22 #38
forhandlerId i tabellen "forhandler" svarer til Id i tabellen "login"
Avatar billede eagleeye Praktikant
06. maj 2002 - 23:27 #39
Så skal du havde den store SQL til denne:

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") & ";"
Avatar billede riishoj Nybegynder
06. maj 2002 - 23:32 #40
Giver følgende fejl!

error '800a0cc1'

ADO Could not find the object in the collection corresponding to the name or ordinal reference requested by the collection.

/Biler_paa_Vestfyn/index2.asp, line 24
Avatar billede riishoj Nybegynder
06. maj 2002 - 23:45 #41
eagleeye>Er du der endnu eller skal vi stoppe for i dag?
Avatar billede riishoj Nybegynder
06. maj 2002 - 23:56 #42
Stopper for i dag. Håber du kigger forbi spm i morgen!!!
Avatar billede eagleeye Praktikant
06. maj 2002 - 23:58 #43
Jeg syntes vi skal stoppe jeg skal på arbejde i mogen.
Den brokker sig over et navn i list efter SELECT ID, ....
Avatar billede riishoj Nybegynder
07. maj 2002 - 15:00 #44
Hej eagleeye! Jeg kan se, at du er online. Tror du, at vi kan komme videre?
Avatar billede eagleeye Praktikant
07. maj 2002 - 15:19 #45
ja men jeg er ført hjemme fra arbejde om 45 min til 1 time. Så skal jeg afsted ige 17.30.. Men vi kan da se om vi ikke kan nå lidt.
Avatar billede riishoj Nybegynder
07. maj 2002 - 15:31 #46
OK. Det lyder godt. Skal selv afsted fra 17.30-ca. 21.30 (træner jollesejlere i den lokale sejlklub), men får sikkert tid til at lave noget derefter.
Avatar billede eagleeye Praktikant
07. maj 2002 - 16:37 #47
Det du vil skrive ud på index2.asp siden kommer det fra Biler tabellen i databasen?
Avatar billede riishoj Nybegynder
07. maj 2002 - 16:44 #48
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.
Avatar billede eagleeye Praktikant
07. maj 2002 - 16:57 #49
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") & ";"
Avatar billede riishoj Nybegynder
07. maj 2002 - 17:05 #50
Sådan har jeg opså skrevet i index2.asp! Prøv lige at kigge på login2.asp. Skal keg ikke ændre

session("brugerID") = rs("Id")

til

session("forhandlerID") = rs("Id")
Avatar billede eagleeye Praktikant
07. maj 2002 - 17:11 #51
Det kan du godt, men så skal du også rette i din SQL'sætning:
WHERE for.forhandlerId = " & Session("brugerID") & ";"

Til:
WHERE for.forhandlerId = " & Session("forhandlerID") & ";"
Avatar billede riishoj Nybegynder
07. maj 2002 - 17:16 #52
Jeg har jo ikke noge ønske om at ændre, det skulle kun være for at få skidtet til at virke. Som det er nu får jeg meddelelse

error '800a0cc1'

ADO Could not find the object in the collection corresponding to the name or ordinal reference requested by the collection.
Avatar billede eagleeye Praktikant
07. maj 2002 - 17:23 #53
Ok dek kan tyde på den ikke kan finde et af de navne der står efter SELECT

Findes alle disse kolonner i (ID, Bilmaerke, Model, Aargang, Km , Pris) i tabellen Biler?
Avatar billede riishoj Nybegynder
07. maj 2002 - 17:24 #54
Ja de gør.
Avatar billede riishoj Nybegynder
07. maj 2002 - 17:40 #55
Jeg bliver nødt til at smutte nu. Kigger du forbi senere i aften?
Avatar billede riishoj Nybegynder
07. maj 2002 - 22:44 #56
Er stået af for i aften. Håber du kigger forbi i morgen. Det skal bare lykkes at få det til at virke (håber jeg da)
CU/riishoj
Avatar billede eagleeye Praktikant
08. maj 2002 - 08:29 #57
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") & ";"
Avatar billede riishoj Nybegynder
08. maj 2002 - 21:19 #58
Undskyld at jeg ikke har svaret dig, men jeg har gæster i  aften og har nu fået for meget rødvin. Håber at vi kan kigge på det i morgen?
Avatar billede riishoj Nybegynder
09. maj 2002 - 11:43 #59
har lavet en tabel ved navn "for" og prøvet din seneste SQL, men jeg får stadig fejlen

error '800a0cc1'

ADO Could not find the object in the collection corresponding to the name or ordinal reference requested by the collection.

/Biler_paa_Vestfyn/index2.asp, line 24

Linje 24 ser sådan ud:

  response.write rs("username")
Avatar billede eagleeye Praktikant
09. maj 2002 - 13:05 #60
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")
Avatar billede riishoj Nybegynder
09. maj 2002 - 13:42 #61
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>"
   
    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>"

Jeg ved godt, at der er nogle underlige formateringer i tabellen som udskriver tabellen. Det er bare for at eksperimentere med farve og skrifttype.
Avatar billede eagleeye Praktikant
09. maj 2002 - 13:53 #62
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
Avatar billede riishoj Nybegynder
09. maj 2002 - 14:10 #63
Nej, den går altså ikke. Jeg får denne fejl

ADODB.Recordset.1 error '80004005'

SQLState: 37000
Native Error Code: -3100
[INTERSOLV][ODBC SequeLink driver][ACCESS][Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'for.forhandlerId ='.


/Biler_paa_Vestfyn/index2.asp, line 24

index2.asp ser sådan ud nu. Har jeg lavet end fejl. Den vil have end if til sidst
Avatar billede riishoj Nybegynder
09. maj 2002 - 14:11 #64
<%
'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
%>
Avatar billede eagleeye Praktikant
09. maj 2002 - 14:28 #65
virker den ikke?
Avatar billede riishoj Nybegynder
09. maj 2002 - 14:30 #66
Nej. Jeg får den fejl som du kan se i min næstsidste kommentar!
Avatar billede eagleeye Praktikant
09. maj 2002 - 14:39 #67
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") & ";"
Avatar billede riishoj Nybegynder
09. maj 2002 - 14:53 #68
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.

/Biler_paa_Vestfyn/index2.asp, line 37

Linje 37 er

  Response.Write "<td>" & rs("Forhandler") & "</td></tr>"
Avatar billede riishoj Nybegynder
09. maj 2002 - 14:55 #69
Der skal selvfølgelig stå

Der er 3 Toyotaer i db'en men der bliver kun udskrevet en.
Avatar billede riishoj Nybegynder
09. maj 2002 - 14:57 #70
I tabellen "biler" har jeg både Id til hver enkelt bil og forhandlerId til hver enkelt forhandler. Er det mon det som giver problemer?
Avatar billede eagleeye Praktikant
09. maj 2002 - 15:05 #71
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") & ";"
Avatar billede eagleeye Praktikant
09. maj 2002 - 15:06 #72
>>>I tabellen "biler" har jeg både Id til hver enkelt bil og forhandlerId til hver enkelt forhandler. Er det mon det som giver problemer?

Nej sådan skal det laves, eller kan du ikke senere finde ud af hvilken forhandler en bil høre til.
Avatar billede eagleeye Praktikant
09. maj 2002 - 15:07 #73
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") & ";"
Avatar billede riishoj Nybegynder
09. maj 2002 - 15:15 #74
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?
Avatar billede riishoj Nybegynder
09. maj 2002 - 15:20 #75
De sidste kommentar forstår jeg simpelthen ikke, sorry:( Det virker fint med den ændring de beskrev i din forrige kommentar.
Avatar billede eagleeye Praktikant
09. maj 2002 - 15:57 #76
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

  Response.Write "<td><a href='slet.asp?bilid="&rs("ID")&"'>slet</a></td>"
  Response.Write "<td><a href='ret.asp?bilid="&rs("ID")&"'>ret</a></td>"
  Response.Write "</tr>"
  rs.MoveNext
Avatar billede riishoj Nybegynder
09. maj 2002 - 16:23 #77
Så skal jeg vist have lavet min SQL om på siden slet.asp. Som den er nu henter den id fra en form. Den ser sådan ud, men kan vel nemt laves om.

strSQL = "Delete from biler where Id = " & replace(request.form("RecordToDelete"),"'","''
Avatar billede riishoj Nybegynder
09. maj 2002 - 16:51 #78
Øh, den slet.asp kan jeg ikke få til at virke.Har du et godt bud?
Avatar billede eagleeye Praktikant
09. maj 2002 - 18:40 #79
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)
Avatar billede riishoj Nybegynder
09. maj 2002 - 19:35 #80
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.
Avatar billede eagleeye Praktikant
09. maj 2002 - 19:58 #81
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
Avatar billede riishoj Nybegynder
09. maj 2002 - 20:12 #82
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?
Avatar billede eagleeye Praktikant
09. maj 2002 - 20:47 #83
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
%>
Avatar billede riishoj Nybegynder
09. maj 2002 - 20:57 #84
Jeg får denne fejl

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/Biler_paa_Vestfyn/opdater.asp, line 19

strSQL = "SELECT * FROM biler WHERE ID = " request.Querystring("bilid")
-------------------------------------------^
linje 19 er

strSQL = "SELECT * FROM biler WHERE ID = " request.Querystring("bilid")
Avatar billede eagleeye Praktikant
09. maj 2002 - 21:03 #85
hov der mangler et & sådan her:

strSQL = "SELECT * FROM biler WHERE ID = " & request.Querystring("bilid")
Avatar billede riishoj Nybegynder
09. maj 2002 - 21:07 #86
Så sker dette

Microsoft VBScript compilation error '800a03f9'

Expected 'Then'

/Biler_paa_Vestfyn/opdater.asp, line 21

if rs.not EOF Then
----------^
Avatar billede eagleeye Praktikant
09. maj 2002 - 21:15 #87
hmm det gik vist lidt hurtigt før ..... det ser sjovt ud :)

Det skal være

if not rs.EOF Then
Avatar billede riishoj Nybegynder
09. maj 2002 - 21:15 #88
Jeg har fundet fejlen

if rs.not EOF Then skal jo være if not rs.EOF Then
Avatar billede riishoj Nybegynder
09. maj 2002 - 21:24 #89
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.

CU/riishoj:)
Avatar billede eagleeye Praktikant
09. maj 2002 - 21:31 #90
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester