Avatar billede webbe Nybegynder
05. april 2002 - 09:29 Der er 9 kommentarer og
1 løsning

Vælg 4 tilfældige poster og skriv ud

Hejsa

Jeg har et site med konkurrencer.

I admin-modulet får man så listet alle de rigtige svar.

Jeg vil gerne have, at når man klikker på en submit-knap køres der et script igennem der udvælger X-antal tilfældige Id'er af dem der har svaret rigtigt.
Jeg ved bare ikke helt hvordan jeg skal gribe det an.

Jeg håber I kan se idéen i ovenstående.
Avatar billede The Real Yoda Juniormester
05. april 2002 - 09:57 #1
<%for t=1 to antalvindere
sql="select count(*) as antal from tabelnavn where svar='rigtigt'"
set record=rs.execute(sql)
sql="select * from tabelnavn where svar='rigtigt'"
set rigtigesvar=rs.execute(sql)
Randomize
RandNum1 = Int(Rnd * record("antal")) + 1
if not rigtigesvar.bof then rigtigesvar.movefirst
record.Move RandNum1-1
response.write "vinnerid:"&rigtigesvar("id")&"<br>"
sql="update tabelnavn set svar='trukket vinder' where id="&rigtigesvar("id")"
set record=rs.execute(sql)
next
%>

du skriver bare hvor mange vindere du vil have i stedet for antalvindere

så skulle denne kode udskrive ID'et på alle vinderne

og den tager ikke samme id to gange og den sørger for at markere i databasen hvem der har vundet... så du altid kan gå tilbage og se det.
Avatar billede webbe Nybegynder
05. april 2002 - 10:00 #2
Tabellen indeholde både Id og Quiz_id, så der er ikke grund til at lave opdateringen, men jeg tjekker det lige.
Avatar billede The Real Yoda Juniormester
05. april 2002 - 10:07 #3
updaten er nu mest for atden samme vinder ikke trækkes to gange i træk
Avatar billede webbe Nybegynder
05. april 2002 - 10:27 #4
Har nu lavet følgende:

<%
        For i = 1 to 2
       
        sql = "SELECT COUNT(*) AS Antal FROM Svar WHERE Quiz_id="&Request.QueryString("quiz_id")&" AND Svar='"&Request.QueryString("svar")&"'"
        Set rs = Connect.Execute(sql)
       
        strSQL = "SELECT * FROM Svar WHERE Quiz_id="&Request.QueryString("quiz_id")&" AND Svar='"&Request.QueryString("svar")&"'"
        Set rs1 = Connect.Execute(strSQL)
        %>
        <tr>
            <td width="250">
                <font face="Verdana" size="1">
                    <%
                    Randomize
                    RandNum1 = Int(Rnd*rs("Antal"))+1
                   
                    If not rs1.bof Then
                        rs1.movefirst
                        rs.Move RandNum1-1
                    %>
                    <%=rs1("Navn")%><br>
                    <%=rs1("Adresse")%><br>
                    <%=rs1("Postnr")%>&#32;<%=rs1("City")%><br>
                    <a href="mailto:<%=rs1("Email")%>"><%=rs1("Email")%></a>
                    <br><br>
                    <%
                    End if
                   
                    updSQL = "UPDATE Svar SET Udtrukket='on' WHERE Id="&rs1("Id")
                    Connect.Execute(updSQL)
                    %>
                </font>
            </td>
        </tr>
        <%
        Next
        %>

Men den udtrækker samme navn to gange!
Avatar billede webbe Nybegynder
05. april 2002 - 10:33 #5
Fandt det selv - følgende linie

rs.Move RandNum1-1

skal være

rs1.Move RandNum1-1
Avatar billede webbe Nybegynder
05. april 2002 - 10:34 #6
Men du skal have dine point!
Avatar billede webbe Nybegynder
05. april 2002 - 10:35 #7
Den kan dog stadig godt trække samme navn/id ud to gange....hvordan kan det være?
Avatar billede larsen1 Nybegynder
05. april 2002 - 10:59 #8
Tilsidst skal det vel være:

Set rs1 = Connect.Execute(updSQL)
Avatar billede webbe Nybegynder
05. april 2002 - 11:02 #9
larsen:

Nej - det er ikke nødvendigt at sette et recordset for at opdatere en tabel.

Har ændret lidt og tilføjet, så der nu automatisk bliver sendt en mail ud til vinderne når man finder dem.

Det ser nu således ud:

<%
        For i = 1 to 1
       
        sql = "SELECT COUNT(*) AS Antal FROM Svar WHERE Quiz_id="&Request.QueryString("quiz_id")&" AND Svar='"&Request.QueryString("svar")&"'"
        Set rs = Connect.Execute(sql)
       
        strSQL = "SELECT * FROM Svar WHERE Quiz_id="&Request.QueryString("quiz_id")&" AND Svar='"&Request.QueryString("svar")&"'"
        Set rs1 = Connect.Execute(strSQL)
        %>
        <tr>
            <td width="250">
                <font face="Verdana" size="1">
                    <%
                    Randomize
                    RandNum1 = Int(Rnd*rs("Antal"))+1
                   
                    If not rs1.bof Then
                        rs1.movefirst
                        rs1.Move RandNum1-1
                    %>
                    <%=rs1("Navn")%><br>
                    <%=rs1("Adresse")%><br>
                    <%=rs1("Postnr")%>&#32;<%=rs1("City")%><br>
                    <a href="mailto:<%=rs1("Email")%>"><%=rs1("Email")%></a>
                    <br><br>
                    <%
                    End if
                   
                    updSQL = "UPDATE Svar SET Svar='Udtrukket' WHERE Id="&rs1("Id")
                    Connect.Execute(updSQL)
                   
                    subj = "Tillykke - du har vundet"
                    hilsen = "Kære "
                    tekst1 = "Tillykke - du har vundet i konkurrencen "
                    tekst2 = "Du vil få tilsendt din præmie inden for 14 dage."
                    tekst3 = "Endnu engang tillykke herfra."
                    tekst4 = "Med venlig hilsen"
                    tekst5 = "Scanbox Entertainment Denmark A/S"
                    web = "http://www.scanbox.com"
                   
                    Set msg = Server.CreateObject("JMail.Message")
                    msg.Logging = True
                    msg.Silent = True

                    msg.From = "webmaster@scanbox.com"
                    msg.FromName = "Scanbox Mailrobot"
                    msg.AddRecipient rs1("Email")
                    msg.Subject = subj
                    msg.Body = hilsen & rs1("Navn") & VbCrLf & VbCrLf & tekst1 & "''" & qRS("Titel") & "''."
                    msg.Body = msg.Body & VbCrLf & VbCrLf & tekst2 & VbCrLf & VbCrLf & tekst3
                    msg.Body = msg.Body & VbCrLf & VbCrLf & VbCrLf & tekst4 & VbCrLf & VbCrLf
                    msg.Body = msg.Body & tekst5 & VbCrLf & web

                    If not msg.Send("10.1.1.32") Then
                        Response.Write "<pre>" & msg.log & "</pre>"
                    Else
                        Response.Write "Mail er sendt til "&rs1("Navn")&"!"
                    End if
                   
                    Set JMail = Nothing
                    %>
                </font>
            </td>
        </tr>
        <%
        Next
        %>
Avatar billede webbe Nybegynder
15. april 2002 - 11:06 #10
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester