... kom tyvärr inte på en bra rubrik... Finns en massa script med kod mm på nätet mitt system använder sig av 3 tabeller: Jag kör 2 tabeller, en där jag har frågorna och en där alla alternativ lagras. fördelen med att skapa nya poster för varje röst är att du kan lägga med ipnumret så att personen bara kan rösta en gång osv.Skapa "Röstnings-system"...
Men det jag är efter är om någon vänlig själ orkar förklara hur man skulle kunna bygga en röstnings... /fråga eller vad man skall kalla det. Alltså en sådan som finns på startsidan här på Pellesoft...
Ena veckan vill jag kunna fråga/svara på 3 alternativ typ, nästa vecka kanske det är 2 alternativ, veckan därpå är det kanske 5....
Den skall alltså vara dynamisk, och inte ha typ 3 svarsalternativ varje vecka....
Vill kunna visa svaren både med antal och i procent.... Även gärna lite grafisk i stapel...
Att man inte skall kunna svara mer än en gång per fråga vill jag styra antingen med cookies (eller ev. någon form av userID - om man har inloggning på siten).
Lite tabell förslag och ASP kod skulle sitta fint ;-)
/// MikkeSv: Skapa "Röstnings-system"...
http://www.webwizguide.info/asp/sample_scripts/weekly_poll_script.asp
är en som har alla de krav du ställerSv: Skapa "Röstnings-system"...
Polls: id och fråga (innehåller alla frågor)
Options: innehåller alla svarsalternativ har en pollID som pekar till respektive post i polls
Answers: lägger till en post med koppling till optionID
sedan kopplar man ihop allt när man vill visa det. du räknar hur många som röstat totalt och delar det sen med varje alternativ i loopen för att få fram procent.
nåt i den stilen...Sv: Skapa "Röstnings-system"...
Tabell poll:
ID, räknare
Fraga, text
Aktiv, tal
Tabell poll_val:
ID, räknare
PollID, tal
Val, text
Roster, tal
Så här ser min kod ut vid röstningen.
<Code>
<%
if Request.QueryString("do") = "rosta" Then
Set pollval = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM poll_val WHERE id = "& request.Form("val") &""
pollval.Open Addera, DATA, adOpenStatic, adLockOptimistic
pollval("roster") = pollval("roster") + 1
Response.Cookies("uppsalafrisbee")("poll") = pollval("pollID")
Response.Cookies("uppsalafrisbee").Expires = DateAdd("d", 90, Date)
pollval.Update
pollval.Close
Response.Redirect("\?p="& Request.QueryString("p") &"&m="& Request.QueryString("m") &"&sub="& Request.QueryString("sub") &"")
end if
%>
<FORM ACTION="start.asp?p=<% =Request.QueryString("p") %>&m=<%=Request.QueryString("m")%>&sub=<%=Request.QueryString("sub")%>&do=rosta" METHOD="post">
<%
Set poll = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM poll WHERE Aktiv = 1"
poll.Open Addera, DATA, adOpenStatic, adLockOptimistic
%>
<% if poll.EOF Then %>
Det finns ingen fråga.
<% else %>
<% =poll("fraga") %><P>
<%
Set pollval = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM poll_val WHERE pollID = "& poll("id") &""
pollval.Open Addera, DATA, adOpenStatic, adLockOptimistic
if Request.Cookies("Uppsalafrisbee")("poll") = ""& poll("id") &"" Then
Set summa = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT sum(roster) as summan FROM poll_val WHERE pollID = "& poll("id") &""
summa.Open Addera, DATA, adOpenStatic, adLockOptimistic
%>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="0" CELLPADDING="0">
<% do until pollval.EOF %>
<TR>
<TD CLASS="TabellText"><% =pollval("val") %></TD>
<TD CLASS="TabellText"><IMG SRC="bilder/svart.gif" WIDTH="<% =int(pollval("roster") / summa("summan") * 50) %>" HEIGHT="10"></TD>
<TD CLASS="TabellText"><% =int(pollval("roster") / summa("summan") * 100) %>%</TD>
</TR>
<% pollval.MoveNext %>
<% loop %>
</TABLE>
<%
summa.Close
else
do until pollval.EOF %>
<INPUT TYPE="RADIO" VALUE="<% =pollval("id") %>" NAME="val"><% =pollval("val") %><BR>
<% pollval.MoveNext %>
<% loop %>
<P>
<INPUT TYPE="SUBMIT" CLASS="knapp" VALUE="Rösta">
</FORM>
<% end if %>
<% pollval.Close %>
<% poll.Close %>
<% end if %>
</code>
Koden för den administrerade biten ser ut så här:
<code>
if Request.QueryString("do") = "new" Then
Set pollAktiv = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM poll WHERE Aktiv = 1"
pollAktiv.Open Addera, DATA, adOpenStatic, adLockOptimistic
do until pollAktiv.EOF
pollAktiv("Aktiv") = 0
pollAktiv.MoveNext
loop
PollAktiv.Close
Set poll = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM poll"
poll.Open Addera, DATA, adOpenStatic, adLockOptimistic
poll.AddNew
poll("fraga") = request.Form("fraga")
poll("Aktiv") = 1
poll.Update
poll.Close
Set pollval = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM poll_val"
pollval.Open Addera, DATA, adOpenStatic, adLockOptimistic
Set pollID = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT id FROM poll WHERE Aktiv = 1"
pollID.Open Addera, DATA, adOpenStatic, adLockOptimistic
x = 1
do until x > 5
if len(request.Form("alt"& x)) > 0 Then
pollval.AddNew
pollval("Val") = request.Form("alt"& x)
pollval("pollID") = pollID("id")
pollval.Update
end if
x = x + 1
loop
pollID.Close
pollval.Close
Response.Redirect("\?p="& Request.QueryString("p") &"&m="& Request.QueryString("m") &"&sub="& Request.QueryString("sub") &"")
end if
%>
<TABLE BORDER="0" ALIGN="center">
<TR>
<TD CLASS="TabellText">
Ny fråga <P>
<FORM ACTION="admin.asp?p=<% =Request.QueryString("p") %>&m=<%=Request.QueryString("m")%>&sub=<%=Request.QueryString("sub")%>&do=new" METHOD="post">
Fråga:<BR>
<TEXTAREA NAME="fraga" CLASS="fill" STYLE="width: 210px"></TEXTAREA><P>
Alternativ 1: <INPUT TYPE="text" CLASS="fill" NAME="alt1"><BR>
Alternativ 2: <INPUT TYPE="text" CLASS="fill" NAME="alt2"><BR>
Alternativ 3: <INPUT TYPE="text" CLASS="fill" NAME="alt3"><BR>
Alternativ 4: <INPUT TYPE="text" CLASS="fill" NAME="alt4"><BR>
Alternativ 5: <INPUT TYPE="text" CLASS="fill" NAME="alt5"><P>
<INPUT TYPE="submit" CLASS="knapp" VALUE="Lägg till">
</FORM>
</TD>
</TR>
</TABLE>
</code>Sv: Skapa "Röstnings-system"...