Perchè il contatore aumenta di 2 quando dovrebbe farlo di 1?

  • Creatore Discussione Creatore Discussione cosov
  • Data di inizio Data di inizio

cosov

Nuovo Utente
5 Feb 2007
17
0
0
Provincia di Milano
www.cosov.it
Salve, ho creato questa istruzione all'interno di una pagina asp:

ConnDBIMG2.Execute "UPDATE Immagini set Vista_Foto = Vista_Foto + 1 where ID_FOTO = "&request.querystring("ORIG_PATH")&";"

Praticamente dovrebbe aumentare di una unità nella tabella del database "Immagini" la colonna "Vista_Foto", cioè aumenta di una volta il contatore dell'immagine aperta. Fin qui la cosa funziona, solo che la prima volta che faccio clic su un'immagine al posto di aumentare di 1, aumenta di 2, poi se riclicco sulla stessa lo fa di 1. (Questo per tutte le immagini)

Qualcuno sa spiegarmi come mai.
Grazie della cortesia.
 
Capitava anche a me, per questo motivo per esempio le visite al sito e le pagine visitate non le salvo più in un DB ma direttamente in un file TXT. :)

In questo caso però non puoi certo fare un file txt per ogni foto, quindi l'unica cosa che posso provare a consigliarti di fare è lanciare 2 query.
la prima query sarà un:
Codice:
ConnDBIMG2.Execute "SELECT Vista_Foto FROM Immagini WHERE ID_FOTO = "&request.querystring("ORIG_PATH")&";"
poi associ il valore ad una variabile e lo sommi di uno da script:
Codice:
Dim numvisite = rs("Vista_Foto")
numvisite = numvisite + 1
e infine aggiorni il DB:
Codice:
ConnDBIMG2.Execute "UPDATE Immagini set Vista_Foto = " & [B]numvisite[/B] & " where ID_FOTO = "&request.querystring("ORIG_PATH")&";"

Altro non saprei che dirti ;)
 
Buona soluzione ma me n'è venuta in mente una che proverò ad usare:

Dim id
id = Request.QueryString("id")
Function ContaClick()
rs.Open "SELECT click FROM tabella WHERE id = " & CInt(id), cn, 1
If CInt(rs("click")) = 0 Then
cn.Execute("UPDATE tabella SET click = 1 WHERE id = " & CInt(id))
Else
cn.Execute("UPDATE tabella SET click = click + 1 WHERE id = " & CInt(id))
End If
rs.Close
End Function
Call ContaClick()

Nella speranza che al secondo accesso non riporti il valore 3 sennò sentite le mie urla da Napoli :D

PS. l'ho scritto al volo, non l'ho ancora testato!
 
Ho provato la prima soluzione e sembrava funzionare solo dopo mi sono accorto che cliccando la stessa immagine ogni tanto mi dava il valore +1 e altre volte il valore +2.
Per quanto riguarda la soluzione di "lukeonweb" potrei anche provarla, ma no ho capito se la function devo metterla nell' <head> e poi richiamarla col call nel <body> oppure va bene tutto nel body? Poi volevo sapere (visto che non sono tanto pratico di sobrutine) nell'istruzione rs.Open "SELECT click FROM tabella WHERE id = " & CInt(id), cn, 1 il valore cn cos'è?
Grazie.
 
Ciao ragazzi, sono 2 vite che non scrivo qui!!! :hammer:

Se nn ricordo male ebbi questo problema, e sempre se non ricordo male dovrebbe essere associato al campo database NULL.
Se il campo del database veniva inizializzato con il valore predefinito 0, funzionava, ovvero partiva da 1 anziché da 2.

Fatemi sapere!

Ciao.
 
Allora, ho provato la soluzione di "LukeonWeb" e devo dire che va meglio, ma ogni tanto mi conta ancora 2 volte, mentre per rispondere a "Daviduccio" avevo già impostato come valore predefinito lo 0 nella tabella, ma il problema non è se è 0 allora conta 2, perchè anche se la foto fosse stata vista 7 volte potrebbe aumentare di 1 o di 2...
A sto punto mi viene da pensare: può essere un errore di windows?

Se invece volessi creare un file di testo che conta si potrebbe farne 1 solo per tutte le foto (o almeno per categoria di foto) o va necessariamente creato un file per ogni foto? Se così fosse dove posso prelevare il codice?

Grazie ancora della pazienza e per le risposte.
 

Discussioni simili