4 messaggi dal 11 dicembre 2002
ciao a tutti!
ho fatto un contaclick e adesso vorrei che ogni giorno, magari alle 24, i click registrati nel mio database si azzerassero...che script devo aggiungere e soprattutto in quele pagina?la pagina che permette l'aggiornamento dei click è vai.asp che contiene questo codice:

<%
URL = Request.QueryString("URL")

'apertura database
Set conn = Server.CreateObject("ADODB.Connection")
dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
dsnpath = dsnpath & "DBQ=" & Server.MapPath("/mdb-database/contaclick.mdb")
conn.open dsnpath

'aggiornamento database
Conn.Execute "UPDATE Contaclick SET click = click + 1 WHERE URL='" & URL & "'"
' mostro il numero totale di visite
set rs = conn.Execute("SELECT click FROM Contaclick")
visite = rs("click")
' pulizia!
rs.Close
set rs = Nothing
Conn.Close
Set Conn= Nothing
Response.redirect URL
%>

128 messaggi dal 07 agosto 2002
una idea che non so se sia da considerare ma mi è venuta questa :-)

perchè nella stessa tabella non metti anche un campo data che sicuramente varrà la data odierna... ne spiego l'utilità.

quando un utente entra nel sito, se la data odierna è uguale a quella che c'è nella tabella, aggiorni solo il click... se no (e succede solo al primo del giorno che entra) aggiorni la data alla data odierna e metti il contatore a 1

boh... secondo me funzia, ma non so se è un problema mettere un campo e un if in +
4 messaggi dal 11 dicembre 2002
non è un problema mettere un campo in più al mio database...il problema è scrivere lo script che regola l' "if" visto che non sono molto esperto di asp! non è che potresti darmi una mano magari dicendomi cosa devo aggiungere al mio codice??
128 messaggi dal 07 agosto 2002
beh non so se ti interessi (per te, non per visualizzarli) i click che ci sono stati durante la giornata. se così fosse... a fine giornata invece di fare un update sempre sullo stesso record, beh potresti crearne uno nuovo e tenere comunque quello del/i giorni precedenti.

prima di tutto devi essere certo che su quella pagina ci capitino solo una volta durante tutto il tempo che stanno navigando nel tuo sito... se no i click sono fasulli :-)

quindi o hai questa pagina o ti conviene metterla nel global.asa così sei sicuro che + di una volta non ci passano ( e caso mai usare una variabile application visto che riguarda tutti gli utenti ed eviterebbe vari aggiornamenti del ad un db)

cmq se vuoi tenere il tuo db secondo me lo script potrebbe essere questo. (naturalmente per le date controlla che il formato della data sia corretto quando fai la query... io te lo posto semplicemente

sql="select * from contaclick" (dovrebbe esserci solo un record)
rs.open sql,cnn,0,1

if not rs.eof then
if rs("data")=date() then
cnn.execute "UPDATE Contaclick SET click = click + 1 WHERE URL='" & URL & "'"
else
cnn.execute "UPDATE Contaclick SET click = 1 , data=#" & date() & "# WHERE URL='" & URL & "'"
end if
else
cnn.execute "insert into contaclick (click,url,data) values (1,'" & url & "',# & date() & #");"
end if

così dovrebbe andare + o meno... ma vedo che passi anche una var URL... il contaclick funziona in generale o per ogni pagina vuoi un contaclick?

se invece devi modificare la var application("click") ricordati di bloccarla prima di modificarla e di rilasciarla dopo. (ma se il contaclick è diverso pagina per pagina... meglio che usi il db)
4 messaggi dal 11 dicembre 2002
l'idea mi va bene! ho modificato il mio codice in questo modo:

<%
URL = Request.QueryString("URL")
lingua = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")

'apertura database
Set conn = Server.CreateObject("ADODB.Connection")
dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
dsnpath = dsnpath & "DBQ=" & Server.MapPath("/mdb-database/prova.mdb")
conn.open dsnpath

'aggiornamento database
sql="SELECT * FROM Contaclick"
if not rs.eof then
if rs("Data")=date() then
Conn.Execute "UPDATE Contaclick SET click = click + 1 WHERE URL='" & URL & "'"
else
Conn.Execute "UPDATE Contaclick SET click = 1 , data=#" & date() & "# WHERE URL='" & URL & "'"
end if
else
conn.execute "insert into contaclick (click,url,data) values (1,'" & url & "',# & date() & #");"
end if
Conn.Execute "INSERT INTO Provenienza (Lingua) VALUES ('"& lingua &"')"
select case lingua
case "it"
Conn.Execute "UPDATE Lingua SET Ita = Ita + 1"
case else
Conn.Execute "UPDATE Lingua SET Nonita = Nonita + 1"
end select
' mostro il numero totale di visite
set rs = conn.Execute("SELECT click FROM Contaclick")
visite = rs("click")
' pulizia!
rs.Close
set rs = Nothing
Conn.Close
Set Conn= Nothing
Response.redirect URL
%>


ma mi dè un errore nella riga
conn.execute "insert into contaclick (click,url,data) values (1,'" & url & "',# & date() & #");"
perchè?? in più il select case non mi funziona, cioè non mi aggiunge un +1 ad Ita quando la lingua e italiana...sei spiegermelo??
128 messaggi dal 07 agosto 2002
per la prima inviami l'errore... per la select ci guardo
4 messaggi dal 11 dicembre 2002
L'errore che mi dà è il 500, errore interno al server. per quanto riguarda la select se trovassi una soluzione ti sarei infinitamente grato!!
128 messaggi dal 07 agosto 2002
per la select è strano... l'ho prova in una pagina qualunque e a me funziona benissimo. l'unica cosa che posso dire è fai un response.write della lingua e vedi se effettivamente è "it" quello che ti restituisce. se così è e non va, BOH... metti un trim... dai un calcio alla macchina... premi alt+F4
mi sta venendo un dubbio rileggendo il codice. che significato ha URL? ti spiego perchè me lo chiedo. se il recordset che hai all'interno della tabella è unico nessun problema, se invece hai + di un record, cioè il contaclick viene fatto per ogni pagina del tuo sito, devi modificare la query iniziale perchè non è detto che estragga proprio il record che serve a te. (non so se mi sono spiegato)

per l'errore che ti viene restituito dalla query... beh errore interno del server non è molto utile come cosa. se è la query ad essere sbagliata, dovrebbe segnalartelo. (controlla tra le impostazioni del browser che non sia settato "mostra errori HTTP brevi", anche se non so se sia utilissimo dececcarlo... ma almeno vedi gli errori completi)


Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.