Contatore Top Forum

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Ciao a tutti.
Mi piacerebbe creare una specie di contatore visite però al contrario
cioè il numero aumenta in mancaza di visite, si può fare in php?

L'esempio è nel mio forum
http://max400.forumfree.it/

in basso su statistiche vedrete un numero tipo 457° top forum
questo numero rappresenta la media delle visite degli utenti in base
a tutti i forum del circuito forumfree.

Ogni visita vale 2°....in mancanza di visite...se nessuno visita il forum
questo numero sprofonda quindi ogni mezzora avremo 459° poi 461° poi 463°

Qualkuno di voi è capace di realizzarlo?
Grazie.

Ps adesso il numero è sceso a 378°...i primi giorni di ogni mese le posizioni cambiano moltissimo poi si stabilizzano.
Quando si arriva sotto ai 200 si ha la possibilita di inserire un pulsante per essere votati in topo forum
quando un utente clicca sul pulsante regala all'amministratore la bellezza di 50 punti
 
Ultima modifica:

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Bene bene bene

potrebbe proprio essere quello giusto...
però se ci fosse qualkoda di "artigianale"
fatto con le proprie zampette...
per poterci capire qualkosa.
Per uno ignorante come me...
in genere bisognerebbe creare dei semplici contatori
dove quello maggiore con più visite assume il primo posto,
e di conseguenze gli altri scendono.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
provo a spararne una, molto molto artigianale ......

nella pagina degli accessi :

PHP:
<?php

//connessione a mysql
$conn = mysql_connect("localhost", "root", "", "database");
$db = mysql_select_db("database");
// ad ogni nuovo accesso potremmo aggiornare il contatore
// Calcolando che la query per l'inserimento degli accessi sia piu o meno cosi
$query = "INSERT INTO accessi SET idUtente = " . $_SESSION['idUtente'] . ",
                                  dataAccesso = NOW()";

// impostiamo il tempo 
$minuti = 30;
// recuperiamo il valore del contatore in questo caso da un file di testo
$file = "contatore.txt";
$fr = fopen($file, 'r') or die("Impossibile aprire il file in lettura!");
$contatore = fgets($fr);
fclose($fr);

// calcoliamo quanto tempo è passato dall'ultimo accesso
$query = "SELECT TIMESTAMPDIFF(MINUTE , dataAccesso, NOW()) AS tempo
                 FROM accessi
                 ORDER BY dataAccesso DESC
                 LIMIT 1";
$tempo = mysql_fetch_row(mysql_query($query));

// lo dividiamo per i minuti prefissati arrotondando all'eccesso
$incremento = ceil($tempo[0] / $minuti);


// se maggiore di uno dobbiamo aumentare il contatore
if ($incremento > 1) {
    // in pratica il numero dell mezze ore per i 2 punti     
    $contatore+= $incremento * 2;    
} else {
    // altrimenti decrementiamo di 2
    $contatore-=2;
}
// aggiorniamo il contatore
$fr = fopen($file, 'w') or die("Impossibile aprire il file in scrittura!");
fwrite($fr, $contatore);
fclose($fr);
?>

Per visualizzare il contatore :

PHP:
<?php
// nella pagina si visualizza
$file = "contatore.txt";
$fr = fopen($file, 'r') or die("Impossibile aprire il file in lettura!");
$contatore = fgets($fr);
fclose($fr);
echo $contatore;
?>
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
l'idea mi sembra giusta

mi sembra ok c'è una parte che non capisco bene...

PHP:
$query = "SELECT TIMESTAMPDIFF(MINUTE , dataAccesso, NOW()) AS tempo
                 FROM accessi
                 ORDER BY dataAccesso DESC
                 LIMIT 1";
$tempo = mysql_fetch_row(mysql_query($query));


TIMESTAMPDIFF.....?
la tabella è accessi
i campi MINUTE, dataAccesso,NOW()...

