webForumDet fria alternativet

ändra Session id till något annat

ASP

19 svar · 417 visningar · startad av medialabs

Medlem sedan mars 20023 686 inlägg
Frågan#1

Har just kommit på att jag inte kan ha WHERE id = " & session("id") lika med just id eftersom den verkar gå efter postens id i access kan jag göra nått så att den går efter fältet "kundnr" eftersom jag har flera tabeller med olika uppgifter och i varje tabell har jag just kundnr med i posterna så det borde ju funka så att den loopar fram efter kundnr istället för ID.

När jag loggar in så sätts den här Session("id") = recset("id")
kan man ändra så att den går efter kundnr.

---------------Min databas koppling-----------

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("client987.mdb")

SQL = "SELECT * From tbluppgifter WHERE id = " & session("id")
Set RecSet = Connect.Execute(SQL)
%>

Medlem sedan mars 20025 907 inlägg
#2

Re: ändra Session id till något annat

medialabs skrev:

Har just kommit på att jag inte kan ha WHERE id = " & session("id") lika med just id eftersom den verkar gå efter postens id i access kan jag göra nått så att den går efter fältet "kundnr" eftersom jag har flera tabeller med olika uppgifter och i varje tabell har jag just kundnr med i posterna så det borde ju funka så att den loopar fram efter kundnr istället för ID.

Möjligen är jag dum, men jag begriper inte vad du menar (beror kanske på dina 369 tecken i en och samma mening.). Vad är det du vill göra?

WHERE kundnr = " & session("id") ??

Medlem sedan mars 20023 686 inlägg
#3

Ska försöka förklara lite bättre,

När jag loggar in på sidan så görs en kontroll först av anv & lösen. Sedan sätts Session("id") = recset("id") sedan kommer man till index sidan. Och där loopar jag fram lite uppgifter som finns sparade i en tabell. Men nu ser jag att om jag ska ta fram uppgifter från en annan tabell så kan det vara så att primärnyckeln i fältet ID är 4 och i en annan 8 och då får jag detta. Kan man ändra session id till att gå efter kundnr istället för i varje tabell eller Post så finns just kundnr med.

ADODB.Field error '80020009'

Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.

/konto.asp, line 0

Kontroll.asp koden --------

<%
Function SQLText(Value)
    If Len(Value) Then
        SQLText = "'" & Replace(Value, "'", "''") & "'"
    Else
        SQLText = "Null"
    End If
End Function

    Set Con = Server.CreateObject("ADODB.Connection")
    Con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("client987.mdb") 

    strSQL = "Select * from tbluppgifter where client = " & SQLText(Request.Form("client")) & " and password = " & SQLText(Request.Form("password"))
    Set RecSet = Server.CreateObject("ADODB.Recordset")
    RecSet.Open strSQL, Con

    If not recset.eof then
        Session("authentication") = "yes" 
        Session("id") = recset("id")
	Response.Redirect "index.asp"
else

Index.asp sidans databaskod---------------

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("client987.mdb") 

SQL = "SELECT * From tbluppgifter WHERE id = " & session("id")
Set RecSet = Connect.Execute(SQL)
%>
Medlem sedan sep. 20011 722 inlägg
#4
    If not recset.eof then
        Session("authentication") = "yes" 
        Session("[B]kundnr[/B] ") = recset("[B]kundnr[/B]")
	Response.Redirect "index.asp"

Eller?

Medlem sedan mars 20023 686 inlägg
#5

KoTTeN skrev:

    If not recset.eof then
        Session("authentication") = "yes" 
        Session("[B]kundnr[/B] ") = recset("[B]kundnr[/B]")
	Response.Redirect "index.asp"

Eller?

Nja, jag har gjort så här Session("kundnr ") = recset("id/B]") och så har jag ändrat batabas kopplingen men om jag försöker hämta data från en annan tabell så blir det stop. varför??

Medlem sedan mars 20023 686 inlägg
#6

ingen?

Medlem sedan juni 200032 967 inlägg
#7

Om ID är olika i de olika tabellerna så är det inte så konstigt att det blir galet. Varför kallar du sessionsvariabeln kundnummer och ändå lagrar id i den? Varför inte lagra kundnumret i sessionen och använda den i SQL-frågan?

