Newsgroup: it.comp.lang.javascript
Titolo: intercettare il click su un testo

Ciao a tutti,
ho una funzione con la quale, cliccando sul titolo di una news, si
apre un div con il testo della notizia......funziona tutto...
Adesso avrei la necessità di contare quante volte una notizia viene
letta ovvero quanti click vengono effettuati su quella notizia.
Come posso fare?
io verrei aggiornare il campo (hits) di una tabella di database
mysql.....
il mio problema fondamentale è che essendo un testo e non un link
(quindi non caricando alcuna pagina ma solo un div) non riesco ad
aggiornare tale campo.....ovviamente qualsiasi altra soluzione
potrebbe andare bene.....
sapete aiutarmi?
vasomik

 Come posso fare?
xmlhttp ... puoi iniziare da qua se vuoi studiartelo:
 
http://www.criosoftware.it/defaultTIxmlhttp.aspx
oppure puoi cercare in rete una delle migliaia di soluzioni "ajax" già
bell'e pronte.
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.

 xmlhttp ... 
O anche soluzioni alternative, come quella della finta immagine, visto
che non si ha la necessità di avere dati di "ritorno" dal server.
-- 
Nando, A-postumo della Prova
*Uso i pesci di Babele*

Si, il testo è già presente, lo recupero dal database.....
ajax.....ma per ajax è necessario che lo spazio che ho lo supporti?
quella dell'immagine non l'ho capita.....

 quella dell'immagine non l'ho capita.....
<img src="tuapaginaserverside.php?parametri"/> e lavori server-side
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturitą"
									    F.G.

 <img src="tuapaginaserverside.php?parametri"/> e lavori server-side
 
F.G.
Riguardo all'immagine........potrei attuare la stessa cosa anche sul
titolo allora o non ho ancora capito la funzione dell'immagine?? Anche
perché facendo questo lavoro con l'immagine e trattandosi di
un'operazione server-side è necessario caricare una pagina.....o
sbaglio qualcosa?
Se vuoi ti posto il link del sito così vedi come funziona la lettura
delle notizie....

 sbaglio qualcosa?
Ipotizziamo che il tuo script di conteggio sul server si chiami
contaclick.php, e che accetti come parametro in querystring una variabile
chiamata "idarticolo"; pertanto, effettuando una richiesta per la pagina
contaclick.php?idarticolo=423
lo script verrà eseguito e il contatore relativo all'articolo 423 sarà
incrementato. Il punto è: come effettuare la richiesta per la pagina
contaclick.php?idarticolo=423 senza ricaricare la pagina correntemente
visualizzata nel browser? Ci sono tanti modi per ottenere lo scopo, due di
questi sono:
- utilizzare l'oggetto XmlHttpRequest di javascript (cioè, usare "ajax")
- utilizzare una immagine
Secondo me, nel tuo caso è meglio la seconda opzione, più semplice e
leggera.
Partiamo dal presupposto che una sequenza di istruzioni javascript come la
seguente:
var oImg=new Image();
oImg.src="nomeimmagine.jpeg"
ha come effetto, tra gli altri, quello di richiedere la risorsa
nomeimmagine.jpeg al server; il server risponderà fornendo l'immagine al
browser; nessuna immagine viene visualizzata nel browser in quanto
l'oggetto immagine non viene inserito nel DOM. Nulla ti vieta di mettere,
come url dell'immagine, una cosa tipo "contaclick.php?idarticolo=423": il
risultato sarà che verrà effettuata la richiesta di cui si parlava sopra, e
il gioco è fatto.
Mi sono spiegato? :-D
-- 
Nando [?]
Apostolo della Prova

> Mi sono spiegato? :-D
Forse :-D
Adesso provo.
Le due righe che mi hai passato le passo come funzione sull'evento
onclick del titolo della notizia, giusto?
Intanto ti ringrazio,
vasomik

 Intanto ti ringrazio,
Figurati, non c'è di che. Spero di esserti utile in qualche modo [e mi
aspetto da un momento all'altro che un certo "guru" del ng venga a
bacchettarmi per un qualche grossolano errore che magari ho commesso :-)].


">spacer.gif</a>"
all'interno ho una variabile php che è l'id della notizia.....
Ho scritto cavolate??
Perchè non riesco a farlo funzionare..
Ancora grazie,
vasomik

 Ho scritto cavolate??
Qualcuna :)


Adesso che ho provato, dopo l'ennesima spiegazione, ho capito
chiaramente tutto......infatti funziona :-D
Grazie
Il problema adesso è, come già scritto in messaggi precedenti, tenere
traccia solo del primo click su ogni notizia altrimenti rischio di
avere mille click (sempre dallo stesso utente)....anche perchè
generalmente i click su una notizia sono sempre due, uno per aprirla e
uno per chiuderla!!!
tu hai idea?
a me viene a mente soltanto un cookie......ma se c'è un altro modo ben
venga!!
vasomik

 venga!!
Se le notizie in una pagina sono relativamente poche, puoi utilizzare un
oggetto (globale) e sfruttare quella che viene chiamata "square bracket
notation" per accedere alle sue proprietà; la funzione di sopra potrebbe:
[JAVASCRIPT]
var clicked=new Object();
function showText(id) {
  //Qui va il codice per mostrare o nascondere
  // il testo della notizia
  if (typeof clicked[id]=="undefined") {
    var oImg=new Image();
    oImg.src="hits.php?idnotizia="+id;
    clicked[id]=true;
  }
}
Se, però, il visitatore cambia pagina, poi torna e ri-clicka sulla notizia,
questo nuovo click verrebbe conteggiato. Se invece vuoi far sì che venga
conteggiato solo il primo click della sessione, allora meglio usare un
coockie (e relativo verifica server side) o un'altra soluzione, magari
completamente server side.


 }
Chiaro.....dato che questo dato ha poco interesse potrebbe andarmi
bene quello che hai scritto tu......non mi serve a fini statistici ma
solo a livello di curiosità e più che altro mi interessa il periodo in
cui ci sono più click quindi anche togliendo una certa percentuale
dalla somma dei click di un dato lasso di tempo posso avere dati
utili, non pensi?
Comunque da questo post ho imparato tanto...
vasomik

 Comunque da questo post ho imparato tanto...
Eeeeeehhh, spero di non aver scritto troppe cappellate :-D


> Eeeeeehhh, spero di non aver scritto troppe cappellate :-D
Dato che funziona non penso tu ne abbia scritte!!!! :-D