webForumDet fria alternativet

Poll (omröstning) som inte funkar

ASP

18 svar · 375 visningar · startad av ChiefJoseph

Medlem sedan okt. 200173 inlägg
Frågan#1

Hej!
Jag har använt mig av en omröstning på min sajt och den har funkat utmärkt men har nu flyttat till en ny adress och får då detta felmeddelande, det finns stöd för ASP.

Response-objekt fel 'ASP 0156 : 80004005'

Fel på huvuden

/poll/poll.asp, rad 108

HTTP-huvudena har redan skrivits till klientläsaren. Ändringar till HTTP-huvudena måste göras innan sidinnehållet skrivs.

Koden är skriven av Åsa Gruvsjö, som för övrigt verkar väldigt duktig.

Här är poll.asp:
<!--#Include file="settings.asp"-->

<!--
************************************************
Omröstning v2
Åsa Gruvsjö © 2001
https://www.gruvsjo.com
Asa@gruvsjo.com

Fri att använda om ni låter copyrightkoden stå kvar!
************************************************
-->

<%
'############################################################################################################
'----------------------------------------------------SENASTE OMRÖSTNINGEN----------------------------------------------------------------------------------
'############################################################################################################

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

Storlek = breddF/100

If Request.Querystring("do") = "" Then

Set RecSet = Conn.Execute("SELECT Top 1 * From fraga Order by PollId desc")%>

\<table border="0" cellpadding="1" cellspacing="1" align="center" width="\<%=Bredd%\>"\>

<%If RecSet.EOF Then%>

  \<tr\>
    \<td colspan="2"\>\<b\>Ingen fråga inlagd\</b\>\</td\>
  \</tr\>

<%Else%>
<tr>
<td colspan="2"><b><%=RecSet("Fraga")%></b></td>
</tr>

\<%Set Svar = Conn.Execute("SELECT \* From svar Where pollID="& RecSet("PollId") & " Order By svarnr")

Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& RecSet("PollId"))
totalt = RS("tot")

RS.Close
Set RS = nothing

If Svar.EOF Then%\>    
  \<tr\>
    \<td colspan="2"\>\<b\>Inga frågor!\</b\>\</td\>
  \</tr\>

<%End If

  Do Until Svar.EOF
    stat     = Svar("klick")
    If stat \<\> 0 Then
       res      = (stat/totalt)\* BreddF / Storlek
    Else
       res = "0"
    End If
   If Request.Cookies(sessionnamn1) = sessionnamn Then%\>
   \<tr\>
      \<td width="\<%=bredd%\>"\>\<%=Svar("svar")%\>\</td\>
      \<td rowspan="2" width="\<%=breddR%\>" valign="bottom" align="right"\>(\<%For i=1 to Len(stat)%\>\<%=Mid(stat,i,1)%\>\<%Next%\>)\</td\>
    \</tr\>
    \<tr\>
      \<td width="\<%=BreddF%\>" bgcolor="#d0d0d0" height="5"\>\<img src="poll/bilder/stapel.gif" width="\<%=Round(res,0)%\>%" height="5" border="1"\>\</td\>
    \</tr\>
   \<%Else%\>
   \<tr\>
      \<td width="\<%=bredd%\>"\>\<a href="\<%=sidan%\>?do=rosta&id=\<%=Svar("id")%\>&val=\<%=Svar("svarnr")%\>"\>\<%=Svar("svar")%\>\</a\>\</td\>
      \<td rowspan="2" width="\<%=breddR%\>" valign="bottom" align="right"\>(\<%For i=1 to Len(stat)%\>\<%=Mid(stat,i,1)%\>\<%Next%\>)\</td\>
    \</tr\>
    \<tr\>
      \<td width="\<%=BreddF%\>" bgcolor="#d0d0d0" height="5"\>\<img src="poll/bilder/stapel.gif" width="\<%=Round(res,0)%\>%" height="5" border="1"\>\</td\>
    \</tr\>
    \<%End If
   Svar.MoveNext
   Loop%\>
    \<tr\>
      \<td colspan="2"\>Antal röster: \<%For i=1 to Len(totalt)%\>\<%=Mid(totalt,i,1)%\>\<%Next%\>\</td\>
    \</tr\>

<%Svar.Close
Set Svar = nothing

End If%>

    \<tr\>
      \<td colspan="2"\>\<hr\>\</td\>
    \</tr\>
    \<tr\>
      \<td colspan="2"\>\<a href="\<%=sidan%\>?do=gamla"\>\</a\> &nbsp; &nbsp; \<a href="admin3.asp" target="\_blank"\>Admin\</a\>\</td\>
    \</tr\>

