webForumDet fria alternativet

Ej dubletter

ASP

20 svar · 352 visningar · startad av antar

Medlem sedan dec. 2001289 inlägg
Frågan#1

Hur undviker jag dubletter med den koden?
'***************** Senaste besökare ****************
Set Connect=Server.CreateObject("ADODB.Connection")
sConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("Database/Dagbok.mdb")&""
Connect.Open(sConnect)

Anvandarnamn= request.querystring("Anvandarnamn")
id= request.querystring("ID")

SQL="SELECT Lasare, Anvandarnamn FROM Dagbok WHERE Anvandarnamn='" & Anvandarnamn & "'"
Connect.execute(SQL)
Set Recset=Server.CreateObject("ADODB.Recordset")
Recset.open SQL, Connect, 3,3

adda=session("Anvandarnamn")&"="&now()&"¶"
happ=adda & recset("Lasare")

if not recset("Lasare") = "" then
if not left(recset("Lasare"),instr(recset("Lasare"), "¶")) = session("Anvandarnamn")&"¶" then
if not recset("Anvandarnamn")=session("Anvandarnamn") then
sql="UPDATE Dagbok SET Lasare='" & happ & "' WHERE Anvandarnamn='" & Anvandarnamn &"'"
connect.execute(sql)
connect.close
set connect = nothing
else
end if
end if
else
if not recset("Anvandarnamn")=session("Anvandarnamn") then
sql="UPDATE Dagbok SET Lasare='" & happ & "' WHERE Anvandarnamn='" & Anvandarnamn &"'"
connect.execute(sql)
connect.close
set connect = nothing
end if
end if
'******************************************************

Medlem sedan dec. 200012 464 inlägg
#2

I vilket sammanhang? När du hämtar data eller när du lagrar data?

Medlem sedan dec. 2001289 inlägg
#3

när jag lagrar data!

Medlem sedan dec. 2001289 inlägg
#4

:(

Medlem sedan feb. 20022 594 inlägg
#5

DU kan göra fältet i databasen, som du inte vill ska kunna dubbleras till primärnyckel.

Medlem sedan dec. 2001289 inlägg
#6

nej men det ser ut så här i fältet

nick,bla,bla,bla

, splittras

Medlem sedan dec. 200012 464 inlägg
#7

Lagra inte data på det sättet. Lagra varje enskild sak som en egen post. Du behöver alltså ha en till tabell.

Då är det mycket enklare att hantera, t.ex. kan du sätta ett unique attribut på kolumnen.

Medlem sedan dec. 2001289 inlägg
#8

nej jag vill använda så orkar inte ändra på allt!! kan nån hjälpa?

Medlem sedan feb. 200112 078 inlägg
#9
strArray = split(session("anvandarnamn"),"¶")

for i = lbound(strArray) to ubound(strArray)
   if strArray(i) = [b]nånvariabel[/b] then
      isMatch = True
      exit for
   end if
next

if isMatch <> True then
   'gör uppdateringen
end if

Typ, du förstår meningen.

Medlem sedan dec. 2001289 inlägg
#10

nope fattar inte??

Medlem sedan dec. 2001289 inlägg
#11

hjälp förstår inte rikitigt??

Medlem sedan dec. 2001289 inlägg
#12

vad ska det stå i nånvariabel?

Medlem sedan feb. 200112 078 inlägg
#13
strArray = split(session("anvandarnamn"),"¶")

for i = lbound(strArray) to ubound(strArray)
   if strArray(i) = request.querystring("Anvandarnamn") then
      isMatch = True
      exit for
   end if
next

if isMatch <> True then
   'gör uppdateringen
end if

Just nu splittar koden sessions-variabeln 'anvandarnamn' och placerar den i en array som loopas igenom. Är en post i arrayen samma som request.querystring("anvandarnamn"), blir värdet isMatch -> 'True'.

Om isMatch inte är 'True' (vilket vi kollar nedanför), gör uppdateringen.

Förstår du?

Medlem sedan dec. 2001289 inlägg
#14

hur ska man göra när det e tomt i fältet?
då får man

Körningsfel i Microsoft VBScript (0x800A005E)
Ogiltig användning av Null: 'split'
/las.asp, line 34

Medlem sedan aug. 20011 099 inlägg
#15
if not recset("Lasare") = "" then
'koden
else
'uppdatera
end if
Medlem sedan dec. 2001289 inlägg
#16

EJ dubbletter

får inte igång den den lagrar samma användarnamn till databasen endå?

Set Connect=Server.CreateObject("ADODB.Connection") 
sConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("Database/Dagbok.mdb")&"" 
Connect.Open(sConnect) 

Anvandarnamn= request.querystring("Anvandarnamn") 
id= request.querystring("ID") 

SQL="SELECT Lasare, Anvandarnamn FROM Dagbok WHERE Anvandarnamn='" & Anvandarnamn & "'" 
Connect.execute(SQL) 
Set Recset=Server.CreateObject("ADODB.Recordset") 
Recset.open SQL, Connect, 3,3 

adda=session("Anvandarnamn")&"="&now()&"¶"
happ=adda & recset("Lasare") 

if not recset("lasare") = "" then
strArray = split(recset("Lasare"),"=")

for i = lbound(strArray) to ubound(strArray)
   if strArray(i) = session("Anvandarnamn") then
      isMatch = True
      exit for
   end if
next

if isMatch <> True then
if not recset("Anvandarnamn")=session("Anvandarnamn") then
sql="UPDATE Dagbok SET Lasare='" & happ & "' WHERE Anvandarnamn='" & Anvandarnamn &"'" 
connect.execute sql,,128
connect.close
set connect = nothing
end if
end if
else
if not recset("Anvandarnamn")=session("Anvandarnamn") then
sql="UPDATE Dagbok SET Lasare='" & happ & "' WHERE Anvandarnamn='" & Anvandarnamn &"'" 
connect.execute sql,,128
connect.close
set connect = nothing
end if
end if
Medlem sedan dec. 200012 464 inlägg
#17

Jag slog ihop trådarna.

Medlem sedan dec. 2001289 inlägg
#18

:(

Medlem sedan feb. 200112 078 inlägg
#19

adda=session("Anvandarnamn")&"="&now()&"¶"
happ=adda & recset("Lasare")

if not recset("lasare") = "" then
strArray = split(recset("Lasare"),"=")

Det där ser lite konstigt ut, första och sista raden. Vad är det egentligen för tecken du har mellan namnen?

Medlem sedan feb. 200112 078 inlägg
#20

jag fattar faktiskt inte riktigt vad du har snott ihop för nåt när jag tänker efter. :o ;)

Först hämtar du ett recordset från tabellen med användarens information, sedan placerar du namnet från sessionsvariabeln i variabeln 'adda', varpå du lägger ihop ett = och datumtiden samt ett skumt tecken ( ¶ ).

Och sen sätter du ihop allt som finns i 'adda' med 'lasare' från recordset:et.. :q

Jag fattar noll.

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