---
title: "Avancerad Poll"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/94541-avancerad-poll"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "M.Cheraghi"
published: "2004-01-11T16:03:02.000Z"
updated: "2004-01-13T06:20:54.000Z"
replies: 22
views: 498
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/94541-avancerad-poll"
---

# Avancerad Poll

_Sida 1 av 2._

## #1 — M.Cheraghi, 2004-01-11T16:03Z

helopp!

har gjort en poll, som är väääldigt enkel! tre svars alternativ! Ja / Nej / vet ej, och grafiska bar som visa procent på rösningarna och lite kakor och sånt!

men..
Nu vill jag skapa en mer avancerad poll där jag kan bestämma hur många svarsalternativ det skall finnas t.ex kan den se ut så här!

```
Vad tycker du om webforum?
Superduperbra!
kan bli bättre
webforum?
```

elelr kanske

```
Hur ofta sitter du vid datorn?
1 ggr i veckan
1 ggr per dag
10 ggr per dag
25 gånger per år
osv
osv
osv
```

I stort sätt det jag har problem med är databasens uppbyggnad för denna sorts poll. resten e väl förhoppningsvis inga problem :) jag spekulerar lite kring detta, men det går inte så bra! :(

**Poll**
id - räknare
pollid - tal (så man håller koll på vad som hör till vad)

MVH

Permalänk: https://www.webforum.nu/p/94541

## #2 — anno, 2004-01-11T16:25Z

Så här kan man tänka sig att det kan se ut.

En huvudtabell med allmän info om omröstningen:
**tblPoll** 
PollID (Räknare)
Name (Namn på omröstningen)
Question (Frågan)
Start (Startdatum)
End (Slutdatum)

En tabell med alla svarsalternativ:
**tblOption**
OptionID (Räknare)
PollID
Option (Svarsalternativ)

En tabell med alla inkomna svar:
**tblAnswer**
AnswerID (Räknare)
PollID
OptionID

Med hjälp av PollID så kopplar du ihop svarsalternativen och svaren som gjorts med huvudtabellen och med denna struktur kan du lägga till hur många svarsalternativ som helst.

Permalänk: https://www.webforum.nu/p/1247418

## #3 — M.Cheraghi, 2004-01-11T16:29Z

Okej tack så mkt! D där blev bokstavligen avancerat!
ska klura lite på det där =)

MVH

Permalänk: https://www.webforum.nu/p/1247423

## #4 — M.Cheraghi, 2004-01-11T17:35Z

Okej nu har jag tänkt och knåpat en hel del! Och kommit en bra bit på vägen! Jag har lyckats hämta frågan och alla svarsalternativ som hör till just den pollen! men just där jag har **Fetmarkerat** vill jag visa hur många procent som har svarat på just det svars alternativet! och det som är ***kursivt*** är SQL frågan för att hämta svar som till hör just denna POLL vet att man skall ha

Procent = Delen / det hela \* 100

det är inte det som är problemet, men just hur jag ska loopa ut resultatet har jag inte förstått ännu =/

Tabell uppsättningen är som den som är beskriven här ovan!

```
%
' Databaskoppling
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/poll.mdb")&";"

' Hämta fråga
strSQL = "select * from tblPoll ORDER BY PollID DESC"
set RSpoll = conn.execute(strSQL)

' ID för den senaste Pollen
pollId = RSpoll("pollid")

' Hämta alla svarsalternativ
strSQL = "select * from tblOption WHERE PollID = '"&pollid&"'"
set RSOption = conn.execute(strSQL)

[b][i]' Hämta alla resultat
strSQL = "select * from tblAnswer WHERE PollID = '"&pollid&"'"
set RSAnswer = conn.execute(strSQL)[/i][/b]

fraga = RSpoll("question")
%>

<table width="550" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td bgcolor="#CC0000"><%=fraga%></td>
  </tr>
<%
Do until RSOption.eof
svar = RSOption("option")
%>
  <tr>
    <td><%=svar%></td>
  </tr>
  <tr>
    <td>[b]Här vill jag visa antalet procent[/b]</td>
  </tr>
<%
RSOption.movenext
loop
%>
  <tr>
    <td>antal</td>
  </tr>
</table>

<%
Conn.close
RSPoll.close
RSOption.close
RSAnswer.close
Set Conn = nothing
Set RSPoll = nothing
Set RSoption = nothing
Set RSAnswer = nothing
%>
```

Permalänk: https://www.webforum.nu/p/1247454

## #5 — M.Cheraghi, 2004-01-11T19:48Z

