webForumDet fria alternativet

Omröstningscript?

40 svar · 336 visningar · startad av ReloadMaster

ReloadMasterMedlem sedan aug. 2001239 inlägg
#1

Tjena!
Jag skulle behöva hjälp med ett omröstningsscript...

Här är koden:
<html>
<head>
<title>Omröstning - _ _ _ _ _ _.nu</title>
</head>
<body>

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("votedb.mdb")

SQL = "SELECT top 1 * From rosta ORDER BY ID DESC"
Set RecSet = Connect.Execute(SQL)

If RecSet.EOF Then
%>

Inga Omröstningar för tillfället...

<%
Else
Do Until RecSet.EOF
fraga = Recset("fraga")
svar1 = Recset("svar1")
svar2 = Recset("svar2")
svar3 = Recset("svar3")
svar4 = Recset("svar4")
svar5 = Recset("svar5")
svar6 = Recset("svar6")
svar7 = Recset("svar7")
svar8 = Recset("svar8")
svar9 = Recset("svar9")
svar10 = Recset("svar10")
%>
<hr>
Fråga: <% =fraga%>
Svar:<br>
<a href="omrostning.asp?rosta=1"><% =svar1%></a><br>
<a href="omrostning.asp?rosta=2"><% =svar2%></a><br>
<a href="omrostning.asp?rosta=3"><% =svar3%></a><br>
<a href="omrostning.asp?rosta=4"><% =svar4%></a><br>
<a href="omrostning.asp?rosta=5"><% =svar5%></a><br>
<a href="omrostning.asp?rosta=6"><% =svar6%></a><br>
<a href="omrostning.asp?rosta=7"><% =svar7%></a><br>
<a href="omrostning.asp?rosta=8"><% =svar8%>v<br>
<a href="omrostning.asp?rosta=9"><% =svar9%></a><br>
<a href="omrostning.asp?rosta=10"><% =svar10%></a><br>
<%
RecSet.MoveNext
Loop
End If
%>

<%
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
%>

<hr>
<a href="omrostning.asp?visa=resultat">Visa resultat</a>
<a href="omrostning_admin.asp?admin=login">Ändra Omröstning</a>
</body>
</html>

Jag skulle vilja att där koden anropar svar1, svar2, o.s.v.
att den kollar om den är tom och är den tom så skriver den inte ut länken...

------------------
.................

PaceMedlem sedan juni 20019 024 inlägg
#2

Försök att göra om kodrader som gör samma sak till en "For Next" loop istället, eftersom du då enklare kan hantera dem... byt ut följande:

fraga = Recset("fraga")
svar1 = Recset("svar1")
svar2 = Recset("svar2")
svar3 = Recset("svar3")
svar4 = Recset("svar4")
svar5 = Recset("svar5")
svar6 = Recset("svar6")
svar7 = Recset("svar7")
svar8 = Recset("svar8")
svar9 = Recset("svar9")
svar10 = Recset("svar10")
%>
<hr>
Fråga: <% =fraga%>
Svar:<br>
<a href="omrostning.asp?rosta=1"><% =svar1%></a><br>
<a href="omrostning.asp?rosta=2"><% =svar2%></a><br>
<a href="omrostning.asp?rosta=3"><% =svar3%></a><br>
<a href="omrostning.asp?rosta=4"><% =svar4%></a><br>
<a href="omrostning.asp?rosta=5"><% =svar5%></a><br>
<a href="omrostning.asp?rosta=6"><% =svar6%></a><br>
<a href="omrostning.asp?rosta=7"><% =svar7%></a><br>
<a href="omrostning.asp?rosta=8"><% =svar8%>v<br>
<a href="omrostning.asp?rosta=9"><% =svar9%></a><br>
<a href="omrostning.asp?rosta=10"><% =svar10%></a><br>

till detta, så ska det nog fungera:

Response.Write "<HR>Fråga: " & Recset("fraga") & "<br>Svar:<br>"

