phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
incrementare automaticamente una tabella
- alex75
- phpBB Expert
- Messaggi: 943
- Iscritto il: 31/03/2012, 23:46
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.37
- Database: MySQL 5.6.39
- Località: palermo
- Contatta:
Re: incrementare automaticamente una tabella
Funziona!
Grazie
Grazie
Forum Ufficiale di Supporto Italiano :
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
- alex75
- phpBB Expert
- Messaggi: 943
- Iscritto il: 31/03/2012, 23:46
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.37
- Database: MySQL 5.6.39
- Località: palermo
- Contatta:
Re: incrementare automaticamente una tabella
per onorare il titolo del topic e i consigli ricevuti, ho voluto provare a fare a meno dell'estensione (ma anche perchè mi piace studiare e capire ).
Come già detto in precedenza la tabella userlastvisit non è molto reattiva (se mi collego al forum essendo già loggato da browser il mio timestamp resta a ieri... ho dovuto disconnettermi e riconnettermi perchè si aggiornasse).
Ecco il codice attuale funzionante senza bisogno di altre tabelle/estensioni (a parte la tabella "attivo" che serve a me ad altri scopi):
Tutto funziona, ma manca sempre il capo espiatorio... quando e come far partire tutto?
L'idea è di lanciare la query alle 23:59... e questo è fattibile sempre tramite timestamp, ma servirebbe sempre qualcuno che inneschi il processo (aprendo una pagina o cliccando qualcosa).
Inoltre potrebbe comunque succedere che in quel minuto in 50 inneschino il processo...
Credo che siamo tornati al problema dei cron alla quale da cpanel non ho accesso.
Dovrei quindi usare i cron di phpbb.
Dico bene o avete altri consigli?
Come già detto in precedenza la tabella userlastvisit non è molto reattiva (se mi collego al forum essendo già loggato da browser il mio timestamp resta a ieri... ho dovuto disconnettermi e riconnettermi perchè si aggiornasse).
Ecco il codice attuale funzionante senza bisogno di altre tabelle/estensioni (a parte la tabella "attivo" che serve a me ad altri scopi):
Codice: Seleziona tutto
<?php
// Mi connetto al database mysql
$dbi = mysqli_connect("localhost", 'root', '', 'sbg');
$sql = "SELECT user_id, group_id, user_lastvisit, attivo
FROM " . USERS_TABLE . "
WHERE attivo = 1
AND DATE(FROM_UNIXTIME (user_lastvisit)) = CURDATE()
ORDER BY user_lastvisit DESC ";
$result = $db->sql_query($sql);
$i = 0;
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('lista_connessi',array(
'USER_CONN' => $idconn[$i],
));
$i = ++$i ;
$idconn[$i] = $row['user_id'];
// Aggiungo 100 punti al contatore
$req = mysqli_query($dbi, "UPDATE `phpbb_users` SET cont_punti = cont_punti + 100 WHERE user_id = '$idconn[$i]'; ");
}
?>
L'idea è di lanciare la query alle 23:59... e questo è fattibile sempre tramite timestamp, ma servirebbe sempre qualcuno che inneschi il processo (aprendo una pagina o cliccando qualcosa).
Inoltre potrebbe comunque succedere che in quel minuto in 50 inneschino il processo...
Credo che siamo tornati al problema dei cron alla quale da cpanel non ho accesso.
Dovrei quindi usare i cron di phpbb.
Dico bene o avete altri consigli?
Forum Ufficiale di Supporto Italiano :
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
- alex75
- phpBB Expert
- Messaggi: 943
- Iscritto il: 31/03/2012, 23:46
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.37
- Database: MySQL 5.6.39
- Località: palermo
- Contatta:
Re: incrementare automaticamente una tabella
O che nessuno sia connesso per poterlo innescare...alex75 ha scritto: Inoltre potrebbe comunque succedere che in quel minuto in 50 inneschino il processo...
Forum Ufficiale di Supporto Italiano :
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
- Micogian
- Leader Programmatori
- Messaggi: 3704
- Iscritto il: 07/01/2010, 8:51
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.4.36
- Database: MySQL 5.1.70-log
- Località: Udine
- Contatta:
Re: incrementare automaticamente una tabella
Ma perchè è importante lanciare la procedura alle 23.59? basterebbe far partire la procedura al primo accesso dopo quell'ora.
Nel mio Forum ho la lista delle ultime immagini del forum che si aggiorna con il primo accesso di qualsiasi utente.
Nel mio Forum ho la lista delle ultime immagini del forum che si aggiorna con il primo accesso di qualsiasi utente.
- alex75
- phpBB Expert
- Messaggi: 943
- Iscritto il: 31/03/2012, 23:46
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.37
- Database: MySQL 5.6.39
- Località: palermo
- Contatta:
Re: incrementare automaticamente una tabella
l'orario è solo ipotetico... dico le 23:59 per essere sicuro che si aggiorni una sola volta al giorno per tutti. Ma forse hai ragione, mi sto complicando la vita.
a me interessa che questo contatore incrementi 100 punti 1 sola volta al giorno e soltanto agli utenti che si siano connessi al forum. In pratica ti assegno 100 punti soltanto se visiti ogni giorno il forum.
Forse potrei reimpostare tutto meglio, assegnando i punti al singolo utente a patto che il suo timestamp sia di oggi... quindi al suo login (e fin qui nell'ultimo codice ci siamo già arrivati).
Mi resta soltanto da trovare una soluzione per evitare che se l'utente si disconnette e riconnette non abbia altri 100 punti.
a me interessa che questo contatore incrementi 100 punti 1 sola volta al giorno e soltanto agli utenti che si siano connessi al forum. In pratica ti assegno 100 punti soltanto se visiti ogni giorno il forum.
Forse potrei reimpostare tutto meglio, assegnando i punti al singolo utente a patto che il suo timestamp sia di oggi... quindi al suo login (e fin qui nell'ultimo codice ci siamo già arrivati).
Mi resta soltanto da trovare una soluzione per evitare che se l'utente si disconnette e riconnette non abbia altri 100 punti.
Forum Ufficiale di Supporto Italiano :
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
- Micogian
- Leader Programmatori
- Messaggi: 3704
- Iscritto il: 07/01/2010, 8:51
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.4.36
- Database: MySQL 5.1.70-log
- Località: Udine
- Contatta:
Re: incrementare automaticamente una tabella
Tu dovresti memorizzare il timestamp relativo alla connessione dell'utente, se l'ultima connessione è precedente al timestamp delle ore 00 gli assegni i 100 punti e aggiorni il timestamp della connessione, se il timestamp associato al'utente è successivo a quelle delle ore 00 vuol dire che l'utente si è già connesso e non gli dai il punteggio.alex75 ha scritto: Mi resta soltanto da trovare una soluzione per evitare che se l'utente si disconnette e riconnette non abbia altri 100 punti.
In pratica
Codice: Seleziona tutto
if (timestamp_delle_ore_00 > timestamp_ultima_connessione)
{
// significa che è la prima connessione dopo le ore 00
// assegni il punteggio e aggiorni il timestamp della connessione
}else{
// se il timestamp dell'ultima connessione è superiore al timestamp delle ore 00 l'utente si è già connesso
// non assegni il punteggio ma aggiorni il timestamp ultima_connessione
}
1) timestamp dell'ultima connessione (memorizzata)
2) timestamp della connessione corrente (il momento della connessione corrente)
3) timestamp delle ore 00
- alex75
- phpBB Expert
- Messaggi: 943
- Iscritto il: 31/03/2012, 23:46
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.37
- Database: MySQL 5.6.39
- Località: palermo
- Contatta:
Re: incrementare automaticamente una tabella
Sto seguendo questa strada e credo che stavolta ci siamo...
creo una nuova tabella dove segnare gli user_id già premiati oggi (la chiamerò id_prem).
ad ogni utente che si collega assegno i punti e registro il suo user_id nella tabella id_prem.
quindi metterò la clausola assegna i punti agli user_id con timestamp di oggi ma che non siano già nella tabella " id_prem".
In fine se nella tabella " id_prem" il timestamp dell'user_id è precedente a quello di oggi... cancello l'user_id , Così il giorno successivo sarà nuovamente possibile assegnargli i punti.
creo una nuova tabella dove segnare gli user_id già premiati oggi (la chiamerò id_prem).
ad ogni utente che si collega assegno i punti e registro il suo user_id nella tabella id_prem.
quindi metterò la clausola assegna i punti agli user_id con timestamp di oggi ma che non siano già nella tabella " id_prem".
In fine se nella tabella " id_prem" il timestamp dell'user_id è precedente a quello di oggi... cancello l'user_id , Così il giorno successivo sarà nuovamente possibile assegnargli i punti.
Forum Ufficiale di Supporto Italiano :
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
- alex75
- phpBB Expert
- Messaggi: 943
- Iscritto il: 31/03/2012, 23:46
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.37
- Database: MySQL 5.6.39
- Località: palermo
- Contatta:
Re: incrementare automaticamente una tabella
Così come lho pensata... il codice sembrerebbe ridursi all'osso, ma non sta funzionando, evidentemente ho è sbagliato il mio pensiero oppure sbaglio qualcosa nel codice.
in pratica la tabella id_prem si aggiorna ma i punti non vengono assegnati
Codice: Seleziona tutto
<?php
// Mi connetto al database mysql
$dbi = mysqli_connect("localhost", 'root', '', 'sbg');
// Azzero la tabella id_prem degli user_id che non si sono ancora connessi oggi... così se si connetteranno potranno ricevere i punti.
$req = mysqli_query($dbi, "UPDATE `phpbb_users` SET id_prem = '1' WHERE DATE(FROM_UNIXTIME (user_lastvisit)) < CURDATE(); ");
// Aggiungo 100 punti al contatore degli user_id con timestamp di oggi
$req1 = mysqli_query($dbi, "UPDATE `phpbb_users` SET cont_punti = cont_punti + 100 WHERE id_prem = '1' AND attivo = '1' AND DATE(FROM_UNIXTIME (user_lastvisit)) == CURDATE(); ");
// dopo aver assegnato i punti porto il valore di id_prem a 2 così per oggi non potrà ricevere altri punti
$req2 = mysqli_query($dbi, "UPDATE `phpbb_users` SET id_prem = '2' WHERE DATE(FROM_UNIXTIME (user_lastvisit)) == CURDATE(); ");
?>
Forum Ufficiale di Supporto Italiano :
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
- alex75
- phpBB Expert
- Messaggi: 943
- Iscritto il: 31/03/2012, 23:46
- Sesso: Maschio
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.6.37
- Database: MySQL 5.6.39
- Località: palermo
- Contatta:
Re: incrementare automaticamente una tabella
Leggasi:alex75 ha scritto:Così come lho pensata... il codice sembrerebbe ridursi all'osso, ma non sta funzionando, evidentemente ho è sbagliato il mio pensiero oppure sbaglio qualcosa nel codice.
2 errori in una solo rigo (giuro ero distratto perchè mentre scrivevo pensavo al codice e rimodificavo il testo )alex75 ha scritto:Così come l'ho pensata... il codice sembrerebbe ridursi all'osso, ma non sta funzionando, evidentemente o è sbagliato il mio pensiero oppure sbaglio qualcosa nel codice.
Edit:
Trovato l'errore nel codice.
C'era un segno = di troppo qui:
Codice: Seleziona tutto
DATE(FROM_UNIXTIME (user_lastvisit)) == CURDATE()
Questo è il codice attuale e funzionante come volevo:
Codice: Seleziona tutto
<?php
// Mi connetto al database mysql
$dbi = mysqli_connect("localhost", 'root', '', 'sbg');
// Azzero la tabella id_prem degli user_id che non si sono ancora connessi oggi... così se si connetteranno potranno ricevere i punti.
$req = mysqli_query($dbi, "UPDATE `phpbb_users` SET id_prem = '1' WHERE DATE(FROM_UNIXTIME (user_lastvisit)) < CURDATE(); ");
// Aggiungo 100 punti al contatore degli user_id con timestamp di oggi
$req1 = mysqli_query($dbi, "UPDATE `phpbb_users` SET cont_punti = cont_punti + 100 WHERE attivo = '1' AND id_prem = '1' AND DATE(FROM_UNIXTIME (user_lastvisit)) = CURDATE(); ");
// dopo aver assegnato i punti porto il valore di id_prem a 2 così per oggi non potrà ricevere altri punti
$req2 = mysqli_query($dbi, "UPDATE `phpbb_users` SET id_prem = '2' WHERE DATE(FROM_UNIXTIME (user_lastvisit)) = CURDATE(); ");
?>
Forum Ufficiale di Supporto Italiano :
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
https://www.phpbb-italia.it
Traduzione italiana phpBB
Estensioni per phpbb 3.1.X
Estensioni per phpbb 3.2.X
Estensioni per phpbb 3.3.X
Chi c’è in linea
Visitano il forum: Nessuno e 14 ospiti