Jag har en bugg på sidan som jag inte förstår var det uppstår. Kan du bifoga hele koden för din gästbok så tvivlar jag inte på att jag kan lösa ditt problem. Jag tror att du mixar ihop användarid med den som postar och den som skall få posten. Se till att din session för userid inte byts till den du postar till. Troligtvis är det detta du får fel på. <Style> Jag har förändrat koden till följande:En fråga som jag funderar på inget fel på det sättet som oftast man har.
För det är inget fel men det förvirrar folk om man säger så.
Därför ställer jag frågan med koden för se om någon hänger med vad som är fel.
<code>
<%
If Request.QueryString("Guest") = "True" Then
Set Con = Server.CreateObject("Adodb.Connection")
Con.open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("../../Db/Community.mdb") & ";"
Set Rst = Con.execute("Select * From User Where id='" & Session("Userid") & "'")
Set RecSet = Con.execute("Select * From Inlogning Where Userid='" & Request.QueryString("Userid") & "'")
IF not RecSet.eof Then
Response.write Rst("User") & "s gästbok " & RecSet("Guestbook") & " "
Else
End if
%>
</code>
När man går in i gästboken står det rätt användarnamn till rätt användares gästbok.
Skriver jag ett gästboks inlägg till användaren så uppdateras sidan och nu står det inte samma användarnman.
NU står det användarnamnet från den som skrev gästboks inlägget. Och inte användarnamnet til lden man skrivit gästboks inlägget till.
Jag förstår inte var felet ligger som gör att den ändrar användarnman.
Sen ska jag kolla igenom varför gästboken inte vill lista det sista inlägget så ska se om jag kan hitta en kod som uppdatera sidan 1 gång med samma url som det är när man koimmer in.
I mitt fal guestbook.asp?Guest=True&Userid=" Rst("Id")
Så man kan få se det sista gästboks inlägget man skrivit.
Eller om man ska göra på något annat sätt.
För som det är nu får man går ut gästboken och sen in igen för se sista gästboks inlägget man skrivit.Sv: En fråga som jag funderar på inget fel på det sättet som
Sv: En fråga som jag funderar på inget fel på det sättet so
Sv: En fråga som jag funderar på inget fel på det sättet so
TextArea.formular
{
position: Absolute;
Right: 20px;
Top: 90px;
font-family: Georgia;
}
Input.Skicka
{
position: Absolute;
<!-- Right: 27px; -->
<!-- Top: 50px; -->
Top: 265px;
}
</Style>
<!--#INCLUDE FILE="pagin.asp"-->
<Form method="post" Action="guestbook.asp?Guest=True&Userid=<% = Request.QueryString("Userid") %>">
<TextArea Class="Formular" Cols="18" Rows="10" Name="Messages">
</TextArea>
<input Class="Skicka" type="Submit" Value="Skicka inlägg">
</Form>
<% 'rad 23
If Session("Userid") = "" THen
Response.redirect "http://pluget.nu/index.htm"
Else
End if
If Request.QueryString("Guest") = "True" Then
Set Con = Server.CreateObject("Adodb.Connection")
Con.open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("../../Db/Community.mdb") & ";"
Set Rst = Con.execute("Select * From User Where id='" & Session("Userid") & "'")
Set RecSet = Con.execute("Select * From Inlogning Where Userid='" & Request.QueryString("Userid") & "'")
IF not RecSet.eof Then
Response.write Rst("User") & "s gästbok " & RecSet("Guestbook") & " "
Else
End if
If not rst.eof Then
sql ="Insert Into Guestbook"
Sql = sql & "(FromUser,ToUser,Messages)"
Sql = Sql & "Values('" & Rst("User") & "','" & Request.QueryString("Userid") & "','" & Replace(Request.Form("Messages"),"'","'") & "')"
'Response.write SQL
If Request.Form("Messages") = "" Then
'inget vissas
'Response.write "Gästboks inlägget får inte vara null värde."
Else 'rad 36
%>
<%
Set Rst1 = Con.execute("Select * From inlogning Where Userid ='" & Replace(Request.QueryString("userid"),"'","''") & "'")
If Not Rst1.eof Then
'Response.write Rst1("Id")
Con.execute("update Inlogning Set Guestbook = Guestbook + 1 Where Id =" & Rst1("Id") & ";")
Set Rst = Con.execute(sql)
Response.write "Gstboks inlgget r sparad!"
Else
' Om det inte hittade id nummret i tabellen Inloggningar och inte kunde uppdatea antal guestbook i fälltet där
End if
end if
else
'else fr om koden ###if not rst.eof sen fr kontrollera om det finns i databasen ja kr det innan else
'det hr krs om inte anvndaren finns med i databasen anvndare
End if
Else
'inget hände
End if
If Session("Userid") = Request.QUeryString("Userid") Then
Response.write "<Table border=""0"">"
'## -- skapa connection object och ppna databasen --
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("../../Db/community.mdb") & ";"
'## -- hur mnga poster ska visas per sida --
intPageSize = 10 '## -- byt ut till hur mnga poster du vill ska visas per sida -- 'rad 40
'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
'rad 15
'*## -- kontrollera s att inte intPage variabeln r tom --
If intPage = "" Then intPage = 1 '## -- visa frsta sidan som default --
'## -- sql-frga fr att hmta data frn databasen --
strSQL = "SELECT * FROM Guestbook WHERE ToUser = '" & Request.QueryString("Userid") & "' ORDER BY Datum desc, Tid desc"
'## -- skapa och ppna recordsetet --
Set objRS = Server.CreateObject("ADODB.Recordset")
With objRS
.ActiveConnection = objConn
.Source = strSQL
'## -- bestmmer hur mnga poster som varje sida ska best av i recordsetet --
.PageSize = intPageSize
.CursorType = 3
.LockType = 1 'rad 60
.Open
End With
'## -- kontrollera om ngra poster har returnerats eller inte --
If Not objRS.EOF Then
'## -- poster har returnerats --
'## -- visa rtt sida i recordsetet --
objRS.AbsolutePage = intPage
'## -- hur mnga sidor bestr recordsetet av --
intTotalPages = objRS.PageCount
'## -- visa sidnavigeringen --
Call PageNavigation(intPage, intTotalPages)
'## -- loopa igenom recordsetet och visa posterna fr beskaren/anvndaren --
Do Until objRS.EOF OR intCounter >= intPageSize
intCounter = intCounter + 1
Response.write "<Tr>" 'rad 80
Response.write "</Tr>"
Response.write "<Tr>"
Response.write "<Td>Datum & tid " & ObjRs("Datum") & " " & ObjRs("Tid") & "</Td>"
Response.write "</Tr>"
Response.write "<Tr>"
Set Rst = objconn.execute("Select * From User Where User ='" & Objrs("FromUser") & "'")
If not rst.eof then
Response.write "<Tr>"
Response.write "<Td>" & ObjRs("FromUser") & "</Td>"
else
Response.write "<Td>" & objRs("FromUser") & "</Td>"
end if
Response.write "</Tr>"
Response.write "<Tr>"
Response.write "<Td>" & ObjRs("Messages") & "</Td>"
Response.write "</Tr><Tr>" %>
<Script Language="Javascript">
<!-- Begin
function myWin(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,status=1,statusbar=1,menubar=0,resizable=0,width=380,height=380,left = 262,top = 194');");
}
// End -->
</Script>
<Td width="5" Height="5"><input type="button" onClick="javascript:myWin('besvara.asp?Userid=<%=Rst("id")%>')" value="BESVARA"></Td>
<%
'Response.write "<Td>Besvara</Td>"
Response.write "</Tr><Tr></Tr>"
'## -- printa ut informationen till beskare/anvndaren --
objRS.MoveNext
Loop 'rad 100
Else
'## -- inga poster returnerades --
'## -- visa meddelande att inga poster hittades fr anvndaren --
End If
'## -- rensa up --
objRS.Close
Set objRS = Nothing
objConn.Close
Set objconn = Nothing
'## -- visa sidnavigeringen --
' Call PageNavigation(intPage, intTotalPages)
'## -- include filen nedan innehller sjlva subrutinen fr sidnavigeringen --
Response.write "</Table>"
Else
'Response.Write "Du kan bara lsa gstboks inlggen och inte radera eller besvara dom OBS!" 'rad 120
Response.write "<Table border=""0"">"
'## -- skapa connection object och ppna databasen --
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("../../Db/community.mdb") & ";"
'## -- hur mnga poster ska visas per sida --
intPageSize = 10 '## -- byt ut till hur mnga poster du vill ska visas per sida --
'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
'rad 15
'*## -- kontrollera s att inte intPage variabeln r tom --
If intPage = "" Then intPage = 1 '## -- visa frsta sidan som default --
'## -- sql-frga fr att hmta data frn databasen --
strSQL = "SELECT * FROM Guestbook WHERE ToUser = '" & Request.QueryString("Userid") & "' ORDER BY Datum desc, Tid desc"
'## -- skapa och ppna recordsetet --
Set objRS = Server.CreateObject("ADODB.Recordset")
With objRS 'rad 140
.ActiveConnection = objConn
.Source = strSQL
'## -- bestmmer hur mnga poster som varje sida ska best av i recordsetet --
.PageSize = intPageSize
.CursorType = 3 'rad 30
.LockType = 1
.Open
End With
'## -- kontrollera om ngra poster har returnerats eller inte --
If Not objRS.EOF Then
'## -- poster har returnerats --
'## -- visa rtt sida i recordsetet --
objRS.AbsolutePage = intPage
'## -- hur mnga sidor bestr recordsetet av --
intTotalPages = objRS.PageCount
'rad 160
'## -- visa sidnavigeringen -- 'rad 161
Call PageNavigation(intPage, intTotalPages)
'## -- loopa igenom recordsetet och visa posterna fr beskaren/anvndaren --
Do Until objRS.EOF OR intCounter >= intPageSize
intCounter = intCounter + 1
Response.write "<Tr>"
Response.write "</Tr>"
Response.write "<Tr>" 'rad 169
Response.write "<Td>Datum & tid " & ObjRs("Datum") & " " & ObjRs("Tid") & "</Td>"
Response.write "</Tr>" 'rad 171
Set Rst = objconn.execute("Select * From User Where User ='" & Objrs("FromUser") & "'")
If not rst.eof then
Response.write "<Tr>"
Response.write "<Td>" & ObjRs("FromUser") & "</Td>"
else 'rad 176
Response.write "<Td>" & objRs("FromUser") & "</Td>"
end if
Response.write "</Tr>"
Response.write "<Tr>"
Response.write "<Td>" & ObjRs("Messages") & "</Td>"
Response.write "</Tr>"
'## -- printa ut informationen till beskare/anvndaren --
objRS.MoveNext
Loop
Else
'## -- inga poster returnerades --
'## -- visa meddelande att inga poster hittades fr anvndaren --
End If
'## -- rensa up --
objRS.Close
Set objRS = Nothing
objConn.Close
Set objconn = Nothing
'## -- visa sidnavigeringen --
' Call PageNavigation(intPage, intTotalPages)
'## -- include filen nedan innehller sjlva subrutinen fr sidnavigeringen --
Response.write "</Table>"
'Response.write "Du kommer frn en annan sida drfr kan du inget gra ljust nu!"
end if
%>
Andreas H här är hela koden.
Men en kod som jag ska ha till senare är en som markera det som oläst och en som markera det att man inte har besvarat det men läst det så användaren vet.Sv: En fråga som jag funderar på inget fel på det sättet so
<code>
<%@ Language=VBScript %><%
Option Explicit
Dim Con
Dim Page
Dim UserId
Dim CurrentUser
Dim intPage
Dim intCounter
Dim intTotalPages
Dim strSQL
Dim strMessage
Const adUseClient = 3
'**
'* hur många poster ska visas per sida
'**
Const intPageSize = 10
Response.Buffer = True
Page = Trim(Request.QueryString("page")) 'vilken sida ska visas
UserId = Trim(Request.QueryString("Userid"))
strMessage = Trim(Request.Form("Messages"))
CurrentUser = Trim(Session("UserId"))
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//SE" "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-10">
<STYLE>
TextArea.formular
{
Top: 90px;
Right: 20px;
position: Absolute;
font-family: Georgia;
}
Input.Skicka
{
Top: 265px;
<!-- Top: 50px; -->
<!-- Right: 27px; -->
position: Absolute;
}
</STYLE>
<SCRIPT type="text/javascript">
<!-- Begin
function myWin(URL)
{
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,status=1,statusbar=1,menubar=0,resizable=0,width=380,height=380,left = 262,top = 194');");
}
</SCRIPT>
</HEAD>
<BODY>
<!--#INCLUDE FILE="pagin.asp"-->
<FORM method="post" Action="guestbook.asp?Guest=True&Userid=<% = Request.QueryString("Userid") %>" id=form1 name=form1>
<TextArea Class="Formular" Cols="18" Rows="10" Name="Messages">
</TextArea>
<input Class="Skicka" type="Submit" Value="Skicka inlägg" id=Submit1 name=Submit1>
</Form>
<%
If IsNumeric(CurrentUser) Then
If Request.QueryString("Guest") = "True" Then
'## -- skapa connection object och ppna databasen --
Set con = Server.CreateObject("Adodb.Connection")
con.open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("../../Db/Community.mdb") & ";"
strSQL = "SELECT User.*, Inlogning.Guestbook" & vbCrLf & _
"FROM User LEFT JOIN Inlogning ON User.UserId = Inlogning.Userid" & vbCrLf & _
"WHERE Userid='" & Replace(UserId, "'", "''") & "'"
Set rs = Con.execute(strSQL)
If rs.EOF Then
Response.write "Gästbok saknas för: """ & Server.HTMLEncode(UserId) & """"
Else
Response.write rs("User") & "'s gästbok " & rs("Guestbook") & " "
rs.Close
If Len(strMessage) Then
strSQL = "INSERT INTO Guestbook (FromUser, ToUser, Messages)" & vbCrLf & _
"SELECT User, '" & Replace(Userid,"'","''") & "','" & Replace(Request.Form("Messages"),"'","''") & "'" & vbCrLf & _
"FROM inlogning" & vbCrLf & _
"WHERE UserId = '" & Replace(CurrentUser,"'","''") & "'"
con.Execute strSQL
strSQL = "UPDATE Inlogning SET Guestbook = Guestbook + 1" & vbCrLf & _
"WHERE UserId = '" & Replace(UserId,"'","''")
con.Execute strSQL
Response.write "Gstboks inlgget r sparad!"
Else
'Response.write "Gästboks inlägget får inte vara null värde."
End if
'**
'* Öppna recordsetet
'**
strSQL = "SELECT Guestbook.*, User.Id AS FromId" & vbCrLf & _
"FROM Guestbook LEFT JOIN User ON Guestbook.FromUser = User.UserId" & vbCrLf & _
"WHERE ToUser = '" & Replace(UserId,"'","''") & "'" & vbCrLf & _
"ORDER BY Datum desc, Tid desc"
rs.PageSize = intPageSize
rs.CursorLocation = adUseClient
rs.Open strSQL, con
'**
'* hur mnga sidor bestr recordsetet av
'**
intTotalPages = rs.PageCount
'## -- kontrollera om ngra poster har returnerats eller inte --
If Not rs.EOF Then
'**
'* kontrollera intPage variabeln
'**
If IsNumeric(Page) Then
intPage = CLng(Page)
If intPage < 1 Then
intPage = 1
ElseIf intPage > intTotalPages Then
intPage = intTotalPages
End If
Else
intPage = 1
End If
'**
'* Går till aktuell sida i recordsetet
'**
rs.AbsolutePage = intPage
'## -- visa sidnavigeringen --
Call PageNavigation(intPage, intTotalPages)
'## -- loopa igenom recordsetet och visa posterna fr beskaren/anvndaren --
Response.write "<Table border=""0"">"
If CurrentUser = UserId Then
Do Until rs.EOF OR intCounter >= intPageSize
intCounter = intCounter + 1
Response.write "<Tr><Td></Td></Tr>"
Response.write "<Tr><Td>Datum & tid " & rs("Datum") & " " & rs("Tid") & "</Td></Tr>"
Response.write "<Tr><Td>" & rs("FromUser") & "</Td></Tr>"
Response.write "<Tr><Td>" & Server.HTMLEncode(rs("Messages")) & "</Td></Tr>"
Response.write "<Tr><Td width=""5"" Height=""5""><input type=""button"" onClick=""javascript:myWin('besvara.asp?Userid=" & Rst("FromId") & "');"" value=""BESVARA"" id=button1 name=button1></Td></Tr>
Response.write "<Tr><Td></Td></Tr>"
rs.MoveNext
Loop
Else
Do Until rs.EOF OR intCounter >= intPageSize
intCounter = intCounter + 1
Response.write "<Tr><Td></Td></Tr>"
Response.write "<Tr><Td>Datum & tid " & rs("Datum") & " " & rs("Tid") & "</Td></Tr>"
Response.write "<Tr><Td>" & rs("FromUser") & "</Td></Tr>"
Response.write "<Tr><Td>" & Server.HTMLEncode(rs("Messages")) & "</Td></Tr>"
Response.write "<Tr><Td></Td></Tr>"
rs.MoveNext
Loop
End If
Response.write "</Table>"
End If
End If
'## -- rensa up --
rs.Close
Set rs = Nothing
con.Close
Set con = Nothing
Else
Response.redirect "http://pluget.nu/index.htm"
End If
%>
</BODY>
</HTML>
</code>
Har ingen databas. Så jag har inte testkört den.