Jag förstår ingenting av vad problemet är, måste jag dock tillstå.

Medlem sedan mars 20023 686 inlägg
#8

@nders skrev:

Om ID är olika i de olika tabellerna så är det inte så konstigt att det blir galet. Varför kallar du sessionsvariabeln kundnummer och ändå lagrar id i den? Varför inte lagra kundnumret i sessionen och använda den i SQL-frågan?

Jag förstår ingenting av vad problemet är, måste jag dock tillstå.

Ok, kan du visa hur sql frågan ska vara så att den letar efter kundnr istället för ID, Detta är ganska nytt område för mig.

Medlem sedan mars 20025 907 inlägg
#9
SQL = "SELECT * From tbluppgifter WHERE kundnr = " & session("id")

??

Förstår fortfarande inte vad du villl göra :l

Medlem sedan mars 20023 686 inlägg
#10

Hmm, jag är dålig på att förklara men när jag har satt

    Session("kundnr") = recset("id")

och loggar in och sedan lopar fram lite information från samma tabell där anv. & lösen ligger med

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("client987.mdb") 

SQL = "SELECT * From tbluppgifter WHERE id = " & session("kundnr")
Set RecSet = Connect.Execute(SQL)
%>

SÅ funkar det utan problem. Men problemet kommer när jag försöker hämta information från en ANNAN tabell. Och det är i tabellen webbhotell och i den tabellen så har jag ett fält som heter kundnr och i det fältet ligger kundnr så jag skulle vilja gå efter kundnr istället för id.

Medlem sedan jan. 20032 285 inlägg
#11
SQL = "SELECT tbluppgifter.*, tblwebbhotell.* FROM tbluppgifter INNER JOIN tblwebbhotell ON tbluppgifter.id = tblwebbhotell.kundnr WHERE tbluppgifter.id = " & Session("kundnr")

??

Medlem sedan mars 20025 907 inlägg
#12

Last try:

SQL = "SELECT * From webbhotell WHERE kundnr = " & session("kundnr")
Medlem sedan mars 20023 686 inlägg
#13

Peeer skrev:

Last try:

SQL = "SELECT * From webbhotell WHERE kundnr = " & session("kundnr")

Så här blev det med ditt förslag, Jag ska testa det andra förslaget nu.

Microsoft OLE DB Provider for ODBC Drivers error '80040e07' 

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. 

/test.asp, line 24 

24 >> Set RecSet = Connect.Execute(SQL)
Medlem sedan mars 20023 686 inlägg
#14

Sebbe skrev:

SQL = "SELECT tbluppgifter.*, tblwebbhotell.* FROM tbluppgifter INNER JOIN tblwebbhotell ON tbluppgifter.id = tblwebbhotell.kundnr WHERE tbluppgifter.id = " & Session("kundnr")

??

Och sä här blev det med detta

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Microsoft Access Driver] Type mismatch in expression. 

/test.asp, line 24
Medlem sedan mars 20025 907 inlägg
#15

Vad har du för datatyp på fältet kundnr? Är det ett textfält så får du ändra till:

SQL = "SELECT * From webbhotell WHERE kundnr = '" & session("kundnr")&"'"
Medlem sedan mars 20023 686 inlägg
#16

Peeer skrev:

Vad har du för datatyp på fältet kundnr? Är det ett textfält så får du ändra till:

SQL = "SELECT * From webbhotell WHERE kundnr = '" & session("kundnr")&"'"

Fältet är ett textfält men din kod hjälpte inte. :(

Medlem sedan jan. 20032 285 inlägg
#17
SQL = "SELECT * FROM webbhotell WHERE kundnr = '" & CStr(Session("kundnr")) & "'"
Medlem sedan mars 20025 907 inlägg
#18

Fortfarande samma felmeddelande?

Medlem sedan mars 20015 287 inlägg
#19
SQL = "SELECT * From webbhotell WHERE kundnr = '" & Cstr(session("kundnr")) &"'"
Medlem sedan mars 20023 686 inlägg
#20

Nu funkar allt perfekt tackar för er hjälp, Det var session variabel som satt fel på nått konstigt sätt men jag fick det att funka

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)