</table>

<%End If

'############################################################################################################
'----------------------------------------------------KOLLAR OM MAN RÖSTAT-----------------------------------------------------------------------------------
'############################################################################################################

If Request.Querystring("do") = "rosta" Then

If Request.Cookies(sessionnamn1) = sessionnamn then
Response.Redirect sidan
Else
Response.Redirect sidan & "?do=spara&id=" & Request.Querystring("id") & "&val=" & Request.QueryString("val")
End If

End If

'############################################################################################################
'----------------------------------------------------SPARAR RÖSTEN---------------------------------------------------------------------------------------------
'############################################################################################################

If Request.Querystring("do") = "spara" Then

Set RecSet = Conn.Execute("Select * From svar Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val"))

Conn.Execute("Update svar Set klick=klick+1 Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val"))

Response.Cookies(sessionnamn1) = sessionnamn
Response.Cookies(sessionnamn1).Expires = date + 1
Response.Redirect sidan & "?id=" & Request.QueryString("id")

End If

'############################################################################################################
'----------------------------------------------------ALLA OMRÖSTNINGAR---------------------------------------------------------------------------------------
'############################################################################################################

If Request.Querystring("do") = "gamla" Then

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/poll.mdb")
SQL = "Select PollId, Fraga From fraga Order By PollId desc"
Set RecSet = Conn.Execute(SQL)

Do Until RecSet.EOF
PollId = RecSet("PollID")
Fraga = RecSet("Fraga")%>

<table width="<%=Bredd%>" cellspacing="1" cellpadding="1" align="center" border="0">
<tr>
<td colspan="2"><b><%=Fraga%></b></td>
</tr>

<%Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& PollId)
roster = RS("tot")
RS.Close
Set RS = nothing
Set RS = Conn.Execute("Select * From svar Where PollID = " & PollId &" Order By svarnr")

Do Until RS.EOF
stat = RS("klick")
If stat <> 0 Then
res = (stat/roster) * BreddF / Storlek
Else
res = "0"
End If%>
<tr>
<td width="<%=bredd%>"><%=RS("svar")%></td>
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%>)</td>
</tr>
<tr>
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td>
</tr>
<%RS.MoveNext
Loop
Set RS = nothing%>
<tr>
<td colspan="2">Antal röster: <%For i=1 to Len(roster)%><%=Mid(roster,i,1)%><%Next%></td>
</tr>
<tr>
<td colspan="2"><hr></td>
</tr>

<%RecSet.MoveNext
Loop
Set RecSet = nothing%>

\<tr\> 
\<td colspan="2"\>\<b\>«\</b\> \<a href="\<%=sidan%\>"\>Tillbaka\</a\>\</td\>

</tr>
</table>

<%End If

Conn.Close
Set Conn = nothing%>

Medlem sedan maj 2002560 inlägg
#2

om du skall redirecta användaren någonstans så måste response.buffer vara satt till true:

[red]<% @language=vbscript%>
<%
	option explicit
	[b]response.buffer = true[/b]
%>[/red]
Medlem sedan okt. 200173 inlägg
#3

Har provat detta!
Fick rekommendationen av Åsa G. att göra detta men inte heller det funkade. Den kodbiten i toppen är bara tillfälligtvis borta.

Tack för ditt svar!!

Medlem sedan okt. 200173 inlägg
#4

Jag har en liten teori!!
Jag kan ej ASP men förstår en del av logiken.

Kan man på servern ställa in om man skall använda cookies eller ej??? Att det kan ha med detta att göra?

Medlem sedan feb. 200112 078 inlägg
#5

Har du inte ändrat någon inställning för att avaktivera cookies (vilket jag aldrig har hört talas om på serversidan) så funkar det kanon som standard. Så det är nog inte en del av ditt problem.

Det är väl den här raden det handlar om va?

If Request.Cookies(sessionnamn1) = sessionnamn then
Medlem sedan okt. 200173 inlägg
#6

Ja, jag vet faktiskt inte.....faktum är att allt jag gjort är att flytta det från en server till en annan. Jag tror att operativet på servern är NT. Alltså ej 2000.

Medlem sedan maj 2002560 inlägg
#7

Jag är fortfarande inne på att det har med response.buffer att göra. Om jag inte misstar mig helt har NT4 response.buffer satt till false som default och 2000 i sin tur buffern till true.

Du är säker på att du inkluderar sidan med response.buffer på den sidan som krånglar?

Medlem sedan juni 200032 967 inlägg
#8

LR^evil.sid skrev:

