Avatar billede visuel Nybegynder
11. marts 2004 - 22:25 Der er 19 kommentarer og
1 løsning

kun én post i db

Hej

Jeg har et lille problem med nedenstående kode. Jeg har oprettet en afstemning, men den gemmer kun den allerførste post. Også selvom det er en anden computer der stemmes fra. Hvor opstår fejlen??


<%
    vote_input = request.form("input")
    user_ip = request.serverVariables("REMOTE_ADRR")
   
    IF vote_input = "" THEN
%>

<form name="form1" method="post" action="<% request.ServerVariables("SCRIPT_NAME") %>">
   
    <table>
        <TR>
            <TD> <input class="blank" name="input" type="radio" value="vote_1"> </TD>
            <TD> <p class="lilleTxt">Opfordring fra ansøgning</p></TD>
        </TR>
        <TR>
            <TD> <input class="blank" name="input" type="radio" value="vote_2"> </TD>
            <TD> <p class="lilleTxt">Firma</p></TD>
        </TR>
        <TR>
            <TD> <input class="blank" name="input" type="radio" value="vote_3"> </TD>
            <TD> <p class="lilleTxt">Venner/Familie</p></TD>
        </TR>
        </table>
        <table>
            <TR>
                <TD>
                    <input class="lilleTxt" name="send" type="submit" value="Send" >
                </TD>
            </TR>
        </table>
</form>

<% else %>

    <%
        sql = "SELECT Ip FROM Vote WHERE Ip ='" & user_ip & "'"
        Set rs = conn.Execute(sql)
       
        if rs.eof  THEN
            been_here_before = "NO"
        end if
       
        if been_here_before = "NO" THEN
            sql = "INSERT INTO Vote(Ip, " & vote_input & ") VALUES ('" & user_ip & "', 1)"
            Set rs = conn.Execute(sql)
           
        end if
    %>
   
   
    <%
               
        sql = "SELECT COUNT(*) AS total_1 FROM Vote WHERE vote_1=1;"
        set rs = conn.Execute(sql)
        sql1 = "SELECT COUNT(*) AS total_2 FROM Vote WHERE vote_2=1;"
        set rs1 = conn.Execute(sql1)
        sql2 = "SELECT COUNT(*) AS total_3 FROM Vote WHERE vote_3=1;"
        set rs2 = conn.Execute(sql2)
        sql3 = "SELECT COUNT(*) AS total_votes FROM Vote;"
        set rs3 = conn.Execute(sql3)
       
        total1 = rs ("total_1")
        total2 = rs1 ("total_2")
        total3 = rs2 ("total_3")
        all = rs3 ("total_votes")
       
    %>
   
   
        <p class="lilleTxt">Opfordring fra ansøgning <%= round((total1/all)*100) %> %<BR>
            Firma <%= round((total2/all)*100) %> %<BR>
            Venner/Familie <%= round((total3/all)*100) %> %<BR>
            Antal stemmer <%= all %></p>
   
   
    <% if been_here_before <> "NO" THEN %>
   
    <% else %>
   
    <% end if %>
    <% conn.close %>
<% end if %>
Avatar billede ellebaek Nybegynder
11. marts 2004 - 22:30 #1
<% if been_here_before <> "NO" THEN %>
    har været her før...
    <% else %>
    har ikke været her før.
    <% end if %>

Prøv at sætte disse linier i bunden, og se hvad den skiver..
Avatar billede visuel Nybegynder
11. marts 2004 - 22:37 #2
Føster gang:
har været her før...

efterfølgende:
har ikke været her før.

:)
Avatar billede ellebaek Nybegynder
11. marts 2004 - 22:46 #3
prøv at rette denne linie:
if been_here_before = "NO" THEN
til
if not been_here_before <> "NO" THEN
Avatar billede visuel Nybegynder
11. marts 2004 - 22:52 #4
gi'r samme resultat :'(
Avatar billede eagleeye Praktikant
11. marts 2004 - 23:03 #5
Prøv at rette denne linje:

if rs.eof  THEN

til denne måske det hjælper:

if rs.bof or rs.eof  THEN
Avatar billede visuel Nybegynder
12. marts 2004 - 11:44 #6
Virker heller ikke...:(
Avatar billede visuel Nybegynder
12. marts 2004 - 11:59 #7
En anden underlig timg er at den ikke smider ip'en i db'en.
Avatar billede ellebaek Nybegynder
12. marts 2004 - 14:11 #8
prøv at teste med denne side, hvor alle har mulighed for at skrive til db'en.

  <%
        sql = "SELECT Ip FROM Vote WHERE Ip ='" & user_ip & "'"
        Set rs = conn.Execute(sql)
       
        if rs.eof  THEN
            been_here_before = "NO"
        end if
       
                  sql = "INSERT INTO Vote(Ip, " & vote_input & ") VALUES ('" & user_ip & "', 1)"
            Set rs = conn.Execute(sql)
           
        %>
Avatar billede visuel Nybegynder
12. marts 2004 - 18:05 #9
Så virker det fint, men hvordan får jeg den så til at holde styr på om man har stemt før?? Det skal kun være muligt at stemme én gang pr. pc. Hvorfor gemmer den ikke Ip'en i db'en??
Avatar billede visuel Nybegynder
12. marts 2004 - 18:11 #10
Hvis man har stemt før skal man bare se resultatet...
Avatar billede ellebaek Nybegynder
12. marts 2004 - 18:57 #11
Gemmer den heller ikke ip'en når du gør det som ovenstående ?
Avatar billede visuel Nybegynder
12. marts 2004 - 19:15 #12
Nej
Avatar billede ellebaek Nybegynder
12. marts 2004 - 19:16 #13
prøv at udskrive ipen...

response.write user_ip
Avatar billede visuel Nybegynder
12. marts 2004 - 19:33 #14
hmm, den bliver ikke udkrevet...

Er det da ikke...

user_ip = request.serverVariables("REMOTE_ADRR")

...man bruger til at fange brugerens ip??
Avatar billede ellebaek Nybegynder
12. marts 2004 - 19:35 #15
arh... der var fejlen ;-)

user_ip = request.serverVariables("REMOTE_ADDR")
Avatar billede ellebaek Nybegynder
12. marts 2004 - 19:37 #16
Problemet lå så i at IP'en hele tiden var tom...

Derfor vil disse linier:
        if rs.eof  THEN
            been_here_before = "NO"
        end if

Hele tiden være false, da sql'en finder den første række i databasen, som er den første stemme der er afgivet.
Avatar billede visuel Nybegynder
12. marts 2004 - 19:44 #17
men hvordan kan det være at den ikke kan hente ip'en??
Avatar billede ellebaek Nybegynder
12. marts 2004 - 19:46 #18
Det kan den godt hvis du retter linien til det jeg skrev: 12/03-2004 19:35:08

Du havde skrevet REMOTE_ADRR i din request, men det hedder REMOTE_ADDR ;-)
Avatar billede visuel Nybegynder
12. marts 2004 - 19:56 #19
ahh, DOH....

Så lang tid og så mange problemer for en du stavefejl...

Tusind tak for hjælpen.

Hvis du smider et svar ellebaek, så er pointene dine.

:)
Avatar billede ellebaek Nybegynder
12. marts 2004 - 19:58 #20
Der er et svar her ;-)

Kender godt det der med at kigge på et script i lange tider, og så ligger fejlen i at man har skrevet et enkelt bogstav forkert eller noget i den stil..
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