Nu har jag jobbat vidare lite, och skall testa en teori :)! Men har kört fast! Min count vill inte fungera! :(

både kolumnen PollID och OptionID är av typen "TAL"

```
<%
Do until RSOption.eof
svar = RSOption("option")
opid = RSOption("OptionID")

SQL = "SELECT Count(OptionID) AS intAntal FROM tblAnswer WHERE PollID = "&PollID&" AND OptionID = "&opid&""
Set RScount = conn.execute(SQL)
%>
  <tr>
    <td><%=svar%></td>
  </tr>
  <tr>
    <td><%=intAntal(0) %></td>
  </tr>
<%
RSOption.movenext
loop
%>
```

och felmeddelandet jag får är! Line 41 är SQL count frågan!

> Körningsfel i Microsoft VBScript (0x800A000D)
> Inkompatibla typer: 'intAntal'
> /community/poll_show.asp, line 41

Permalänk: https://www.webforum.nu/p/1247525

## #6 — Engine^, 2004-01-11T19:56Z

Det kanske beror på att du är trött... ;)

```
<tr>
  <td><%=[b]RScount(0)[/b]%></td>
</tr>
```

Permalänk: https://www.webforum.nu/p/1247530

## #7 — M.Cheraghi, 2004-01-11T19:58Z

> **Engine^ skrev:**
>
> Det kanske beror på att du är trött... ;)
>
>
> ```
> <tr>
>   <td><%=[b]RScount(0)[/b]%></td>
> </tr>
> ```

Det ryktas om det! :) Tack så mkt Engine :)

Permalänk: https://www.webforum.nu/p/1247532

## #8 — Engine^, 2004-01-11T19:59Z

Hehe.

Varsågod :)

Permalänk: https://www.webforum.nu/p/1247534

## #9 — M.Cheraghi, 2004-01-12T17:11Z

Pollen verkar fungera utmärkt nu när jag har massa värden i databasen som åså! har inte skapat så den röstar ännu! =P men hur som hälst! Nu till mitt nästa problem!

på min adminsida hade jag tänkt att ha 10st textfält som man kan skriva in olika svars alternativ! varje form heter 1 2 3 4 5 osv osv! men hur skall jag gör på sidan där allt läggs in i självaste databasen att den endast fyller i formulär

1, 2, 3, 4 (av alla tio)

så skall den endast lägga in 4 nya poster i databasen istället för att skicka in 10 poster till databasen som är anknytna till den pollen fast endast det endast finns 4 svars alternativ och restrerande 6 poster förblir blanka och det ser fult ut på självaste hemsidan!

Nån som förstår vad jag dillar om?

MVH

Permalänk: https://www.webforum.nu/p/1247982

## #10 — Jesper T, 2004-01-12T17:14Z

/r

Permalänk: https://www.webforum.nu/p/1247988

## #11 — @nders, 2004-01-12T17:14Z

Se bara till att du inte stoppar in något om fältvärdet från formuläret är tomt. Om vi utgår ifrån att du har tio fält i formuläret som heter svar1, svar2 osv t.o.m. svar10 kan man göra något sånt härnt:

```
for i = 1 to 10
   strValue = Request.Form("svar" & i)
   if strValue <> "" then
        ' Här görs insert med strValue som värde på svarsalternativet.
   end if
Next
```

Hajaru? :)

Mvh

Permalänk: https://www.webforum.nu/p/1247989

## #12 — M.Cheraghi, 2004-01-12T17:16Z

> **@nders skrev:**
>
> Se bara till att du inte stoppar in något om fältvärdet från formuläret är tomt. Om vi utgår ifrån att du har tio fält i formuläret som heter svar1, svar2 osv t.o.m. svar10 kan man göra något sånt härnt:
>
> ```
> for i = 1 to 10
>    strValue = Request.Form("svar" & i)
>    if strValue <> "" then
>         ' Här görs insert med strValue som värde på svarsalternativet.
>    end if
> Next
> ```
>
> Hajaru? :)
> 
> Mvh

Ouh.. snabba svar här! Precis det jag letade efter! Tackar Tackar! =)

Permalänk: https://www.webforum.nu/p/1247990

## #13 — Jesper T, 2004-01-12T17:16Z

Kan man inte lägga in alla tio och sedan plocka bort de rader som är tomma?
Kanske är mindre effektivt?

Permalänk: https://www.webforum.nu/p/1247991

## #14 — @nders, 2004-01-12T17:19Z

> **Jesper T skrev:**
>
> Kan man inte lägga in alla tio och sedan plocka bort de rader som är tomma?
> Kanske är mindre effektivt?

Jo, det är klart man kan, men det är helt klart mindre effektivt.

Inte köper du tio förpackningar ägg bara för att de låg tillsammans i affären, för att sedan bara vända när du kommer hem, *"Jag ville ändå bara ha ett paket"*? ;)

Mvh

Permalänk: https://www.webforum.nu/p/1247994

## #15 — Jesper T, 2004-01-12T17:23Z

Nej, men om jag köper tio förpackningar ägg och sju utav dem är tomma så kan jag ju slänga de tomma när jag kommer hem.
Fast det är klart, det är ju onödigt att bära hem tomma förpackningar såvida man inte skall bygga en studio klädd med äggkartonger.... ;)