Questa parte me la puoi spiegare un po meglio?
altra domanda: senza database si può fare? solo con txt e timestamp()?

Grazie!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
La tabella è accessi

i campi sono idUtente e dataAccesso

TIMESTAMPDIFF è una funzione di mysql che ti restituisce la differenza tra due date

con MINUTE gli indichi come ti deve restituire la differenza quindi in minuti

NOW è la data corrente

In pratica ti restituisce la differenza in minuti tra la data registrata e quella corrente

Per la funzione TIMESTAMPDIFF è necessario il database ma la differenza tra due date si puo calcolare anche in php

Senza database intendi anche per gli accessi?

penso di si, al momento non mi viene in mente niente di intelligente pero se vuoi evitare il database ci possiamo provaree
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Potrebbe funzionare cosi senza data base

Nella pagina degli accessi :

PHP:
<?php

// impostiamo i nomi dei file dovranno esistere entrambi
$file_data = "ultimoaccesso.txt";
$file = "contatore.txt";
// impostiamo il tempo 
$secondi = 1800; // 30 minuti

/* * ********** Recuperiamo ed aggiorniamo la data dell'ultimo accesso **************** */
// apriamo il file in lettura
$fr_data = fopen($file_data, 'r') or die("Impossibile aprire il file in lettura!");
// memorizziamo la data
$ultimoaccesso = fgets($fr_data);
// chiudiamo il file
fclose($fr_data);
//recuperiamo la data attuale in secondi
$adesso = time();
// riapriamo il file in scrittura
$fr_data = fopen($file_data, 'w') or die("Impossibile aprire il file in scrittura!");
// lo aggiorniamo
fwrite($fr_data, $adesso);
// lo chiudiamo
fclose($fr_data);

/* * ********** Recuperiamo il valore del contatore **************** */

$fr = fopen($file, 'r') or die("Impossibile aprire il file in lettura!");
$contatore = fgets($fr);
fclose($fr);

// calcoliamo quanto tempo è passato dall'ultimo accesso
$tempo_trascorso = time() - $ultimoaccesso;

// se maggiore del tempo impostato dobbiamo aumentare il contatore
if ($tempo_trascorso > $secondi) {
    // dividiamo i secondi per 60 e poi per 30 per recuperare quante mezz'ore sono passate 
    // arrotondiamo per difetto prima lo avevo fatto per eccesso
    $incremento = floor(($tempo_trascorso / 60) / 30);
    // incrementiamo di 2 ogni mezz'ora passata
    $contatore+= $incremento * 2;
} else {
    // altrimenti decrementiamo di 2
    $contatore-=2;
}
// aggiorniamo il contatore
$fr = fopen($file, 'w') or die("Impossibile aprire il file in scrittura!");
fwrite($fr, $contatore);
fclose($fr);
?>

per visualizzarlo

PHP:
<?php

$file = "contatore.txt";
$fr = fopen($file, 'r') or die("Impossibile aprire il file in lettura!");
$contatore = fgets($fr);
fclose($fr);

echo $contatore;
?>

ovviamente da testare
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
diminuisce ma non aumenta

ho impostato 10 secondi anzi 1800 per sbrigarmi prima
forse qualkosa che non va nell'incremento?

http://max400scuola.altervista.org/aaa/a-php/pagina_esempio.php
http://max400scuola.altervista.org/aaa/a-php/contatore.txt
http://max400scuola.altervista.org/aaa/a-php/ultimoaccesso.txt

ho inviato tutti e 3 file
lo script per visualizzare il contatore l'ho messo dentro il file pagina_esempio.php

in caso mi prepari un file allegato metti tutto in una cartella in .rar
che forse è meglio. :book:

Grazie ciao!
by Max
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
forse qualkosa che non va nell'incremento?

Mi sembra a posto ....

se riduci il tempo a 10 secondi

poi non puoi dividere in questo modo:

