Jag vill få reda på hur jag skall gå till väga för att få mina användare att kunna se hur många nya gästboksinlägg de har ( if so ) ..
Så här ser gästbokskoden ut;
<%
SQL = "Select * From gastbok WHERE till = "&userid&" ORDER BY datum DESC"
Set Rs2 = Server.CreateObject("ADODB.RecordSet")
Rs2.CursorLocation = 3
'Antal inlägg som ska vissas vid katalog visning
Rs2.PageSize = 10
Rs2.Open SQL, Connect, 1,3
if Rs2.eof then
Response.Write "<br><i>Den här kisen har inte fått några gästboksinlägg alls :/ skriv?</i>"
else
If Rs2.PageCount > 1 Then
For i = 1 to Rs2.PageCount
If i = CLng(sida) Then
Response.Write "[" & i & "] "
Else
Response.Write "<a href=?page=61&userid="&userid&"&sida=" & i & ">" & i & "</a> "
End If
Next
End If
Dim sida
sida = Trim(Request.QueryString("sida"))
If sida = "" Then
sida = 1
End If
Rs2.AbsolutePage = sida
Dim rad
rad = 0
Response.write "<table width='99%'>"
While Not Rs2.EOF and rad < Rs2.PageSize
rad = rad + 1
if Rs2("privat") = 1 AND egen = 1 OR Rs2("privat") = 1 AND Session("cmid") = Rs2("fran") OR Rs2("privat") = 0 then
if x = 0 then
bgcolor = "#E7E7FE"
x = 1
else
bgcolor = "#ffffff"
x = 0
end if
SQL = "Select * from medlemmar where id = '"&Rs2("fran")&"'"
Set Rs3 = Connect.execute(SQL)
Response.Write "<tr><td bgcolor="&bgcolor&">"
if Rs3("bild") = "" OR Rs3("bild") = "ingen" then
Response.Write "<img src=bilder/userspics/ingenbild.gif width=40 height=50>"
else
if Rs3("bildaccept")="1" then
Response.Write "<a href=?page=2&userID="&Rs3("ID")&" border=0><img src=bilder/userspics/"&Rs3("bild")&" width=40 height=50 border=0></a>"
else
Response.Write "<img src=bilder/userspics/ingenbild2.gif width=40 height=50>"
end if
end if
Response.Write "<td bgcolor="&bgcolor&" width=600>Skrivet av <a href=?page=2&userID="&Rs3("ID")&">"&byt(Rs3("alias"))&"</a> den "&Rs2("datum")&""
if Rs2("privat") = 1 then
Response.Write " [hemligt] "
end if
Response.Write "<br><br><b></b> "&Rs2("text")
if egen = 1 then
Response.Write "<br><br><a href=?page=61&userid="&CLng(Rs2("fran"))&">Svara</a> - <a href=?page=61&userid="&userid&"&sida=" & sida & "&delID="&CLng(Rs2("Id"))&">Ta bort</a>"
end if
Response.Write"</td></tr>"
Connect.Execute("update gastbok set last = '1' WHERE ID = " & Rs("id") & "")
Rs3.close
Set Rs3 = Nothing
end if
Rs2.MoveNext
Wend
Response.write "</table>"
If Rs2.PageCount > 1 Then
For i = 1 to Rs2.PageCount
If i = CLng(sida) Then
Response.Write "[" & i & "] "
Else
Response.Write "<a href=?page=61&userid="&userid&"&sida=" & i & ">" & i & "</a> "
End If
Next
End If
end if
Rs2.CLOSE
Set Rs2 = nothing
if Request.Querystring("action") = "spara" then
%><!-- #include file="databaskopplingar.asp" --><%
fran = Session("cmID")
till = userid
status = 5
datum = Now
text = Replace(request.Form("text"),"'","\'")
ip = Request.ServerVariables("REMOTE_ADDR")
if request.Form("privat") = 1 then
privat = 1
else
privat = 0
end if
Connect.Execute("INSERT INTO gastbok (fran, till, text, datum, ip, privat) VALUES('"& fran &"','"& till &"','"& text &"','"& datum &"','"& ip &"','"& privat &"')")
Response.Redirect "?page=61&userid="&userid&""
end if
if Request.Querystring("delID") <> "" then %><!-- #include file="databaskopplingar.asp" --><%
sida = Request.Querystring("sida")
Connect.execute("delete from gastbok where id = "&request.querystring("delID")&"")
Response.Redirect("?page=61&sida="&sida&"")
end if
egen = ""
Connect.CLOSE
Set Connect = nothing
else
s = Request.Querystring("s")
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(Server.MapPath("databaskopplingar.asp"),1)
Response.Write Replace(server.HTMLEncode(File.ReadAll),vbCrLf, "<br>")
File.Close
Set File = Nothing
Set FSO = Nothing
end if
%>
Såhär försöker jag skriva ut antal nya;
<!-- #include file="databaskopplingar.asp" -->
<%
set count13372 = connect.execute("SELECT Count(*) AS antalnyagb FROM gastbok WHERE last = '0' AND fran = '"&Session("cmID")&"'")
response.write "("
response.write ""&count13372("antalnyagb")&""
count13372.close
connect.close
%>)
Så här gör jag för att räkna valda poster från MySQL:
set Count = Server.CreateObject("ADODB.Recordset")
set Count.ActiveConnection = Conn
Count.CursorLocation = 3
Count.Open "SELECT * FROM Tabell"
Senaste = Count.RecordCount
Response.Write("("&Senaste&")")
Count.Close
Set Count = Nothing
oskars, det där var ett VÄLDIGT dåligt sätt att räkna antalet poster på tyvärr. ;)
Att först hämta allting i databasen, men sedan bara skriva ut antalet records gör att databasen jobbar i onödan.
Det är bättre att lösa själva räknandet direkt i SQL-frågan. Då hämtas bara en liten siffra, istället för alla poster.
set oCount = oConnection.Execute("SELECT COUNT(*) AS antal FROM tabell")
response.write oCount("antal")
oCount.close
set oCount=nothing
oskars, det där var ett VÄLDIGT dåligt sätt att räkna antalet poster på tyvärr. ;)
Att först hämta allting i databasen, men sedan bara skriva ut antalet records gör att databasen jobbar i onödan.
Det är bättre att lösa själva räknandet direkt i SQL-frågan. Då hämtas bara en liten siffra, istället för alla poster.
set oCount = oConnection.Execute("SELECT COUNT(*) AS antal FROM tabell")
response.write oCount("antal")
oCount.close
set oCount=nothing
Perfekt! Kan jag ersätta all min övre kod med den du postade?
Du får lära dig lite själv, men här är tipsen.
Av koden du fick för att ta reda på hur många gästboksinlägg som postas sen dem var på sidan senast.
Men du måste spara när dem var där senast på någotvis, enklast genom en cookie på deras dator som uppdateras med ett datum.
Sen använder du koden så här:
cookiedatum = cookie("guestbookdatum")
set oCount = oConnection.Execute("SELECT COUNT(*) AS antal FROM tabell WHERE datum > "&cookieDatum&"")
response.write oCount("antal")
oCount.close
set oCount=nothing
Förlåt för min svengengelska, enbart för att det skulle vara enklare att förstå.
Du får söka lite på cookie här på WF, det är inte så svårt. Glöm inte varna om du sparar något på någons dator, enligt lagen är du skyldig till det.
<%
cookiedatum = cookie("datum")
set oCount = oConnection.Execute("SELECT COUNT(*) AS last FROM gastbok WHERE datum > "&cookieDatum&"")
response.write oCount("last")
oCount.close
set oCount=nothing
%>
Error Type:
Sun ONE ASP VBScript runtime (0x800A000D)
Type mismatch
/gastbok.asp, line 107
"DittDatumVärde" kan man ju säga borde vara ex. en Now() - då datum och tid lagras. Lagrar du bara datum, å besökaren loggar in två gånger på samma dag kan det bli lurigt att visa "nya" inlägg.
<%
Response.Cookies("Datum") = "datum"
cookiedatum = cookie("Datum")
set oCount = oConnection.Execute("SELECT COUNT(*) AS last FROM gastbok WHERE datum > "&cookieDatum&"")
response.write oCount("last")
oCount.close
set oCount=nothing
%>
Hur ska jag kunna se värdet om jag får felmeddelande ?
Error Type:
Sun ONE ASP VBScript runtime (0x800A000D)
Type mismatch
/gastbok.asp, line 24
https://www.devguru.com
Sök på cookie där i asp.
Du måste läsa på lite om cookies,
cookiedatum = cookie("Datum") är ej korrekt det var bara ett exempel.
Egentligen skulle jag säga att du tagit dig vatten över huvudet.
Men när besökaren registrerar sig; så skapar du cookien med ex: Response.Cookies("minSajt")("lastVisit") = Now()
Sen när kontrollen görs varje gång besökaren loggar in kan de kanske se ut så här:
<%
lastVis = cDate(Request.Cookies("minSajt")("lastVisit"))
set oCount = oConnection.Execute("SELECT COUNT(*) AS last FROM gastbok WHERE datum > '" & lastVis & "')
If oCount("last") > 0 Then
response.write oCount("last") & " nya inlägg."
Else
response.write "inga nya inlägg."
End If
oCount.close
set oCount=nothing
%>
Sen när de går in i gästboken; och uppenbarligen läser; görs detta:
Response.Cookies("minSajt")("lastVisit") = Now()
för att hela tiden få in ett värde i cookien när de senast kollade gästboken.
Gjort som du sa nakoz.. lade in den där snutten i login.asp, får detta felmeddelande;
Sun ONE ASP VBScript compilation (0x800A0438)
Unexpected end of line inside a string
/login.asp, line 92, column 109
login.asp
<% If Request.QueryString("action") = "login" Then %><!-- #include file="databaskopplingar.asp" --><%
SQL = "Select * from medlemmar"
Set RecSet = Connect.execute(SQL)
X = FALSE
Do Until X = TRUE OR RecSet.EOF
If RecSet("anvandarnamn") = Request.Form("Username") Then
X = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
If X = TRUE Then
Y = FALSE
Do Until Y = TRUE OR RecSet.EOF
If RecSet("losenord") = Request.Form("Password") Then
Y = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
End If
If X = FALSE Then
Session("msg") = "Du har anget ett felaktigt användarnamn eller lösenord!"
response.redirect "menu.asp"
ElseIf Y = FALSE Then
Session("msg") = "Du har anget ett felaktigt användarnamn eller lösenord!"
response.redirect "menu.asp"
End If
If X = TRUE AND Y = TRUE Then
if RecSet("online") = "3" then
Session("msg") = "Ditt konto är avstängt! Om du har klagomål eller annat kontakta crew per e-mail: admin@hejkompis.be "
RecSet.Close
Connect.Close
response.redirect "main.asp"
else
if RecSet("aktiverad") = "0" then
Session("msg") = "Ditt konto är inte aktiverat! Om du ej fått något mail så kontakta admin genom att klicka på länken länst ner till höger på sidan! <br><br>"
RecSet.Close
Connect.Close
response.redirect "main.asp"
else
Session("cmid") = RecSet("id")
Session("cmanvandarnamn") = RecSet("anvandarnamn")
Session("cmalias") = RecSet("alias")
Session("cminloggad") = "ja"
antalinlogg = RecSet("inloggningar") + 1
online = "1"
status = RecSet("status") + 1
senastip = Request.ServerVariables("REMOTE_ADDR")
senastdatum = Now
Connect.Execute("update medlemmar set inloggningar = '"&antalinlogg &"', online = '"&online&"', status = '"&status&"', senastip = '"&senastip&"', senastdatum = '"&senastdatum&"' WHERE ID = " & RecSet("id") & "")
Connect.Execute("INSERT INTO iplogg (ip,datum,vems) VALUES('"& senastip &"','"& senastdatum &"','"& Session("cmid") &"')")
RecSet.Close
Connect.Close
end if
end if
End If
end if
%>
<%
if session("msg") <> "" then
Response.Write "<center><br><br><font color=red><big>"&session("msg")&"</big></font><br><br></center>"
session("msg") = ""
end if
%>
<%
senastdatum = cDate(Request.Cookies("minSajt")("senastdatum"))
set oCount = oConnection.Execute("SELECT COUNT(*) AS last FROM gastbok WHERE datum > '" & senastdatum & "')
If oCount("last") > 0 Then
response.write oCount("last") & " nya inlägg."
Else
response.write "inga nya inlägg."
End If
oCount.close
set oCount=nothing
%>
298 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849