Permalänk: https://www.webforum.nu/p/1247997

## #16 — M.Cheraghi, 2004-01-12T18:23Z

Uäh!

```
PollID = RSPoll("PollID")
for i = 1 to 10
   strValue = Request.Form("svar" & i)
   if strValue <> "" then
        SQL = "INSERT INTO tblOption (PollID, Option) VALUES ('"&PollID&"' , '"&strValue&"')"
	conn.execute(SQL)
   end if
Next
```

Genererar följande tråkigheter!

> Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
> \[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Syntaxfel i INSERT INTO-uttryck.

Har kollat så alla taellnamn stämmer osv! Testat att ta bort enkel fjuttar! utan några resultat!
Tar jag bort och skriver Response.write RSPoll("PollID"), så får jag fram en siffra, vilket gör att man kan utesluta det problemet!
SQL strängen ser hel ut för mig!?

Permalänk: https://www.webforum.nu/p/1248028

## #17 — Jesper T, 2004-01-12T18:28Z

1\. ("&PollID&", '"&strValue&"'....
2\. Skriv ut :

```
SQL = "INSERT INTO tblOption (PollID, Option) VALUES ('"&PollID&"' , '"&strValue&"')"
	'conn.execute(SQL)
Response.write SQL
```

Permalänk: https://www.webforum.nu/p/1248031

## #18 — @nders, 2004-01-12T18:28Z

Option är ett reserverat ord. Byt namn på fältet.

Mvh

Permalänk: https://www.webforum.nu/p/1248032

## #19 — M.Cheraghi, 2004-01-12T18:35Z

> **@nders skrev:**
>
> Option är ett reserverat ord. Byt namn på fältet.
> 
> Mvh

Du hade rätt! (igen) :) Danke Schön

Permalänk: https://www.webforum.nu/p/1248037

## #20 — M.Cheraghi, 2004-01-12T18:40Z

men nu skall vi inte ha så himla bråttom! när jag skapar en ny poll! så finns det inga resultat i databasen eftersom ingen har hunnit rösta ännu, och när jag försöker hämta pollen på första sidan så får jag felmedelande "Spill" hur löser jag detta då? med tanke på att jag vill juhe inte lägga in ett svar som inte är giltigt o fuska på en frånt =) hehe den nya uppdaterade koden ser som såhär!

```
<%
' Databaskoppling
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/poll.mdb")&";"

' Hämta fråga
strSQL = "select * from tblPoll ORDER BY PollID DESC"
set RSpoll = conn.execute(strSQL)

' ID för den senaste Pollen
pollId = RSpoll("pollid")

' Hämta alla svarsalternativ
strSQL = "select * from tblOption WHERE PollID = "&pollid&""
set RSOption = conn.execute(strSQL)

' Hämta alla resultat
strSQL = "select * from tblAnswer WHERE PollID = "&pollid&""
set RSAnswer = conn.execute(strSQL)

fraga = RSpoll("question")
%>
<table class="td" width="535" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td bgcolor="#CC0000"><span class="style1">Omröstning</span></td>
  </tr>
        <tr>
    <td height="1"></td>
  </tr>
    <tr>
    <td bgcolor="#CCCCCC"><b><%=fraga%></b></td>
  </tr>
      <tr>
    <td height="1"></td>
  </tr>
<%
SQL = "SELECT Count(*) AS intAntal FROM tblAnswer WHERE PollID = "&pollid&""
Set RSCountallt = conn.execute(SQL)

Do until RSOption.eof
svar = RSOption("svarsval")
opid = RSOption("OptionID")

SQL = "SELECT Count(*) AS intAntal FROM tblAnswer WHERE PollID = "&pollid&" AND OptionID = "&opid&""
Set RSCountdel = conn.execute(SQL)
%>
  <tr>
    <td bgcolor="#E0DFE3"><%=svar%></td>
  </tr>

  <tr>
    <td bgcolor="#E0DFE3"><%
procent = Round(RSCountdel(0) / RSCountallt(0) * 100)

%><IMG src="syspic/nbar.gif" height="5" width="<%=procent%>%"> <%=procent%>%</td>
  </tr>
        <tr>
    <td height="1"></td>
  </tr>
<%
RSOption.movenext
loop
%>
  <tr>
    <td bgcolor="#E0DFE3">Antal röster = <%=RSCountallt(0)%></td>
  </tr>
        <tr>
    <td height="1"></td>
  </tr>
</table>

<%
RSOption.close
RSPoll.close
RSAnswer.close
Conn.close
Set Conn = nothing
Set RSoption = nothing
Set RSAnswer = nothing
Set RSPoll = nothing
%>
```

Permalänk: https://www.webforum.nu/p/1248038

---

Tråden på webben: https://www.webforum.nu/amne/asp/94541-avancerad-poll  
Nästa sida: https://www.webforum.nu/amne/asp/94541-avancerad-poll/page2.md
