Avatar billede elkrog Nybegynder
26. oktober 2001 - 15:28 Der er 20 kommentarer og
3 løsninger

Kan disse Asp-filer flettes sammen?

Hej Eksperter

Jeg har et bannersystem som ud fra en accessdatabase viser et random valgt banner, tæller antal visninger og antal klik.

Det består af to asp-dokumenter:
default.asp og redirect.asp

default.asp genererer random og tæller antal visninger og sender til redirect.asp som tæller klik og redirecter til url\'en.

Mit spørgsmål:
Kan disse to asp-dokumenter flettes sammen til et dokument, med de samme funktioner selvfølgelig, og hvordan?

Men i stedet for [redirect.asp?id=\" & rs(\"ID\") & \"] vil jeg gerne have [href=\'\" & rs(\"Url\") & \"]

Altså i stedet for redirect-urlen skrives den \"rigtige\" url.

Jeg håber godt nok i kan hjælpe mig derude, for det har godt nok givet mig grå hår :-(


Source-Koder:

\'--- default.asp - start ----------------
<%@ Language=VBScript %>

<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")
%>
<HTML>
<HEAD>

</HEAD>
<BODY>

<%
set rs = Server.CreateObject(\"ADODB.Recordset\")

strRS = \"SELECT * from Banner\"

rs.Open strRS, Conn, 1, 3

randomize
linie = int(rs.RecordCount * rnd)

rs.MoveFirst
rs.Move(linie)

    rs(\"Shown\") = rs(\"Shown\") + 1
rs.Update

Response.Write \"<a href=\'redirect.asp?id=\" & rs(\"ID\") & \"\' target=\'_blank\'><img src=\'\" & rs(\"Filename\") & \"\' alt=\'\" & rs(\"Description\") & \"\' border=\'0\'></a>\" & vbCrLf
Response.Write \"<br>\"
Response.Write \"Vist&nbsp;\" & rs(\"Shown\") & \" gang(e).<br>\"
Response.Write \"\" & rs(\"Clicks\") & \" klik.\"


rs.Close
set rs = nothing

Conn.Close
set Conn = nothing
%>

</BODY>
</HTML>
\'--- default.asp - slut ------------------

\'--- redirect.asp - start ----------------
<%@ Language=VBScript %>

<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")

id = Request.QueryString(\"id\")

set rs = Server.CreateObject(\"ADODB.Recordset\")
rs.Open \"SELECT * FROM Banner WHERE ID=\" & id, Conn, 1, 3

    rs(\"Clicks\") = rs(\"Clicks\") + 1
rs.Update

url = rs(\"Url\")

rs.Close
set rs = nothing

Conn.Close
set Conn = nothing

Response.Redirect(url)
%>
\'--- redirect.asp - slut -----------------
Avatar billede long_island_ Nybegynder
26. oktober 2001 - 15:42 #1
jeg kan godt se hvordan du kan ligge det hele i en fil, men din href vil så pege på default.asp?id=XX - går ikke ud fra at det kan bruges ?
Avatar billede elkrog Nybegynder
26. oktober 2001 - 15:48 #2
Nej det tror jeg desværre ikke
Avatar billede long_island_ Nybegynder
26. oktober 2001 - 15:50 #3
så kan jeg desværre ikke se hvordan det kan gøres, det kan også gøres med javascript, men det giver stadig en underlig url... :-(
Avatar billede eagleeye Praktikant
26. oktober 2001 - 16:30 #4
Hvorfor kan det ikke bruges at sætte id efter default.asp?ID=xx ??
Avatar billede elkrog Nybegynder
26. oktober 2001 - 16:37 #5
Øhh, det kan det måske også alligevel.
Avatar billede long_island_ Nybegynder
26. oktober 2001 - 16:43 #6
dette burde vist virke, der kan være nogle småfejl, bruger normalt selv php...

\'--- default.asp - start ----------------
<%@ Language=VBScript %>

<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")

%>
id = Request.QueryString(\"id\")
if id>0 then
    set rs = Server.CreateObject(\"ADODB.Recordset\")
    rs.Open \"SELECT * FROM Banner WHERE ID=\" & id, Conn, 1, 3
   
    rs(\"Clicks\") = rs(\"Clicks\") + 1
    rs.Update
   
    url = rs(\"Url\")
   
    rs.Close
    set rs = nothing
   
    Conn.Close
    set Conn = nothing

    Response.Redirect(url)
end if
<HTML>
<HEAD>

</HEAD>
<BODY>

<%
set rs = Server.CreateObject(\"ADODB.Recordset\")

strRS = \"SELECT * from Banner\"

rs.Open strRS, Conn, 1, 3

randomize
linie = int(rs.RecordCount * rnd)

rs.MoveFirst
rs.Move(linie)

rs(\"Shown\") = rs(\"Shown\") + 1
rs.Update

Response.Write \"<a href=\'default.asp?id=\" & rs(\"ID\") & \"\' target=\'_blank\'><img src=\'\" & rs(\"Filename\") & \"\' alt=\'\" &
rs(\"Description\") & \"\' border=\'0\'></a>\" & vbCrLf
Response.Write \"<br>\"
Response.Write \"Vist&nbsp;\" & rs(\"Shown\") & \" gang(e).<br>\"
Response.Write \"\" & rs(\"Clicks\") & \" klik.\"


rs.Close
set rs = nothing

Conn.Close
set Conn = nothing
%>

</BODY>
</HTML>
\'--- default.asp - slut ------------------
Avatar billede long_island_ Nybegynder
26. oktober 2001 - 16:45 #7
heh, der mangler <% og %> om min kode...
Avatar billede pepsi2 Nybegynder
26. oktober 2001 - 16:46 #8
<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")
%>
<HTML>
<HEAD>

</HEAD>
<BODY>

<%
set rs = Server.CreateObject(\"ADODB.Recordset\")

strRS = \"SELECT * from Banner\"

rs.Open strRS, Conn, 1, 3

randomize
linie = int(rs.RecordCount * rnd)

rs.MoveFirst
rs.Move(linie)

    rs(\"Shown\") = rs(\"Shown\") + 1
rs.Update

Response.Write \"<a href=\'default.asp?id=\" & rs(\"ID\") & \"\' target=\'_blank\'><img src=\'\" & rs(\"Filename\") & \"\' alt=\'\" & rs(\"Description\") & \"\' border=\'0\'></a>\" & vbCrLf
Response.Write \"<br>\"
Response.Write \"Vist&nbsp;\" & rs(\"Shown\") & \" gang(e).<br>\"
Response.Write \"\" & rs(\"Clicks\") & \" klik.\"

If Request.Querystring(\"id\") = 2 Then

rs(\"Clicks\") = rs(\"Clicks\") + 1
rs.Update

url = rs(\"Url\")

Response.Redirect (url)

End If

%>


</BODY>
</HTML>
Avatar billede pepsi2 Nybegynder
26. oktober 2001 - 16:47 #9
Hov det var vist det forkerte

<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")
%>
<HTML>
<HEAD>

</HEAD>
<BODY>

<%
set rs = Server.CreateObject(\"ADODB.Recordset\")

strRS = \"SELECT * from Banner\"

rs.Open strRS, Conn, 1, 3

randomize
linie = int(rs.RecordCount * rnd)

rs.MoveFirst
rs.Move(linie)

    rs(\"Shown\") = rs(\"Shown\") + 1
rs.Update

Response.Write \"<a href=\'test3.asp?id=\" & rs(\"ID\") & \"\' target=\'_blank\'><img src=\'\" & rs(\"Filename\") & \"\' alt=\'\" & rs(\"Description\") & \"\' border=\'0\'></a>\" & vbCrLf
Response.Write \"<br>\"
Response.Write \"Vist&nbsp;\" & rs(\"Shown\") & \" gang(e).<br>\"
Response.Write \"\" & rs(\"Clicks\") & \" klik.\"

If Request.Querystring(\"id\") >0 Then

rs(\"Clicks\") = rs(\"Clicks\") + 1
rs.Update

url = rs(\"Url\")

Response.Redirect (url)

End If

%>


</BODY>
</HTML>
Avatar billede long_island_ Nybegynder
26. oktober 2001 - 16:51 #10
Så er der <% og %> om koden.
\'--- default.asp - start ----------------
<%@ Language=VBScript %>

<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")

id = Request.QueryString(\"id\")
if id>0 then
    set rs = Server.CreateObject(\"ADODB.Recordset\")
    rs.Open \"SELECT * FROM Banner WHERE ID=\" & id, Conn, 1, 3
   
    rs(\"Clicks\") = rs(\"Clicks\") + 1
    rs.Update
   
    url = rs(\"Url\")
   
    rs.Close
    set rs = nothing
   
    Conn.Close
    set Conn = nothing

    Response.Redirect(url)
end if
%>
<HTML>
<HEAD>

</HEAD>
<BODY>

<%
set rs = Server.CreateObject(\"ADODB.Recordset\")

strRS = \"SELECT * from Banner\"

rs.Open strRS, Conn, 1, 3

randomize
linie = int(rs.RecordCount * rnd)

rs.MoveFirst
rs.Move(linie)

rs(\"Shown\") = rs(\"Shown\") + 1
rs.Update

Response.Write \"<a href=\'default.asp?id=\" & rs(\"ID\") & \"\' target=\'_blank\'><img src=\'\" & rs(\"Filename\") & \"\' alt=\'\" &
rs(\"Description\") & \"\' border=\'0\'></a>\" & vbCrLf
Response.Write \"<br>\"
Response.Write \"Vist&nbsp;\" & rs(\"Shown\") & \" gang(e).<br>\"
Response.Write \"\" & rs(\"Clicks\") & \" klik.\"


rs.Close
set rs = nothing

Conn.Close
set Conn = nothing
%>

</BODY>
</HTML>
\'--- default.asp - slut ------------------

En lille forklaring på hvad jeg har gjort hvis du skulle være i tvivl. URL\'en peger bare på default.asp i stedet for redirect.asp, og i default tjekker jeg så i starten om ID er sat til noget, hvis den er, så registreres clicket, og der redirectes. Ret simpelt.

Mvh
Kasper
Avatar billede eagleeye Praktikant
26. oktober 2001 - 16:59 #11
t bliver til dette:
Ændre din link:
Response.Write \"<a href=\'default.asp?id=\" & rs(\"ID\") & \"\' target=\'_blank\'>


I default gør du dette:
<%@ Language=VBScript %>

<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" &
Server.MapPath(\"banner.mdb\")
id = Request.QueryString(\"id\")

if id <> \"\" then    \'redirect her

set rs = Server.CreateObject(\"ADODB.Recordset\")
rs.Open \"SELECT * FROM Banner WHERE ID=\" & id, Conn, 1, 3

    rs(\"Clicks\") = rs(\"Clicks\") + 1
rs.Update
url = rs(\"Url\")
rs.Close
set rs = nothing
Conn.Close
set Conn = nothing

Response.Redirect(url)

else  \'Normal default.asp kode her

\'gammel deafult.asp kode her

end if
Avatar billede elkrog Nybegynder
26. oktober 2001 - 17:25 #12
Der er for såvidt alt sammen rigtig nok.
Men...
Jeg var nok for hurtig til at godkende default.asp?id=X.

Er det ikke muligt at lave en [response.write url] i stedet for, og stadig \"huske\" id så klik registreres.
Avatar billede pepsi2 Nybegynder
26. oktober 2001 - 17:35 #13
<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")
%>
<HTML>
<HEAD>

</HEAD>
<BODY>

<%
set rs = Server.CreateObject(\"ADODB.Recordset\")

strRS = \"SELECT * from Banner\"

rs.Open strRS, Conn, 1, 3

randomize
linie = int(rs.RecordCount * rnd)

rs.MoveFirst
rs.Move(linie)

    rs(\"Shown\") = rs(\"Shown\") + 1

rs.Update

Response.Write \"<a href=\" & rs(\"url\") & \" target=\'_blank\'><img src=\'\" & rs(\"Filename\") & \"\' alt=\'\" & rs(\"Description\") & \"\' border=\'0\'></a>\" & vbCrLf
Response.Write \"<br>\"
Response.Write \"Vist&nbsp;\" & rs(\"Shown\") & \" gang(e).<br>\"
Response.Write \"\" & rs(\"Clicks\") & \" klik.\"

rs(\"Clicks\") = rs(\"Clicks\") + 1
rs.Update

%>


</BODY>
</HTML>
Avatar billede elkrog Nybegynder
26. oktober 2001 - 17:45 #14
Jeg er fuldt ud tilfreds.

Rigtig god weekend til jer alle, og tak for hjælpen.
Avatar billede long_island_ Nybegynder
27. oktober 2001 - 00:16 #15
En kommentar til den sidste kode fra pepsi2 - den virker ikke - den tæller et click hver gang, ligegyldigt om der bliver trykket på banneret eller ej
Avatar billede elkrog Nybegynder
27. oktober 2001 - 09:49 #16
Ja, det fandt jeg også ud af.
Avatar billede elkrog Nybegynder
27. oktober 2001 - 12:05 #17
long_island_\'s svar 26/10 2001 16:51:07 er umiddelbart det bedste. Det fungerer i hverfald.

Men kan det ikke laves uden redirect?
hvor man bare trækker url\'en ud fra databasen.
Men stadig tæller klik og visninger.

Det skal b.la. bruges til diverse affilliate programmer hvor man skal bruge den eksakte url.
Og så går det ikke med redirect, desværre.

Jeg smider gerne nogle flere points efter den som kan løse det.
Avatar billede long_island_ Nybegynder
27. oktober 2001 - 12:39 #18
Om du bruger redirect eller href (for at skrive det simpelt) burde ikke give nogen som helst forskel...
Avatar billede elkrog Nybegynder
27. oktober 2001 - 12:44 #19
Men nogle steder er det javascript koder der skal bruges.
Derfor kan jeg ikke bare bruge href men er nødt til at hente hele url\'en/scriptet fra databasen
Avatar billede long_island_ Nybegynder
27. oktober 2001 - 12:50 #20
Ah, ok, kan du give et eksempel ? Så hopper jeg i tænkeboks
Avatar billede elkrog Nybegynder
27. oktober 2001 - 12:57 #21
Ok
En udleveret kode kunne se nogenlunde sådan her ud:
<script language=\"JavaScript\" src=\"http://dk.affilliatepartner.com/imp/kode/\"></script>

Den kode ligger i kolonnen Url i databasen.
som så skal hentes med en response.write url.

Problemet er bare optællingen af klik og visning

Avatar billede long_island_ Nybegynder
27. oktober 2001 - 13:06 #22
den med scriptet kan jeg ikke lige hitte en løsning på :-(
Avatar billede elkrog Nybegynder
27. oktober 2001 - 13:57 #23
Denne her virker, men tæller desværre ikke klik.
Kan det flettes ind på en eller anden måde?

<%
set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"banner.mdb\")
%>
<HTML>
<HEAD>

</HEAD>
<BODY>

<%
set rs = Server.CreateObject(\"ADODB.Recordset\")

strRS = \"SELECT * from Banner\"

rs.Open strRS, Conn, 1, 3

randomize
linie = int(rs.RecordCount * rnd)

rs.MoveFirst
rs.Move(linie)

    rs(\"Shown\") = rs(\"Shown\") + 1

rs.Update

Response.Write \"\" & rs(\"url\") & \"\"
Response.Write \"<br>\"
Response.Write \"Vist&nbsp;\" & rs(\"Shown\") & \" gang(e).<br>\"

%>


</BODY>
</HTML>
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