Contatore visite per ogni pagina con MYSQL - PHP

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
no non devi fare se hai 300 pagine 300 contatori.
ma ti conviene fare un file chiamato es. contegggio.php con tutta la parte del conteggio (la prima) esclusa la variabile
PHP:
$pagina_num = 1;
poi nella pagina prima.php scrivi
PHP:
<?php
//.....
$pagina_num = 1;
include_once "contegggio.php";
//.....
?>
nella seconda.php
PHP:
<?php
//.....
$pagina_num = 2;
include_once "contegggio.php";
//.....
?>
e così via
comunque dallo script togli
mysql_close()
ci pensa php a chiudere quando serve
poi per vedere meglio il nome della pagina senza tutto l'ambaradan del percorso metti
PHP:
<?php
//....
$pagina = basename($_SERVER['PHP_SELF']);//il nome diventa mysql1.php
//....
?>
altra correzione (mi ero confuso, l'arteriosclerosi) per leggere l'ip correggi in
PHP:
$ip = $_SERVER['REMOTE_ADDR'];

poi il contatore funziona cosi es.
l'ip 11.11.11
visita la pag 1 -> il contatore per ip=11.11.11 e per la pag 1 aumenta di uno
passa alla pag 2 -> il contatore per ip=11.11.11 e per la pag 2 aumenta di uno
torna alla pag 1 -> sono passate 24 ore? no: il contatore per ip=11.11.11 e per la pag 1 non viene aggiornato, si: il contatore si aggiorna
l'ip 22.22.22
visita la pag 1 -> il contatore per ip=22.22.22 e per la pag 1 aumenta di uno
passtae 24 ore l'ip 11.11.11 rivisita la uno il contatore si aggiorna
nella tabella toverai (non scrivo il tempo)
1 mysql1.php 1 11.11.11 2
2 mysql2.php 2 11.11.11 1
3 mysql1.php 1 22.22.22 1
quindi con la parte di visualizzazione vedrai
mysql1.php 3
mysql2.php 1

p.s. se secondo te 24 ore sono troppe modofica l'if dell'intevallo di tempo es > 12
 

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
ho sostituito la variabile di prima con questa: $ip = $_SERVER['REMOTE_ADDR'];
Ma nn legge nessun ip, nn mi memorizza nessun campo, ho provato in un altro pc ma è la stessa cosa, come è possibile ke non trova nessun IP quando mi connetto? Lo sto provando cmq online tramite altervista.

ps.: se faccio echo $ip; mi stampa l'ip.. o_O
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
Sono un cazzone xD, avevo cambiato il nome della tabella e poi sn andato a farmi la doccia, me l'ero tolto di testa, infatti ho rincontrollato xke doveva essere perforza uno sbaglio mio, xke prima funzionava, cmq ok tt apposto, vediamo come va
 

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
ok ci siamo ecco il risultato
id pagina pagina_num ip visite tempo
Modifica Elimina 1 mysql1.php 1 151.**.**.222 1 1368280362
Modifica Elimina 2 mysql2.php 2 151.**.**.222 1 1368283044
Modifica Elimina 3 mysql3.php 3 151.**.**.222 1 1368283045
Modifica Elimina 4 mysql2.php 2 173.252.***.118 1 1368284002
Modifica Elimina 5 mysql2.php 2 80.***.161.110 1 1368284067
Modifica Elimina 6 mysql3.php 3 173.252.***.115 1 1368284069
Modifica Elimina 7 mysql3.php 3 80.***.161.110 1 1368284069

PHP:
//dati di connessione
$query = mysql_query("SELECT pagina, SUM(visite) AS tot FROM contatoregiochi GROUP BY pagina");//o pagina_num se non usi il nome di pagina
echo "<table border=&quot;1&quot;><tr><td>Pagina</td><td>Visite</td></tr>";
while($riga=mysql_fetch_array($query)){
    $pagina = $riga['pagina'];
    $visite = $riga['tot'];
    echo "<tr><td>$pagina</td><td>$visite</td></tr>";
    echo "</table>";
}

Qui nel codice di stampa mi stampa l'array a lista, cioè mi stampa tt le pagine e tt le visite, se voglio selezionare solo il campo delle visite di mysql2.php e stamparlo cosa dovrei utilizzare? WHERE id o qualcosa del genere? Tipo così:
PHP:
$query = mysql_query("SELECT pagina, SUM(visite) AS tot FROM contatoregiochi WHERE pagina_num = $pagina_num GROUP BY pagina");//o pagina_num se non usi il nome di pagina
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti conviene farti un piccolo form in cui elenchi le pagine che sono regitrate e selezioni o tutte o la pag che vuoi vedere
prova così e dimmi se funzia
PHP:
<?php
//soliti dati di connessione
if(isset($_POST['vedi'])){
	$wh="";
	if($_POST['pagina'] !0""){
		$wh=" WHERE pagina_num=".$_POST['pagina']." ";
	}
	$query = mysql_query("SELECT pagina, SUM(visite) AS tot FROM contatoregiochi $wh GROUP BY pagina");
	echo "<table border=&quot;1&quot;><tr><td>Pagina</td><td>Visite</td></tr>";
	while($riga=mysql_fetch_array($query)){
    	$pagina = $riga['pagina'];
    	$visite = $riga['tot'];
    	echo "<tr><td>$pagina</td><td>$visite</td></tr>";
	}
    echo "</table>";
}
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<select name="pagina">
  <option value="">-tutte-</option>
<?php
  $query = mysql_query("SELECT pagina, pagina_num FROM contatoregiochi GROUP BY pagina ORDER BY pagina")
  while($riga=mysql_fetch_array()){
  	echo "<option value=\"".$riga['pagina_num']."\">".$riga['pagina']."</option>";
  }
?> 
</select><br />
<input name="vedi" type="submit" id="vedi" value="vedi">
</form>

controlla i nomi tabella e campi
 
Ultima modifica:

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
PHP:
<?php
//soliti dati di connessione
if(isset($_POST['vedi'])){
    $wh="";
    if($_POST['pagina'] !0""){ //QUI SEGNA ERRORE, HO SOSTITUITO CON: !=0
        $wh=" WHERE pagina_num=".$_POST['pagina']." ";
    }
    
  $query = mysql_query("SELECT pagina, pagina_num FROM contatoregiochi GROUP BY pagina ORDER BY pagina") //Questa nn l'ho capita, come funziona?
  while($riga=mysql_fetch_array()){ //QUI E' VUOTO, E SEGNA ERRORE il fetch array
      echo "<option value=\"".$riga['pagina_num']."\">".$riga['pagina']."</option>";
  }
?>
 
Ultima modifica:

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
A me comunque servirebbe realizzare questa classifica:

PHP:
<?php

??????????????????????	
		
$mysql2 = _get_file_contents contatoregiochi?
$mysql1 = _get_file_contents contatoregiochi?
$mysql3 = _get_file_contents contatoregiochi?

$giochi = array(

array('partite' => "$mysql2",
'linkgioco' => 'http://...mysql2.php',
'titlealt' => 'Gioco mysql2'),

array('partite' => "$mysql1",
'linkgioco' => 'http://...mysql1.php',
'titlealt' => 'Gioco mysql1'),

array('partite' => "$mysql3",
'linkgioco' => 'http://...mysql3.php',
'titlealt' => 'Gioco mysql3'
));

$numgiochi = count($giochi);

rsort($giochi)

?>


        <table class="titolo">
          <tr>
            <td>
<b><font color="#08088A">MOST PLAYED GAMES:</font></b>
            </td>
          </tr>
        </table>

        <table class="tabellaclassifica">
		
	  <tr>
	    <td align="left">
	      <b><font color="#08088A">1 &nbsp;</font></b><a href="<?php echo $giochi[0]['linkgioco']; ?>" title="<?php echo $giochi[0]['titlealt']; ?>"><?php echo $giochi[0]['titlealt']; ?></a>
            </td>
            <td>
Played: <?php echo $giochi[0]['partite']; ?>
            </td>
	  </tr>
			 
	  <tr>
	    <td align="left">
              <b><font color="#08088A">2 &nbsp;</font></b><a href="<?php echo $giochi[1]['linkgioco']; ?>" title="<?php echo $giochi[1]['titlealt']; ?>"><?php echo $giochi[1]['titlealt']; ?></a>
	    </td>
            <td>
Played: <?php echo $giochi[1]['partite']; ?>
            </td>
          </tr>
					 
	  <tr>
            <td align="left">
	      <b><font color="#08088A">3 &nbsp;</font></b><a href="<?php echo $giochi[2]['linkgioco']; ?>" title="<?php echo $giochi[2]['titlealt']; ?>"><?php echo $giochi[2]['titlealt']; ?></a>
            </td>
            <td>
Played: <?php echo $giochi[2]['partite']; ?>
            </td>
	  </tr>
					 
	  <tr>
	    <td align="left">
	      <b><font color="#08088A">4 &nbsp;</font></b><a href="<?php echo $giochi[3]['linkgioco']; ?>" title="<?php echo $giochi[3]['titlealt']; ?>"><?php echo $giochi[3]['titlealt']; ?></a>
	    </td>
            <td>
Played: <?php echo $giochi[3]['partite']; ?>
            </td>
	  </tr>


		 					 
        </table>

Capito come? Attualmente ce l'ho coi contatori in php-txt qst classica col curl e file_get_contents
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
qui hai ragione
if($_POST['pagina'] !0""){ mi era sfuggito lo shift
PHP:
if($_POST['pagina'] !=""){
qui non l'ho capita
while($riga=mysql_fetch_array()){ //QUI E' VUOTO, E SEGNA ERRORE il fetch array
il $query c'era
per il resto do un occhio poi spero di saperti dire
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
questa non l'ho capita
PHP:
$query = mysql_query("SELECT pagina, pagina_num FROM contatoregiochi GROUP BY pagina ORDER BY pagina") //Questa nn l'ho capita, come funziona?
estrae il nome della pagina e il numero riempiendo dinamicamente la <select> con i valori pagina_num e nome pagina, in questa maniera eviti di scrivere nuneri di pagina che non esisono.
poi per il fatto che ti dia errore alla riga
$riga=mysql_fetch_array($query) metti un var_dump che poi toglierai
PHP:
//.....
$query = mysql_query("SELECT pagina, pagina_num FROM contatoregiochi GROUP BY pagina ORDER BY pagina") //Questa nn l'ho capita, come funziona?
var_dump($query);
//...
se il var_dump ti da BOOL FALSE la query non viene eseguita quindi devi verificare che la stringa "SELECT...." sia scritta con i nomi giusti.
sappimi dire
 

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
Mancava il punto e virgola alla fineeee..
Ok funziona, mi tornerà molto utile grazie :D

PHP:
<?php

??????????????????????    
        
$mysql2 = _get_file_contents contatoregiochi?
$mysql1 = _get_file_contents contatoregiochi?
$mysql3 = _get_file_contents contatoregiochi?

$giochi = array(

array('partite' => "$mysql2",
'linkgioco' => 'http://...mysql2.php',
'titlealt' => 'Gioco mysql2'),

array('partite' => "$mysql1",
'linkgioco' => 'http://...mysql1.php',
'titlealt' => 'Gioco mysql1'),

array('partite' => "$mysql3",
'linkgioco' => 'http://...mysql3.php',
'titlealt' => 'Gioco mysql3'
));

$numgiochi = count($giochi);

rsort($giochi)

?>

Questo è un'array invece ke uso come classifica solo ke la variabile $mysql2 $mysql1 e $mysql3 dovrebbero prendere il valore delle visite praticamente di ogni pagina, in modo ke poi posso mettere in ordine per pagine più visitate, l'array funziona se stampo in html è ok.. anke le tabelle e tutto, il problema è ke nn so uploadare il contenuto dei contatori mysql nelle variabili, solo il campo del conteggio
 
Ultima modifica:

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
PHP:
<?php
// connessione al database MySQL
mysql_connect("locast", "alessanura", "") or die("Impossibile accedere a MySQL.");
mysql_select_db("ura") or die("Impossibile selezionare il database.");

if(isset($_POST['vedi'])){
    $wh="";
    if($_POST['pagina'] !=0){
        $wh=" WHERE pagina_num=".$_POST['pagina']." ";
    }
    $query = mysql_query("SELECT pagina, SUM(visite) AS tot FROM contatoregiochi $wh GROUP BY pagina ORDER BY count(visite) DESC LIMIT 0, 10");
    echo "<table border=&quot;1&quot;><tr><td>Pagina</td><td>Visite</td></tr>";
    while($riga=mysql_fetch_array($query)){
        $pagina = $riga['pagina'];
        $visite = $riga['tot'];
        echo "<tr><td>$pagina</td><td>$visite</td></tr>";
    }
    echo "</table>";
}
?>

Qualche anima gentile ke mi dice come stampare i primi 10 record in ordine crescente? E' giusto il codice ma nn riesco a far apparire l'output video
 
Ultima modifica:

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
PHP:
<?php
include("conf.php");
?>

<?php

mysql_select_db($db, $connetti) or die("Impossibile selezionare il database.");


$ip = $_SERVER['REMOTE_ADDR'];
$pagina = $_SERVER['PHP_SELF']; //potrebbe farti comodo per sapere il nome della pagina es gioco_primo.php
$ora = time(); //leggo il momento della visita quindi

//dati di connessione
$query_1 = mysql_query("SELECT * FROM contatoregiochi WHERE nomegioco = $nomegioco AND ip = '$ip'");
if(mysql_num_rows($query_1)== 0){ //non ci sono record per quell'ip e quella pagina
    
    $query_2 = mysql_query("INSERT INTO contatoregiochi(pagina, nomegioco, ip, visite, tempo)
    VALUES('$pagina', '$nomegioco', '$ip', '1', '$ora')");
    
}else{ //il record esiste

    $riga = mysql_fetch_array($query_1);
    //verifico l'intervallo di tempo tra l'ultima visita e l'attuale
    //e lo trasformo in ore
    $intervallo = ($ora - $riga['tempo'])/3600;
    //verifico che siano passate almeno 24 ore dall'ultima visita (ma a te decidere il tempo)
    if($intervallo > 24){ //sono passate più di 24 ore quindi uppo le visite e il tempo, altrimenti non faccio nulla
        $query_3 = mysql_query("UPDATE contatoregiochi SET visite = visite +1, tempo = $ora WHERE nomegioco = $nomegioco AND ip = '$ip'");
    }
}
?>
Funziona tutto e ho implementato la classifica, c'è solo 1 cosa ke nn va e nn capisco, qst è lo script del contatore, ke lo includo nella pagina di ogni gioco, in ogni pagina scrivo - $nomegioco = "blabla" include scriptcontatore.php - solo ke mi segna più volte le persone cn lo stesso ip.. nn capisco dv sia il problema, con $pagina_num funzionava
 
Ultima modifica:

Alessandro Le Mura

Utente Attivo
28 Apr 2013
74
0
0
www.glaucusgames.com
è completo ma mi segna più volte la stessa visita, l'ip, se vai di continuo aumenta di 1 sempre, non funziona la visita unica per ip ogni 24 ore.. manca solo la variabile $nomegioco = gioco1 ke è inserita in ogni pagina di ogni gioco, e il pezzo di script per stampare il risultato. Ma mi memorizza e conteggia più volte lo stesso ip
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
hai modificato la tabella "contatoregiochi" aggiungendo il campo nomegioco varchar(25), piu di 25 se il nome del gioco è più lungo di 25 caratteri?
poi ho confrontato gli script e non vedo perche non dovrebbe funzionare, l'unica cosa che vedo è alla $query_1 e $query_3 dove mancano gli apici a
.....WHERE nomegioco = '$nomegioco' AND....
gli apici non si mettono solo se la variabile è un numero intero
aggiungili e sappimi dire
 
Discussioni simili
Autore Titolo Forum Risposte Data
A contatore visite PHP 6
C Iframe e contatore visite HTML e CSS 4
C Contatore visite su Facebook (era: quesito) PHP 2
R Creare un contatore visite senza mysql PHP 6
SolidSnake4 contatore visite PHP 4
SolidSnake4 contatore visite PHP 2
A Contatore visite Classic ASP 16
daviduccio Cerchi un contatore di visite personalizzabile e gratuito? Presenta il tuo Sito 0
T contatore totale click e media in secondi PHP 7
T Contatore alla rovescia su più elementi simultaneamente Javascript 4
L [PHP] contatore con sqlite PHP 9
T [PHP] [Javascript] Download e contatore PHP 3
bubino8 [PHP] Contatore Scan QR con redirect PHP 10
F Creare un contatore numerico in HTML HTML e CSS 9
M [PHP] Contatore Tempo Server-side PHP 8
M [PHP] contatore record PHP 7
J contatore visualizzazioni video HTML e CSS 1
Monital Contatore sul sito Google Analytics 2
R Contatore alla rovescia per adesioni Supporto Mr.Webmaster 0
Marco_88 Limitare un contatore PHP 1
W Contatore posti in un form, come implementarlo? WordPress 0
Marco_88 Contatore di accessi PHP 5
I contatore caratteri textarea sbagliato Javascript 1
D Record disconesso contatore dove sbaglio? Classic ASP 0
V [risolto] Contatore caratteri stile SMS da una textarea Javascript 6
Alessandro Le Mura Contatore di click su link con redirect ogni 24 ore PHP 4
Alessandro Le Mura [RISOLTO]Contatore di click su link con redirect PHP 5
Alessandro Le Mura Contatore php - txt PHP 8
8 Script per il contatore download PHP 11
L Inserire campo input dinamico con contatore in jquery jQuery 8
Shyson richiamare contatore PHP 5
GoshMaledetto Contatore numero letture PHP 4
Shyson Contatore post non si aggiorna in automatico PHP 7
S Contatore click su link PHP 1
C contatore alfanumerico 0000 -> ZZZZ, idee? PHP 3
F contatore PHP PHP 12
max_400 Contatore Top Forum PHP 17
B contatore di download PHP 1
max_400 Contatore scaricamento file... semplice semplice by max_400 PHP 8
davide1982 Incremento contatore click PHP 14
davide1982 Problema di redirect dal contatore di click Database 1
T Memberarea, forum, contatore...Mi chiarite le idee? HTML e CSS 7
A Contatore per code di clienti in attesa Flash 0
G contatore commenti PHP 6
I contatore crediti a 8574 Supporto Mr.Webmaster 3
foki {PHP Script} Contatore Utenti Registrati PHP 17
danlupo Problemi visualizzazione Contatore PHP 2
danlupo Problema Contatore Accessi PHP 3
whirl Contatore condiviso tra 2 siti PHP 3
Z Contatore fotogallery: problemi a caricare onload laprima PHP 1

Discussioni simili