For loopCount = 1 To 10
 If recset("svar" & loopCount) = "" Then Exit For
 Response.Write "<a href=""omrostning.asp?rosta=" & loopCount &  """>" & recset("svar" & loopCount) & "</a><br>"
Next

[r] Det kan ju vara ganska kinkigt att kolla om strängen är tom (dvs sträng = "") så man kan ju ändra det till

If IsEmpty(recset("svar" & loopCount)) OR IsNull(recset("svar" & loopCount)) Then

------------------
Peter D

[Redigerat av Pace den 24 aug 2001]

ReloadMasterMedlem sedan aug. 2001239 inlägg
#3

Flyttar upp...
Den lite

Frågan är fortfarande hur jag kan få den med koden att kolla om datbas fältet är tomt och då inte skriva ut det...

------------------
Das Dunkhopf...

PaceMedlem sedan juni 20019 024 inlägg
#4

Jo, det gör den också (kanske var lite otydlig):

For loopCount = 1 To 10
If recset("svar" & loopCount) = "" Then Exit For
Response.Write "<a href=""omrostning.asp?rosta=" & loopCount & """>" & recset("svar" & loopCount) & "</a><br>"
Next

------------------
Peter D

[Redigerat av Pace den 25 aug 2001]

ReloadMasterMedlem sedan aug. 2001239 inlägg
#5

Jag får det inte att funka finns det någon som kan hjälpa mig med ett annat sätt eller hjälpa mig att skriva om hela skiten...

------------------
Das Dunkhopf...

ekke_tMedlem sedan juli 2001203 inlägg
#6

Den enklaste men kanske inte snyggaste metoden är väl att bara skriva:

<%if svar1 <> "" then%>
<a href="omrostning.asp?rosta=1"><% =svar1%></a><br>
<%end if%>

detta upprepas sen för alla svaren...

------------------
Erik

[Redigerat av ekke_t den 27 aug 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Hur ser din kod ut nu? Använder du den Pace skrev?

Vad har du för problem.

------------------
essentitia preter non sans multiplicandum

ReloadMasterMedlem sedan aug. 2001239 inlägg
#8

Jag vet inte hur jag ska använda Pace kod för när jag försökte köra den så klagade den bara på End i If satsen trots att jag hade kvar If och Else...
Och sedan krävde den en loop som loppade i onädnlighet...

------------------
Das Dunkhopf...

PaceMedlem sedan juni 20019 024 inlägg
#9

Posta koden!

------------------
Peter D

ReloadMasterMedlem sedan aug. 2001239 inlägg
#10

Här:

<html>
<head>
<title>Omröstning - _ _ _ _ _ _.nu</title>
</head>
<body>

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("votedb.mdb")

SQL = "SELECT top 1 * From rosta ORDER BY ID DESC"
Set RecSet = Connect.Execute(SQL)

If RecSet.EOF Then
%>

Inga Omröstningar för tillfället...

<%
Else
Do Until RecSet.EOF
Response.Write "<HR>Frågan: " & Recset("fraga") & "<br>Svar:<br>"
For loopCount = 1 To 10
If recset("svar" & loopCount) = "" Then Exit For
Response.Write "<a href=""omrostning.asp?rosta=" & loopCount & """>" & recset("svar" & loopCount) & "</a><br>"
Next

Loop

End If
%>

<%
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
%>

<hr>
<a href="omrostning.asp?visa=resultat">Visa resultat</a>
<a href="omrostning_admin.asp?admin=login">Ändra Omröstning</a>
</body>
</html>

------------------
Das Dunkhopf...

PaceMedlem sedan juni 20019 024 inlägg
#11

Det blåa är omgjort.

<html>
<head>
<title>Omröstning - _ _ _ _ _ _.nu</title>
</head>
<body>

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("votedb.mdb")

SQL = "SELECT top 1 * From rosta ORDER BY ID DESC" 
Set RecSet = Connect.Execute(SQL)

If RecSet.EOF Then
   Response.Write "Inga Omröstningar för tillfället..."
Else
   Response.Write "<HR>Frågan: " & Recset("fraga") & "<br>Svar:<br>" 

   For loopCount = 1 To 10
   If recset("svar" & loopCount) = "" Then Exit For
   Response.Write "<a href=""omrostning.asp?rosta=" & loopCount & """>" & recset("svar" & loopCount) & "</a><br>"
   Next
End If

RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
%>

<hr>
<a href="omrostning.asp?visa=resultat">Visa resultat</a>
<a href="omrostning_admin.asp?admin=login">Ändra Omröstning</a>
</body>
</html>

[r] De blåmarkerade raderna gör att du loopar recordsetet utan att gå framåt... då måste du använda recset.MoveNext (men det ska du inte gör nu!). Och eftersom varje poll innefattar en post, vill vi ju inte gå igenom varje poll som ligger i databasen, utan bara den första (TOP 1).

Hoppas du blev klokare, annars får du fråga igen :)