Jag är fortfarande inne på att det har med response.buffer att göra. Om jag inte misstar mig helt har NT4 response.buffer satt till false som default och 2000 i sin tur buffern till true.

Du är säker på att du inkluderar sidan med response.buffer på den sidan som krånglar?

Jag är mer eller mindre helt säker på att LR^evil.sid har rätt. Response.buffer = True skall med, men det skall absolut överst på sidan.

Och det är precis som LR^evil.sid säger också att buffer är default false på IIS4 , men true på IIS 5. Det kanske är lite repetition, men jag vill bara understryka att mina erfarenheter säger mig att det är det som är problemet. Been there, done that, liksom.

Mvh

Medlem sedan okt. 200173 inlägg
#9

Tack för att ni svarar och intresserar er.
Jag har provat med både och men har kommit framtill att det är på servern problemet ligger.
Rättigheter och ODBC-kopplingar som inte är rätt.....tror jag alltså.
Kan det stämma???

Medlem sedan juni 200032 967 inlägg
#10

ChiefJoseph skrev:

Rättigheter och ODBC-kopplingar som inte är rätt.....tror jag alltså.
Kan det stämma???

Nej, det tror jag inte. Hur ser hela sidan ut, inklusive response.buffer=true?

mvh,

Medlem sedan dec. 20003 887 inlägg
#11

Jag har för mig att det där felet (80004005) var uppe för bara några trådar sedan och det var om databaskopplingen, som inte var riktigt som den skulle. Problemet då var att ett password i connectionstring:en inte fungerade.

Här är tråden

Om det hjälper dig något vet jag inte, men man kan ju hoppas...

Medlem sedan okt. 200173 inlägg
#12

Jag kan ju passa på att nämna att jag har fler asp-script som ej funkar. Statistik, uppdateringsbara nyheter, länkarkiv....samtliga vill ej fungera.

Medlem sedan okt. 200173 inlägg
#13

Det är precis samma sida som ovan med enda skillnaden att detta nu ligger i toppen.
<%Response.Buffer=True%>

Medlem sedan juni 200032 967 inlägg
#14

Är det samma felmeddelande? Spontant tycker jag att detta borde funka:

<%@Language=VBScript%><%Response.buffer=true%>
<!--#Include file="settings.asp"--> 

<!-- 
************************************************ 
Omröstning v2 
Åsa Gruvsjö © 2001 
[url]www.gruvsjo.com[/url] 
[email]Asa@gruvsjo.com[/email] 

Fri att använda om ni låter copyrightkoden stå kvar! 
************************************************ 
--> 

<% 
'###########################################################
################################################# 
'----------------------------------------------------SENASTE OMRÖSTNINGEN---------------------------------------------------------------------------------- 
'###########################################################
################################################# 

Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db 

Storlek = breddF/100 

If Request.Querystring("do") = "" Then 

Set RecSet = Conn.Execute("SELECT Top 1 * From fraga Order by PollId desc")%> 

<table border="0" cellpadding="1" cellspacing="1" align="center" width="<%=Bredd%>"> 

<%If RecSet.EOF Then%> 

<tr> 
<td colspan="2"><b>Ingen fråga inlagd</b></td> 
</tr> 
<%Else%> 
<tr> 
<td colspan="2"><b><%=RecSet("Fraga")%></b></td> 
</tr> 

<%Set Svar = Conn.Execute("SELECT * From svar Where pollID="& RecSet("PollId") & " Order By svarnr") 

Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& RecSet("PollId")) 
totalt = RS("tot") 

RS.Close 
Set RS = nothing 

If Svar.EOF Then%> 
<tr> 
<td colspan="2"><b>Inga frågor!</b></td> 
</tr> 
<%End If 

Do Until Svar.EOF 
stat = Svar("klick") 
If stat <> 0 Then 
res = (stat/totalt)* BreddF / Storlek 
Else 
res = "0" 
End If 
If Request.Cookies(sessionnamn1) = sessionnamn Then%> 
<tr> 
<td width="<%=bredd%>"><%=Svar("svar")%></td> 
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%> )</td> 
</tr> 
<tr> 
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td> 
</tr> 
<%Else%> 
<tr> 
<td width="<%=bredd%>"><a href="<%=sidan%>?do=rosta&id=<%=Svar("id")%>&val=<%=Svar("svarnr")%>"><%=Svar("svar")%></a></td> 
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%> )</td> 
</tr> 
<tr> 
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td> 
</tr> 
<%End If 
Svar.MoveNext 
Loop%> 
<tr> 
<td colspan="2">Antal röster: <%For i=1 to Len(totalt)%><%=Mid(totalt,i,1)%><%Next%></td> 
</tr> 

