Avatar billede mikkeljans Nybegynder
08. december 2002 - 11:44 Der er 20 kommentarer og
1 løsning

Kør Function

Jeg har lavet en Function som skal tælle hvor mange gange man har trykket på et Link:

Function CounterFunc(HitsF, IdF)
    if Session("Counter") = "" then
        HitsF = HitsF + 1
        strSQL = "Update tutorials set "
        strSQL = strSQL & "Hits = " & HitsF
        strSQL = strSQL & " Where Id = " & IdF
        Conn.Execute(strSQL)
        Session("Counter") = HitsF
    End if
    CounterFunc = HitsF
End Function   


(Jeg kan btw heller ikke få functionen til at virke)


Men nu vil jeg gerne have at når man trykker på en knap så skal den åbne Linket:

Response.Write "<td> <a href=" & rs("Link") & ">" & rs("Title") & "</a>

OG køre min function så den tæller 1 gang op:

CounterFunc(rs("Hits"), rs("Id"))
Avatar billede medions Nybegynder
08. december 2002 - 12:31 #1
Function CounterFunc(HitsF, IdF)
    if Session("Counter") = "" then
        strSQL = "Update tutorials set "
        strSQL = strSQL & "Hits = Hits +1"
        strSQL = strSQL & " Where Id = " & IdF
        Conn.Execute(strSQL)
        Session("Counter") = HitsF
    End if
    CounterFunc = HitsF
End Function   

Prøv at kør din funktion nu!

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 12:41 #2
Virker ikke..
Hvis jeg f.eks skriver:

Do
    CounterFunc(rs("Hits"), rs("Id"))
        rs.MoveNext
Loop While Not rs.EOF

Siger den:

"Cannot use parentheses when calling a Sub

CounterFunc(rs("Hits"), rs("Id"))"
Avatar billede medions Nybegynder
08. december 2002 - 12:44 #3
Do
    CounterFunc rs("Hits"), rs("Id")
        rs.MoveNext
Loop While Not rs.EOF

