- Home
- Categorie
- Coding e Sistemistica
- PHP
- Contatore visite
-
Contatore visite
Salve a voi ragazzi,
ho creato uno script molto semplice per il conteggio delle visite ricevute..ora c'è un problemino.Io vorrei che mi contasse le visite relative ad ogni utente presente nel sito...invece questo script fa un conteggio non separato fra gli utenti..diciamo andrebbe bene per una index di un sito per sapere le visite totali di quella pagina..io invece dovrei sapere le visite ricevute totali separate per ogni utente..Questo è lo script[PHP]
<?
//Includiamo il file di configurazione
include("config.php");//data visita
$date = date("Y/m/s H");//Prendo l'ip del visitatore
$ip = $_SERVER['REMOTE_ADDR'];//Effettua la connessione al database
$link=mysql_connect ($db_host, $db_username, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_database);//Selezioniamo il database
mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());//Invio i dati al database
$query = @mysql_query("INSERT INTO visite VALUES ('$id','$ip','$date')",$link);//Selezioniamo gli ip unici che siano stati raccoli nella stessa data
//E con la stessa ora
$query = @mysql_query("SELECT ip,date FROM visite GROUP BY ip,date",$link);//Calcoliamo il numero di righe ottenute dalla
//selezione precedente
$visite = mysql_numrows($query);
$testovisite="Visite ricevute";
//Visualizziamo il numero di utenti on line
//Aggiustate la visualizzazione come preferite
echo $testovisite;
echo $visite;//Chiudo la connessione al databse
@mysql_close();?>[/PHP]
questa pagina che ho chiamato visite.php l ho inclusa con un include nella pagina profiloutenti.php
Ora come posso per farsi' che mi conteggi solo le visite ricevute del profilo che si va a visitare?
Grazie
-
Ho risolto..praticamente ho modificato un pò lo script visite.php...mi sono ricavato il nome utente della pagina del profilo che si va a visitare tramite GET e non ho usato piu' include per includere la pagina..ma ho inserito il codice direttamente nella pagina profiloutenti...ecco lo script modificato da me
[php]
$nicknamevisitato=$_GET['nickname'];//Parte relativa alle visite ricevute
//data visita
$date = date("Y/m/s H");//Prendiamo l'ip del visitatore
$ip = $_SERVER['REMOTE_ADDR'];//Invio i dati al database
$query1 = @mysql_query("INSERT INTO visite VALUES ('$id','$ip','$date','$nicknamevisitato')",$link);//Selezioniamo gli ip unici che siano stati raccoli nella stessa data
//E con la stessa ora
$query1 = @mysql_query("SELECT id,ip,date,nickvisitato FROM visite WHERE nickvisitato='".$_GET['nickname']."'",$link);//Calcoliamo il numero di righe ottenute dalla
//selezione precedente
$visite = mysql_numrows($query1);
$testovisite="Visite ricevute";
//Visualizziamo il numero di utenti on line
//Aggiustate la visualizzazione come preferite
echo $testovisite;
echo $visite;
[/php]:D
Ho notato un altra cosa...praticamente se io aggiorno continuamente la pagina il valore aumenta sempre di un unità...e non dovrebbe succedere ciò..quindi dovrei fare un controllo se quell ip che visita la pagina è gia presente...se si non aggiungere la visita se invece non è presente aggiungere la visita...
Come potrebbe essere fatto in modo pratico questo controllo..?
-
La butto giù alla buona:
[php]
//selezione le visite dallo stesso ip
$query = @mysql_query("SELECT id FROM visite WHERE ip='$ip'",$link);//Calcoliamo il numero di righe ottenute dalla selezione precedente
$prec_visita = mysql_numrows($query);if($prec_visita=='0'){
..aggiungi visita...
}
[/php]Se giochi anche con le date nella query puoi anche contare lo stesso ip 1 sola volta al giorno.Spero di averti aiutato.
-
Ciao e grazie della risposta..allora ho fatto
[PHP]//Parte relativa alle visite ricevute
//data visita
$date = date("Y/m/s H");//Prendiamo l'ip del visitatore
$ip = $_SERVER['REMOTE_ADDR'];//selezione le visite dallo stesso ip
$query = @mysql_query("SELECT id FROM visite WHERE ip='$ip'",$link);//Calcoliamo il numero di righe ottenute dalla selezione precedente
$prec_visita = mysql_numrows($query);if($prec_visita=='0'){
//Invio i dati al database
$query1 = @mysql_query("INSERT INTO visite VALUES ('$id','$ip','$date','$nicknamevisitato')",$link);
}[/PHP]
Ora il problema è che sta fermo...anche se un utente non l ho mai visitato mi da 0 visite ricevute nel momento in cui vado a visitare la sua pagina inveced i darmi 1:?
-
Ma sei a digiuno di PHP immagino.
Hai eliminato il pezzo di codice che seleziona il numero di visite.
-
non l ho eliminato ho postato solo la parte di codice che ho modificato:)
Questo è lo script intero..
[php]
//Parte relativa alle visite ricevute
//data visita
$date = date("Y/m/s H");//Prendiamo l'ip del visitatore
$ip = $_SERVER['REMOTE_ADDR'];//selezione le visite dallo stesso ip
$query = @mysql_query("SELECT id FROM visite WHERE ip='$ip'",$link);//Calcoliamo il numero di righe ottenute dalla selezione precedente
$prec_visita = mysql_numrows($query);if($prec_visita=='0'){
//Se quell ip non ha ancora visitato quell utente Invio i dati al database
$query1 = @mysql_query("INSERT INTO visite VALUES ('$id','$ip','$date','$nicknamevisitato')",$link);}//Selezioniamo gli ip unici che siano stati raccoli nella stessa data
//E con la stessa ora
$query1 = @mysql_query("SELECT id,ip,date,nickvisitato FROM visite WHERE nickvisitato='".$_GET['nickname']."'",$link);//Calcoliamo il numero di righe ottenute dalla
//selezione precedente
$visite = mysql_numrows($query1);
$testovisite="Visite ricevute";
//Visualizziamo il numero di utenti on line
//Aggiustate la visualizzazione come preferite
echo $testovisite;
echo $visite;[/php]
-
Ok,ho risolto modificando la query cosi'
[php]$nicknamevisitato=$_GET['nickname'];
//selezione le visite dallo stesso ip
$query = @mysql_query("SELECT id,nickvisitato FROM visite WHERE ip='$ip' AND nickvisitato='$nicknamevisitato'",$link);
[/php]Questo lo script intero..
[php]$nicknamevisitato=$_GET['nickname'];
//Parte relativa alle visite ricevute
//data visita
$date = date("Y/m/s H");//Prendiamo l'ip del visitatore
$ip = $_SERVER['REMOTE_ADDR'];//selezione le visite dallo stesso ip
$query = @mysql_query("SELECT id,nickvisitato FROM visite WHERE ip='$ip' AND nickvisitato='$nicknamevisitato'",$link);//Calcoliamo il numero di righe ottenute dalla selezione precedente
$prec_visita = mysql_numrows($query);if($prec_visita=='0'){
//Se quell ip non ha ancora visitato quell utente Invio i dati al database
$query1 = @mysql_query("INSERT INTO visite VALUES ('$id','$ip','$date','$nicknamevisitato')",$link);}//Selezioniamo gli ip unici che siano stati raccoli nella stessa data
//E con la stessa ora
$query2 = @mysql_query("SELECT id,ip,date,nickvisitato FROM visite WHERE nickvisitato='".$_GET['nickname']."'",$link);//Calcoliamo il numero di righe ottenute dalla
//selezione precedente
$visite = mysql_numrows($query2);
$testovisite="Visite ricevute";
//Visualizziamo il numero di utenti on line
//Aggiustate la visualizzazione come preferite
echo $testovisite;
echo $visite;[/php]Grazie;)
-
Prova a svuotare la tabella dal DB, e prova a rivisitare la pagina.
Così ad occhio e croce dovrebbe funzionare ma è ovvio che avendo già tutto installato, potresti provare un debug con qualche echo, per vedere se le query sono corrette e se lo sono i valori.Buonanotte.
-
Ho provato sia svuotando il db sia aggiornando il mio indirizzo ip,la visita viene aggiunta solo se quell ip non ha ancora visitato quell utenteutente..quindi funziona:)
Buonanotte a te