<%Svar.Close 
Set Svar = nothing 

End If%> 

<tr> 
<td colspan="2"><hr></td> 
</tr> 
<tr> 
<td colspan="2"><a href="<%=sidan%>?do=gamla"></a>     <a href="admin3.asp" target="_blank">Admin</a></td> 
</tr> 
</table> 

<%End If 

'###########################################################
################################################# 
'----------------------------------------------------KOLLAR OM MAN RÖSTAT----------------------------------------------------------------------------------- 
'###########################################################
################################################# 

If Request.Querystring("do") = "rosta" Then 

If Request.Cookies(sessionnamn1) = sessionnamn then 
Response.Redirect sidan 
Else 
Response.Redirect sidan & "?do=spara&id=" & Request.Querystring("id") & "&val=" & Request.QueryString("val") 
End If 

End If 

'###########################################################
################################################# 
'----------------------------------------------------SPARAR RÖSTEN--------------------------------------------------------------------------------------------- 
'###########################################################
################################################# 

If Request.Querystring("do") = "spara" Then 

Set RecSet = Conn.Execute("Select * From svar Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val")) 

Conn.Execute("Update svar Set klick=klick+1 Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val")) 

Response.Cookies(sessionnamn1) = sessionnamn 
Response.Cookies(sessionnamn1).Expires = date + 1 
Response.Redirect sidan & "?id=" & Request.QueryString("id") 

End If 

'###########################################################
################################################# 
'----------------------------------------------------ALLA OMRÖSTNINGAR--------------------------------------------------------------------------------------- 
'###########################################################
################################################# 

If Request.Querystring("do") = "gamla" Then 

Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/poll.mdb") 
SQL = "Select PollId, Fraga From fraga Order By PollId desc" 
Set RecSet = Conn.Execute(SQL) 

Do Until RecSet.EOF 
PollId = RecSet("PollID") 
Fraga = RecSet("Fraga")%> 

<table width="<%=Bredd%>" cellspacing="1" cellpadding="1" align="center" border="0"> 
<tr> 
<td colspan="2"><b><%=Fraga%></b></td> 
</tr> 

<%Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& PollId) 
roster = RS("tot") 
RS.Close 
Set RS = nothing 
Set RS = Conn.Execute("Select * From svar Where PollID = " & PollId &" Order By svarnr") 

Do Until RS.EOF 
stat = RS("klick") 
If stat <> 0 Then 
res = (stat/roster) * BreddF / Storlek 
Else 
res = "0" 
End If%> 
<tr> 
<td width="<%=bredd%>"><%=RS("svar")%></td> 
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%> )</td> 
</tr> 
<tr> 
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td> 
</tr> 
<%RS.MoveNext 
Loop 
Set RS = nothing%> 
<tr> 
<td colspan="2">Antal röster: <%For i=1 to Len(roster)%><%=Mid(roster,i,1)%><%Next%></td> 
</tr> 
<tr> 
<td colspan="2"><hr></td> 
</tr> 

<%RecSet.MoveNext 
Loop 
Set RecSet = nothing%> 

<tr> 
<td colspan="2"><b>«</b> <a href="<%=sidan%>">Tillbaka</a></td> 
</tr> 
</table> 

<%End If 

Conn.Close 
Set Conn = nothing%>

Mvh,

Medlem sedan okt. 200173 inlägg
#15

Active Server Pages fel 'ASP 0140'

Ogiltig kommandoordning

/poll/poll.asp, rad 1

Kommandot @Language måste vara det första kommandot på Active Server-sidan.

Får detta felmeddelande när jag försöker köra sidan med poll.

Medlem sedan juni 200032 967 inlägg
#16

Inkluderas denna sida i en annan sida?
I så fall måste buffer-instruktionen vara överst i den sidan, och då får du ta bort <%@Language=VBScript%><%Response.buffer=true%> ur koden på den här sidan igen.

mvh,

Medlem sedan okt. 200173 inlägg
#17

Ja det gör den.
Om jag tar bort @lang....så är vi väl tillbaka till samma som förut??

Medlem sedan juni 200032 967 inlägg
#18

Ja, men du måste lägga Response.buffer = true i den sida som inkluderar denna. Överst efter <%@-kommando.

mvh

Medlem sedan okt. 200173 inlägg
#19

Tack nu funkar det förutom att det inte går att uppdatera databasen.
En fråga: På en NT server: IIS: Skall jag gå in på webbdelning och dela ut databasen till alla användare? Och vilka rättigheter är det som gäller.....kör, skriv, läs..os.v.

tACKSAM FÖR SVAR

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)