webForumDet fria alternativet

Vill inte uppdatera

ASP

20 svar · 702 visningar · startad av webbSAJTEN

Medlem sedan jan. 2002992 inlägg
Frågan#1

Detta script skall sätta personen Online

strStatus = "Online"
SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where ID = "&session("ID")&""
Connect.Execute(SQL),,128

Den har fungerat hela tiden, till nu :S

Medlem sedan dec. 20003 563 inlägg
#2

Ok.

Mer info hit och du får nog mer info tillbaka. ;)
Annars är väl första frågan: Hur ser sql-strängen ut när du printar ut den samt hur exekverar du den?

Medlem sedan jan. 2002992 inlägg
#3

Alltså..

Får inte ut satsen.. Får bara en massa felmess :S
Men jag tänkte, denna kod finns på en includerad sida..

strStatus = "Offline"
SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where '"&DateAdd("n", -15, Now())&"' < strSenast "
Connect.Execute(SQL),,128

Kan de vara den som sätter personen Offline direkt?

Medlem sedan dec. 20003 563 inlägg
#4

Antar att du har en sats som uppdaterar strSenast innan ovanstående funktioner.
Dina massa felmess är lite svåra att tyda härifrån dessutom.

Egentligen räcker det med din uppdatering av strSenast.
Sedan har du ytterligare en fråga som tar ut de som uppdaterat sidan de senaste 15 minuterna.

Medlem sedan jan. 2002992 inlägg
#5

Menar du att den sätter alla som varit aktivs dom senaste 15 minutrarna kommer Offline?

Medlem sedan dec. 20003 563 inlägg
#6

Tror du vill att

SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where '"&DateAdd("n", -15, Now())&"' < strSenast "

ska vara

SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where '"&DateAdd("n", -15, Now())&"' > strSenast "

för att sätta alla som inte uppdatera senaste 15 minuterna till offline.

Medlem sedan jan. 2002992 inlägg
#7

Måste nog vara de som är felet :D

Medlem sedan dec. 19996 721 inlägg
#8

Vänligen markera rätt svar som lösningen. För sakens skull :)

Medlem sedan jan. 2002992 inlägg
#9

Men har märkt nu att den koden fungerar inte som de ska..
En person i databasen har strSenast. 2005-10-02 11:03:01

Och då skall den personen sättas som Offline, men det gör han inte..

strStatus = "Offline"
SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where '"&DateAdd("n", -15, Now())&"' > strSenast "
Connect.Execute(SQL),,128
Medlem sedan juni 200032 967 inlägg
#10

Om du skriver ut SQL-frågan, hur ser den ut då? dvs är tid och sådant korrekt?

mvh

Medlem sedan jan. 2002992 inlägg
#11

Fan, du är kung =)..
Eller hmm.. :P
UPDATE anv Set strStatus = 'Offline' Where strSenast < '10/2/2005 7:31:37 PM'

Sådär får jag ut de ;) Alltså i fel format.. :(

Hur ändrar ja så att datumet visas klokt?..

Medlem sedan maj 200591 inlägg
#12

Antar att du använder Access? I så fall ska datum alltid omges av # och inte '.

UPDATE anv Set strStatus = 'Offline' Where strSenast < #10/2/2005 7:31:37 PM#

En liten undran bara, om status kan vara antingen Offline eller Online, varför inte använda en boolean till det?

Medlem sedan dec. 20003 563 inlägg
#13

...och du har vänt tillbaka jämförelseoperatorn igen f.ö.
Det är dessutom en valid presentation av datetime.

Medlem sedan jan. 2002992 inlägg
#14

Jag använder MySQL, och jag har inte vänt tillbaka den.. Den är som cyprys (du) vill att den ska vara..

Medlem sedan jan. 2002992 inlägg
#15

Och du Baltiz, boolean.. kan du förklara mer?

Medlem sedan dec. 20003 563 inlägg
#16

Jag använder MySQL, och jag har inte vänt tillbaka den.. Den är som cyprys (du) vill att den ska vara..

Jämför min senaste och din senaste kod och säg om det där. ;)

Boolean är ett uttryck som endast kan ha två värden. True eller false. Brukar även representeras som 1 (true) 0 (false). Istället för att ha långa strängar som tar plats och göra strängoperationer/jämförelser varje gång man ska hämta ut de som är Online resp Offline låter man 1 stå för online och 0 för offline. Databasen blir alltså mindre och går snabbare med boolean.
I mySQL får du använda t.ex. tinyint för att respresentera boolean då det inte stöds.

Medlem sedan jan. 2002992 inlägg
#17

okej, tack :D men boolean kommer ju inte att lösa felet med datumet..

Hur ska jag lösa de?

Medlem sedan jan. 2002992 inlägg
#18

Okej! Nu är de såhär..

När jag har kodsnutten såhär

SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where strSenast > '"&DateAdd("n", -15, Now())&"'"

Så är det ingen som hamnar Online när man loggar in.

När snutten är såhär:

SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where strSenast < '"&DateAdd("n", -15, Now())&"'"

då sätts man som Online, men man sätts inte som Offline efter 15 minuter..

All relevant kod ser ut såhär..

<script>
setTimeout("location.href='settings.asp?set=offline'", 899999);
</script>
<%
Set Connect = Server.CreateObject("Adodb.Connection") 
Connect.Open strCon

if request.QueryString("set") = "offline" then

strStatus = "Offline"
SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where ID = "&session("ID")&""
Connect.Execute(SQL),,128
session.Abandon()
Response.Redirect("index.asp")

end if

strStatus = "Offline"
SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where strSenast > '"&DateAdd("n", -15, Now())&"'"
'response.Write SQL
Connect.Execute(SQL),,128

SQL = "UPDATE anv Set strSenast = current_timestamp Where ID = "&session("ID")&""
Connect.Execute(SQL),,128
Medlem sedan dec. 19996 721 inlägg
#19

webbSAJTEN skrev:

Okej! Nu är de såhär..
Så är det ingen som hamnar Online när man loggar in.

Det är upp till inloggningsfunktionen att sätta status till "Online", och alla andra sidor måste sätta strSenast, hela tiden (lite konfunderande med kolumnnamnet "strSenast", det är ju ingen sträng)

webbSAJTEN skrev:

När snutten är såhär:

SQL = "UPDATE anv Set strStatus = '"&strStatus&"' Where strSenast < '"&DateAdd("n", -15, Now())&"'"

då sätts man som Online, men man sätts inte som Offline efter 15 minuter..

Jo, det blir man nog, men inte förrän någon låter webbläsaren stå still i 899999 millisekunder, eller triggas funktionen av någon annan sida också?

Använd gärna databasmotorns inbyggda datumfunktioner, så blir det problemfritt och lättare att läsa.

UPDATE anv Set strStatus = 'Offline' Where strStatus='Online' AND strSenast < DATE_SUB(NOW(),INTERVAL 15 MINUTE)
Medlem sedan jan. 2002992 inlägg
#20

När jag la in snutten

UPDATE anv Set strStatus = 'Offline' Where strStatus='Online' AND strSenast < DATE_SUB(NOW(),INTERVAL 15 MINUTE)

så verkarde allt funka :D Ska se ett tag om de funkar :D

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