PHP:
// dividiamo i secondi per 60 e poi per 30 per recuperare quante mezz'ore sono passate 
    $incremento = floor(($tempo_trascorso / 60) / 30);

al massimo per verdere se aumenta prova direttamente con i secondi
PHP:
// dividiamo i secondi per 60 e poi per 30 per recuperare quante mezz'ore sono passate 
// $incremento = floor(($tempo_trascorso / 60) / 30);
$incremento = $tempo_trascorso;
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Perfetto!

Adesso funziona!

http://max400scuola.altervista.org/aaa/a-php/pagina_esempio2.php

http://max400scuola.altervista.org/aaa/a-php/ultimoaccesso2.txt
http://max400scuola.altervista.org/aaa/a-php/contatore2.txt

ma ci sarebbe un modo per avere un numero più piccolo anzicchè cosi grande?
tipo dal 1° (il momento della creazione) a in poi?


Un bel contatore al rovescio, che nasce nella prima posizione 1° e poi se si trascura la pagina
esso aumenta sempre di più fino a sprofondare a numeri grossi?

A differenza di un normale contatore che richiede la visita per aumentare
questo invece aumenta in automatico senza aprire a pagina.

Grazie!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Forse non ho capito,
ma se nel file contatore.txt all'inizio scrivi 1 il contatore dovrebbe partire da 1 e incrementarsi di due o un suo multiplo
o decrementarsi sempre di due,
avrai sempre comunque sempre un numero dispari

per non andare sotto l'1 :

PHP:
} else {
    // altrimenti decrementiamo di 2 se non è 1
    if($contatore != 1) {
          $contatore-=2;
     }
}
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
No, se metto 1 trovo sempre quel numro grande

Forse non ho capito,
ma se nel file contatore.txt all'inizio scrivi 1 il contatore dovrebbe partire da 1 e incrementarsi di due o un suo multiplo
o decrementarsi sempre di due,
avrai sempre comunque sempre un numero dispari

per non andare sotto l'1 :

PHP:
} else {
    // altrimenti decrementiamo di 2 se non è 1
    if($contatore != 1) {
          $contatore-=2;
     }
}

Ho provato ma vedo sempre quel numero grande
o provato diversi modi, me ne sono sicurato guardando il contatore
che inizialmente è 1 ma non và
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
a me resta basso il numero


non so come fare per allegarti i miei file :confused:
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Me li mandi per email

Alla vecchia posta di tiscali.
(ma come mai qui non li puoi mettere?)

Poi in seguito preparerò una pagina con un bel video per inaugurare il contatore a tempo.

Quindi saranno necessari 2 esempi
il primo quello di prova a cui siamo lavorando adesso 10 secondi
il secondo quello definitivo 30 minuti da pubblicare in questa pagina di prova
ci sarà un video da you tube che ho già pubblicato nel mio forum
dal titolo "sabrina boys".

Ultima cosa, a lavoro ultimato metterò gli script nel mio forum
(una specie di libretto d'appunti), posso mettere il tuo nome e
quello di web designer? (è già messo) come titolari dello script?

Per oggi non mi posso più collegare
a stasera sul tardi!

ciao e grazie!
by max
 
Discussioni simili
Autore Titolo Forum Risposte Data
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 visite per ogni pagina con MYSQL - PHP PHP 40
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
A contatore visite PHP 6
Shyson richiamare contatore PHP 5
GoshMaledetto Contatore numero letture PHP 4
C Iframe e contatore visite HTML e CSS 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
B contatore di download PHP 1
max_400 Contatore scaricamento file... semplice semplice by max_400 PHP 8
davide1982 Incremento contatore click PHP 14
C Contatore visite su Facebook (era: quesito) PHP 2
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
R Creare un contatore visite senza mysql 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
A Problema Contatore PHP 6
M Incrementare contatore da flash Flash 12
SolidSnake4 contatore visite PHP 4
SolidSnake4 contatore visite PHP 2

Discussioni simili