Prøv sådan her
//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 12:52 #4
Fedt, det ser ud til at virke nu.
Jeg har udbyttet Session("Counter") med Session(IdF) så den gemmer en session for hver ID der er.
Når jeg kører siden giver den hver ID 1 hit
( http://www.maya3d.dk/links/tutorials/ )

Men nu skal jeg lave den så den giver 1 hit til det link man trykker på og går ind i linket bagefter.

Lige nu ser det sådan her ud:

Do
      Response.Write "<tr bgcolor=" & Coler1 & ">"
    Response.Write "<td> <a href=" & rs("Link") & ">" & rs("Title") & "</a> </td> </tr>"
    rs.MoveNext
Loop While Not rs.EOF


Jeg skal så have min
CounterFunc rs("Hits"), rs("Id")
function til at starte når man trykke på linket..
Hvordan gør man det?
Avatar billede medions Nybegynder
08. december 2002 - 13:51 #5
<%
    If Request.QueryString("Link") <> "" Then
        strSQL = "UPDATE tutorials Set Hits = Hits + 1 WHERE [Id] = " & Request.QueryString("Id")
        Conn.Execute(strSQL)
    End If
%>
<html>
<head>
    <title></title>
</head>
<body>

<% 
    Do
        Response.Write "<tr bgcolor=" & Coler1 & "><td>"
            Response.Write("<a href=""" & Request.ServerVariables("SCRIPT_NAME") & "?ID=" & rs("Id") & "&Link=" & rs("Link") & "&filterT=" & Request.QueryString("filterT") & "&filter=" & Request.QueryString("filter") & "&alf=" & Request.QueryString("alf") & "&order=" & Request.QueryString("order") & """>" & rs("Title") & "</a>")
        Response.Write "</td> </tr>"
        rs.MoveNext
    Loop While Not rs.EOF
%>

</body>
</html>

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 14:11 #6
Jeg kan ikke rigtig se hvordan det skal fungere..
Jeg kan lige prøve at give dig hele scriptet:

    <%

FilterT        = request.querystring("filterT")
FilterIt    = request.querystring("filter")
Order         = request.querystring("order")
Alf        = request.querystring("alf")

LoopColer = 1

Do
    if LoopColer = 1 then Coler1 = "73718C"
    if LoopColer = 0 then Coler1 = "9C969C"

      Response.Write "<tr bgcolor=" & Coler1 & ">"

    Response.Write "<td> <a href=" & rs("Link") & ">" & rs("Title") & "</a> </td>"

    Response.Write "<td>" & rs("Category")  & "</td>"

    Response.Write "<td>" & rs("Type")         & "</td>"

    Response.Write "<td> <a href=mailto:" & rs("Mail") & ">" & rs("Creator") & "</a> </td>"

    Response.Write "<td> <a href=" & rs("WebsiteLink") & ">" & rs("WebsiteName") & "</a> </td>"

    Response.Write "<td>" & rs("Date")         & "</td>"

    Response.Write "<td>" & rs("Hits")         & "</td>"
    Response.Write "</tr>"

    rs.MoveNext
    if LoopColer = 1 then LoopColer = 0 else LoopColer = 1 End if
Loop While Not rs.EOF


hvor rs("Link") = et Link til en anden side
rs("Title") = Titlen på linket

Lige nu gør

Response.Write "<td> <a href=" & rs("Link") & ">" & rs("Title") & "</a> </td>"

Sådan så den viser alle "Titler" i databasen og gør dem til et HyperLink til de forskellige "Links" i databasen.

Når man trykker på Titlen skal den åbne linket hvilket den allerede gør, men den skal også kører functionen:

CounterFunc rs("Id")


Hvordan gør man det?
Avatar billede medions Nybegynder
08. december 2002 - 14:16 #7
Du skal ik' bruge din CounterFunc!

<%
If Request.QueryString("Link") <> "" Then
    strSQL = "UPDATE tutorials Set Hits = Hits +1 WHERE [Id] =" & Request.QueryString("Id")
    Conn.Execute(strSQL)
End If
FilterT        = request.querystring("filterT")
FilterIt    = request.querystring("filter")
Order        = request.querystring("order")
Alf        = request.querystring("alf")

LoopColer = 1

Do
    if LoopColer = 1 then Coler1 = "73718C"
    if LoopColer = 0 then Coler1 = "9C969C"

      Response.Write "<tr bgcolor=" & Coler1 & ">"

    Response.Write "<td> <a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Id=" & rs("Id") & "Link=" & rs("Link") & ">" & rs("Title") & "</a> </td>"

    Response.Write "<td>" & rs("Category")  & "</td>"

    Response.Write "<td>" & rs("Type")        & "</td>"

    Response.Write "<td> <a href=mailto:" & rs("Mail") & ">" & rs("Creator") & "</a> </td>"

    Response.Write "<td> <a href=" & rs("WebsiteLink") & ">" & rs("WebsiteName") & "</a> </td>"

    Response.Write "<td>" & rs("Date")        & "</td>"

    Response.Write "<td>" & rs("Hits")        & "</td>"
    Response.Write "</tr>"

    rs.MoveNext
    if LoopColer = 1 then LoopColer = 0 else LoopColer = 1 End if
Loop While Not rs.EOF

%>

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 14:30 #8
Du kan prøve den her:
www.maya3d.dk/links/tutorials

Den linker ikke når man trykker.

Kan man ikke bare execute den function når man trykker på linket?
Er det fordi det ikke er muligt i ASP?.
Avatar billede medions Nybegynder
08. december 2002 - 14:32 #9
Hov, det er fordi jeg jeg mangler at Redirecte :-)

Prøv igen:

<%
If Request.QueryString("Link") <> "" Then
    strSQL = "UPDATE tutorials Set Hits = Hits +1 WHERE [Id] =" & Request.QueryString("Id")
    Conn.Execute(strSQL)
   
    Response.Redirect(Request.QueryString("Link"))
End If

FilterT        = request.querystring("filterT")
FilterIt    = request.querystring("filter")
Order        = request.querystring("order")
Alf        = request.querystring("alf")

LoopColer = 1

Do
    if LoopColer = 1 then Coler1 = "73718C"
    if LoopColer = 0 then Coler1 = "9C969C"

      Response.Write "<tr bgcolor=" & Coler1 & ">"

    Response.Write "<td> <a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Id=" & rs("Id") & "Link=" & rs("Link") & ">" & rs("Title") & "</a> </td>"

    Response.Write "<td>" & rs("Category")  & "</td>"

    Response.Write "<td>" & rs("Type")        & "</td>"

    Response.Write "<td> <a href=mailto:" & rs("Mail") & ">" & rs("Creator") & "</a> </td>"

    Response.Write "<td> <a href=" & rs("WebsiteLink") & ">" & rs("WebsiteName") & "</a> </td>"

    Response.Write "<td>" & rs("Date")        & "</td>"

    Response.Write "<td>" & rs("Hits")        & "</td>"
    Response.Write "</tr>"

    rs.MoveNext
    if LoopColer = 1 then LoopColer = 0 else LoopColer = 1 End if
Loop While Not rs.EOF

%>

//>Rune
Avatar billede medions Nybegynder
08. december 2002 - 14:33 #10
Og hov, lige en fejl til :-D

<%
If Request.QueryString("Link") <> "" Then
    strSQL = "UPDATE tutorials Set Hits = Hits +1 WHERE [Id] =" & Request.QueryString("Id")
    Conn.Execute(strSQL)
   
    Response.Redirect(Request.QueryString("Link"))
End If

FilterT        = request.querystring("filterT")
FilterIt    = request.querystring("filter")
Order        = request.querystring("order")
Alf        = request.querystring("alf")

LoopColer = 1

Do
    if LoopColer = 1 then Coler1 = "73718C"
    if LoopColer = 0 then Coler1 = "9C969C"

      Response.Write "<tr bgcolor=" & Coler1 & ">"

    Response.Write "<td> <a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Id=" & rs("Id") & "&Link=" & rs("Link") & ">" & rs("Title") & "</a> </td>"

    Response.Write "<td>" & rs("Category")  & "</td>"

    Response.Write "<td>" & rs("Type")        & "</td>"

    Response.Write "<td> <a href=mailto:" & rs("Mail") & ">" & rs("Creator") & "</a> </td>"

    Response.Write "<td> <a href=" & rs("WebsiteLink") & ">" & rs("WebsiteName") & "</a> </td>"

    Response.Write "<td>" & rs("Date")        & "</td>"

    Response.Write "<td>" & rs("Hits")        & "</td>"
    Response.Write "</tr>"

    rs.MoveNext
    if LoopColer = 1 then LoopColer = 0 else LoopColer = 1 End if
Loop While Not rs.EOF

%>

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 14:46 #11
Der virker stadig ikke.

Er det ikke muligt at execute en function når man trykke på en knap?.
Det må da være muligt?. Jeg skal vide det anyway, for jeg for brug for det senere.
Avatar billede medions Nybegynder
08. december 2002 - 14:49 #12
Nej, ikke i ASP. ASP arbejder på serveren og ikke på Klienten, det vil sige at hvis du fx. Klikker på en knap, så er det kun Klienten der får det afvide, med mindre du "Submitter" hen til en anden side hvor klikket kan blive regisreret vha. enten POST eller GET methoderne!

//>Rune
Avatar billede medions Nybegynder
08. december 2002 - 14:51 #13
Ret lige din SQL statement til
        strSQL = "UPDATE tutorials Set Hits = Hits + 1 WHERE [Id] = '" & Request.QueryString("Id") & "'"
        Conn.Execute(strSQL)

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 14:54 #14
Virker heller ikke.

Kan ikke forstå hvorfor man ikke kan execute en function ved at trykke på en knap.
Man kan gøre så mange ting ved at trykke på en knap med Behavoirs, lyder da meget ulogisk at det så lige ikke kan lade sig gøre med functioner.
Det må næsten være muligt.
Avatar billede medions Nybegynder
08. december 2002 - 14:59 #15
Det kan sagtens lade sig gøre med funktioner.. Men kun Clientsided funktioner! Fx.

<input type="buttom" onclick="funktionnavn()">

Det kan man sagtens.

Tror du skal hoppe en tur ind forbi www.html.dk og læse deres tutorials for at få fat i hvad ASP er og gør!

Det er umuligt at hjælpe hvis ikke du har forståelse for hvordan ASP arbejder på serveren! -HTML.dk har en kanon forklaring på det!

-Det jeg har skrevet til dig nu burde være nok til du kan få det til at virke når du har læst tutorialsne igennem!

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 15:03 #16
Jeg har læst html tutorial.
Jeg får den forståelse af den at Serveren først laver en masse beregning og så sender den til brugeren som html.
Ligesom man kan linke til en anden side så er det jo også en function som fortæler at den sal åbne en anden side.
Syntes det er meget underligt når man kan få f.eks Lyd til at afspille ved at trykke på en knap (Det er jo også en function) men ikke få min ejen skrevet function til at afspille når jeg trykker.
Det er jeg ret sikker på må være muligt.
Avatar billede medions Nybegynder
08. december 2002 - 15:06 #17
Du forbinder JavaScript med ASP!

Hvis fx. du skriver

<script language="JavaScript">
  function Tjek() {
      alert('Du klikke på knappen!');
  }
</script>

<input type="button" onclick="Tjek();">

Så sker der jo oxo noget! -Men det der sker her er bare en funktion i JavaScript!

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 15:19 #18
Jeg kan nu stadig ikke forstå det, men det er også lige meget jeg laver det på den anden måde istedet så.
Men den virker heller ikke.

If Request.QueryString("Link") <> "" Then
        strSQL = "UPDATE tutorials Set Hits = Hits + 1 WHERE [Id] = '" & Request.QueryString("Id") & "'"
        Conn.Execute(strSQL)  <-- Fejl "Object required: ''"
   
    Response.Redirect(Request.QueryString("Link"))
End If
Avatar billede medions Nybegynder
08. december 2002 - 15:22 #19
Det felt i din database der hedder Id, hvilken type er det? -Tekst eller Tal nu!

If Request.QueryString("Link") <> "" Then
        strSQL = "UPDATE tutorials Set Hits = Hits + 1 WHERE [Id] = " & Request.QueryString("Id")
        Conn.Execute(strSQL)
   
    Response.Redirect(Request.QueryString("Link"))
End If

//>Rune
Avatar billede mikkeljans Nybegynder
08. december 2002 - 15:28 #20
Haha jeg fandt ud af hvad problemmet var.
Databasen var ikke åben
Det virker nu, tnx
Avatar billede medions Nybegynder
08. december 2002 - 15:30 #21
*G* Fair nok.
Thx 4 Poinz

//>Rune
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