webForumDet fria alternativet

Gästbok

ASP

22 svar · 898 visningar · startad av Jeppeweb

Medlem sedan sep. 2006462 inlägg
Frågan#1

Hej!

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 & "]&nbsp;"
				Else
					Response.Write "<a href=?page=61&userid="&userid&"&sida=" & i & ">" & i & "</a>&nbsp;"
				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 & "]&nbsp;"
				Else
					Response.Write "<a href=?page=61&userid="&userid&"&sida=" & i & ">" & i & "</a>&nbsp;"
				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
%>)
Medlem sedan sep. 2006462 inlägg
#2

zzznark!

Medlem sedan sep. 2006462 inlägg
#3

Ingen som kan hjälpa mig?

Medlem sedan nov. 20051 317 inlägg
#4

Luuuugn!

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
Medlem sedan mars 20041 505 inlägg
#5

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
Medlem sedan jan. 20023 327 inlägg
#6

Troxy skrev:

oskars, det där var ett VÄLDIGT dåligt sätt att räkna antalet poster på tyvärr. ;)

set oCount = oConnection.Execute("SELECT COUNT(*) AS antal FROM tabell")
response.write oCount("antal")
oCount.close
set oCount=nothing

Precis, aggregat-funktioner finns ju av en anledning :i

Medlem sedan sep. 2006462 inlägg
#7

Vart ska jag slänga in den där koden?

Medlem sedan nov. 20051 317 inlägg
#8

Troxy skrev:

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?

:stud

Medlem sedan sep. 2006462 inlägg
#9

Hjälp mig ffs!

Medlem sedan dec. 2002299 inlägg
#10

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.

/paddan

Medlem sedan sep. 2006462 inlägg
#11

gastbok.asp

<%
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

Medlem sedan dec. 1999653 inlägg
#12

Vad har du för värde i cookiedatum om du skriver ut den med response.write?

Har du ens skapat cookien?

Om ja så kan ev. cDate(cookie("datum")) vara på sin plats när du skapar variabeln cookiedatum...

mvh,

Medlem sedan sep. 2006462 inlägg
#13

Hur skapar jag cookien?

Medlem sedan maj 2000194 inlägg
#14
Response.Cookies("Datum") = "DittDatumVärde"
Medlem sedan dec. 1999653 inlägg
#15

"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.

Medlem sedan sep. 2006462 inlägg
#16

<%
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

line 24:

cookiedatum = cookie("Datum")

Medlem sedan dec. 2002299 inlägg
#17

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.

Medlem sedan dec. 1999653 inlägg
#18

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.

Medlem sedan jan. 20023 327 inlägg
#19

Jeppeweb skrev:

Hjälp mig ffs!

Att ni ens orkar bry er om ett hjälpa en person som uppför sig så här. Han förtjänar ingen hjälp. x(

Medlem sedan sep. 2006462 inlägg
#20

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
158 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
160 ms — ändringar (db)