Do Until RecSet.EOF
Response.Write "<HR>Frågan: " & Recset("fraga") & "<br>Svar:<br>" 
For loopCount = 1 To 10
If recset("svar" & loopCount) = "" Then Exit For
Response.Write "<a href=""omrostning.asp?rosta=" & loopCount & """>" & recset("svar" & loopCount) & "</a><br>"
Next
Loop

------------------
Peter D

[Redigerat av Pace den 27 aug 2001]

ReloadMasterMedlem sedan aug. 2001239 inlägg
#12

Jag använde din text som du skrev överst utan loop och det...

Men nu får jag felet oväntad "Next"

------------------
Das Dunkhopf...

[Redigerat av ReloadMaster den 27 aug 2001]

PaceMedlem sedan juni 20019 024 inlägg
#13

Ser koden ut exakt likadan som den jag postade ovan? :q

------------------
Peter D

ReloadMasterMedlem sedan aug. 2001239 inlägg
#14

Så här:

<html>
<head>
<title>Omröstning - _ _ _ _ _ _.nu</title>
</head>
<body>
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("votedb.mdb")

SQL = "SELECT top 1 * From rosta ORDER BY ID DESC"
Set RecSet = Connect.Execute(SQL)

If RecSet.EOF Then
%> 

Inga Omröstningar för tillfället... 

<%
Response.Write "<HR>Frågan: " & Recset("fraga") & "<br>Svar:<br>"  
For loopCount = 1 To 10
If recset("svar" & loopCount) = "" Then
Exit For 
Response.Write "<a href=""omrostning.asp?rosta=" & loopCount & """>" & recset("svar" & loopCount) & "</a><br>" 

Next 

End If  

RecSet.Close 
Set RecSet = Nothing 
Connect.Close 
Set Connect = Nothing 
%>  

<hr> 
<a href="omrostning.asp?visa=resultat">Visa resultat</a> 
<a href="omrostning_admin.asp?admin=login">Ändra Omröstning</a> 

</body>
</html>

------------------
Das Dunkhopf...

PaceMedlem sedan juni 20019 024 inlägg
#15
If recset("svar" & loopCount) = "" Then
Exit For

skall skrivas på en rad:

If recset("svar" & loopCount) = "" Then Exit For

------------------
Peter D

ReloadMasterMedlem sedan aug. 2001239 inlägg
#16

Så nu funkar allt...

Utom en sak....

Koden blir så här:

<html>
<head>
<title>Omröstning - _ _ _ _ _ _.nu</title>
</head>
<body>

Frågan:Testar jag?<br> 
Svar:<br>  
<a href="omrostning.asp?rosta=1">Ja</a><br><a href="omrostning.asp?rosta=2">Nej</a><br><a href="omrostning.asp?rosta=3"></a><br><a href="omrostning.asp?rosta=4"></a><br><a href="omrostning.asp?rosta=5"></a><br><a href="omrostning.asp?rosta=6"></a><br><a href="omrostning.asp?rosta=7"></a><br><a href="omrostning.asp?rosta=8"></a><br><a href="omrostning.asp?rosta=9"></a><br><a href="omrostning.asp?rosta=10"></a><br>  

<hr> 
<a href="omrostning.asp?visa=resultat">Visa resultat</a> 
<a href="omrostning_admin.asp?admin=login">Ändra Omröstning</a> 

</body>
</html>

Och som du ser blir det en massa radbrytningar kan jag bli av med dom på något sätt?

------------------
Das Dunkhopf...

PaceMedlem sedan juni 20019 024 inlägg
#17

Menar du <br>? :q

------------------
Peter D

ReloadMasterMedlem sedan aug. 2001239 inlägg
#18

Japp

------------------
Das Dunkhopf...

PaceMedlem sedan juni 20019 024 inlägg
#19

Som jag skrev innan, recset kan vara lite kinkigt ibland, testa detta:

If IsEmpty(recset("svar" & loopCount)) OR IsNull(recset("svar" & loopCount)) OR recset("svar" & loopCount) = "" Then Exit For

------------------
Peter D

ReloadMasterMedlem sedan aug. 2001239 inlägg
#20

Tack så himla mycket fungerar asbra nu...

------------------
Das Dunkhopf...

140 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)