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:
incrementare automaticamente una tabella
Salve ragazzi, Vi spiego cosa vorrei fare.
Ho una tabella chiamata "punti" già funzionante e che incremento tramite alcune query in base a diverse situazioni.
Vorrei aggiungere un incremento giornaliero automatizzato di 100 punti, così da assegnare all'utente questi 100 punti come se fossero dei punti fedeltà per intenderci.
Avete dei suggerimenti oltre all'uso dei cronjob?
Ho una tabella chiamata "punti" già funzionante e che incremento tramite alcune query in base a diverse situazioni.
Vorrei aggiungere un incremento giornaliero automatizzato di 100 punti, così da assegnare all'utente questi 100 punti come se fossero dei punti fedeltà per intenderci.
Avete dei suggerimenti oltre all'uso dei cronjob?
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
- Barrnet
- Leader Moderatori
- Messaggi: 3124
- Iscritto il: 04/07/2010, 23:31
- Sesso: Maschio
- Versione: 3.0.10
- Server: UNIX/Linux
- PHP: 5.3.10
- Database: MySQL 5.1.61-community-log
- Contatta:
Re: incrementare automaticamente una tabella
La soluzione più ovvia è utilizzare dei cronjob. Oppure metti lo script a fondo pagina ma salvi l'ultima interazione da qualche parte (che so, una tabella con user_id e timestamp dell'ultima interazione) e metti un controllo a monte per vedere se eseguire o meno la porzione di codice.
Prima di installare una mod pensa...
Regolamento ~ Guida al ripristino integrale FTP ~ Guida al backup
Videogame Zone! ~ Phpbb-Store
Regolamento ~ Guida al ripristino integrale FTP ~ Guida al backup
Videogame Zone! ~ Phpbb-Store
- 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
Ho avuto un'idea...
Trattandosi di punti fedeltà (l'utente che si logga al sito/forum ogni giorno) potrei inserire un semplicissimo pulsante che tramite variabile $_GET lasci libero arbitrio all'utente di assegnarsi i 100 punti giornalieri.
Restano però 2 problemi:
1) Il bottone una volta cliccato deve sparire fino al giorno successivo (idee ? )
2) L'utente non deve vedere/conoscere l'indirizzo del file php cliccato, altrimenti si divertirebbe ad aprirlo diverse volte. Ma questo credo che si possa ovviare usando $_post invece di $_get... ma anche in questo caso non ci vuole molto a reperire il codice sorgente della pagina ( idee? )
Trattandosi di punti fedeltà (l'utente che si logga al sito/forum ogni giorno) potrei inserire un semplicissimo pulsante che tramite variabile $_GET lasci libero arbitrio all'utente di assegnarsi i 100 punti giornalieri.
Restano però 2 problemi:
1) Il bottone una volta cliccato deve sparire fino al giorno successivo (idee ? )
2) L'utente non deve vedere/conoscere l'indirizzo del file php cliccato, altrimenti si divertirebbe ad aprirlo diverse volte. Ma questo credo che si possa ovviare usando $_post invece di $_get... ma anche in questo caso non ci vuole molto a reperire il codice sorgente della pagina ( idee? )
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
Secondo me con il pulsante non hai dati certi, l'utente potrebbe dimenticarsi di cliccare, potrebbe non essere interessato e quindi non avresti una corretta situazione.
Meglio un contatore automatico con la condizione che siano passate almeno 24 ore dall'ultimo accesso. Per farlo ci vuole una tabella che memorizzi user_id, punteggio assegnato e data sotto forma di timestamp.
Se l'intervento dell'utente è di 24 ore successivo al precedente intervento avviene l'aggiornamento della tabella.
Devi solo decidere se aggiornare il record dell'utente o creare un nuovo record.
Con la prima soluzione hai un totale di punteggio ma non sai quando l'utente si è collegato (hai solo l'ultimo collegamento), con record separati hai una visione più completa delle connessioni e il totale dei punti è facilmente recuperabile.
Meglio un contatore automatico con la condizione che siano passate almeno 24 ore dall'ultimo accesso. Per farlo ci vuole una tabella che memorizzi user_id, punteggio assegnato e data sotto forma di timestamp.
Se l'intervento dell'utente è di 24 ore successivo al precedente intervento avviene l'aggiornamento della tabella.
Devi solo decidere se aggiornare il record dell'utente o creare un nuovo record.
Con la prima soluzione hai un totale di punteggio ma non sai quando l'utente si è collegato (hai solo l'ultimo collegamento), con record separati hai una visione più completa delle connessioni e il totale dei punti è facilmente recuperabile.
- 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
Non mi interessa molto di avere ulteriori conferme su chi e quando abbia ricevuto i punti, perché alla base c'è un forum phpbb, quindi ho già diversi riscontri.
Riguardo al timestamp dovrebbe essere di tipo @daily e non orario altrimenti se l'utente si collegasse di sera, il giorno successivo dovrebbe attendere lo stesso orario, per ricevere i punti.
La tabella degli utenti collegati nella giornata di oggi l'ho già. Comprende l'user_id, il nickname ed il timestamp dell'ultimo collegamento. La tabella si svuota ogni giorno a mezzanotte. Mi resta il mistero di come si legga il timestamp (che per me sono dei numeri senza senso) e come impostare la clausola where per assegnare i punti una sola volta al giorno.
Riguardo al timestamp dovrebbe essere di tipo @daily e non orario altrimenti se l'utente si collegasse di sera, il giorno successivo dovrebbe attendere lo stesso orario, per ricevere i punti.
La tabella degli utenti collegati nella giornata di oggi l'ho già. Comprende l'user_id, il nickname ed il timestamp dell'ultimo collegamento. La tabella si svuota ogni giorno a mezzanotte. Mi resta il mistero di come si legga il timestamp (che per me sono dei numeri senza senso) e come impostare la clausola where per assegnare i punti una sola volta al giorno.
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
Tempo fa avevo messo nel Wiki alcuni esempi su come utilizzare timestamp, vedi http://wiki.phpbbitalia.net/Timestamp
- 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
Ottimo grazie me lo studio e vediamo cosa viene fuori...
Già questo mi ha reso più comprensibili quei numeri
In pratica il "timestamp" rappresenta il numero di secondi trascorsi dalle ore 00:00 del
Già questo mi ha reso più comprensibili quei numeri
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
Se capisci il meccanismo diventa tutto molto semplice.
Ad esempio questo codice ti da il timestamp del momento corrente:
Se vuoi trovare il timestamp alle ore 00 del giorno corrente fai così:
A questo punto hai il timestamp alle ore 00 e quindi puoi controllare se l'intervento dell'utente è precedente o successivo a questo valore.
Ad esempio questo codice ti da il timestamp del momento corrente:
Codice: Seleziona tutto
$timestamp_cor = time();
Codice: Seleziona tutto
// recuperiamo i valori di anno, mese, giorno della data odierna
$aa = date(Y);
$mm = date(m);
$dd = date(d);
$data_start = mktime(0, 0, 0, $mm, $dd, $aa); // timestamp alle ore 00:00 del giorno corrente
- 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
Grazie! La tua spiegazione sul wiki è davvero semplice ed intuitiva.
Ho fatto anche qualche test con esito positivo; ma a questo punto la sfrutterò allo step successivo.
sto sfruttando l'estensione "chi è stato qui" che mi crea già una tabella degli utenti connessi oggi dalle 00:00 alle 24:00, questo mi evita tante rogne di cui tener conto, come ad esempio fusorari e/o ora legale etc. oltre che ho notato che la tabella user_lastvisit non è molto reattiva (non si aggiorna facilmente se non fai determinate azioni).
Quindi userò il timestamp solo successivamente per decidere quando far partire la query.
Adesso sono fermo ad un altro stupido problema. Ho scritto un file php che mi estrae gli id degli utenti nella tabella wwh (estensione chi è stato qui) e sul template ottengo la lista completa e corretta degli user id connessi oggi; mentre sul php ne ricevo soltanto 1 come mai? ho avuto conferma di questo perchè il contatore aggiornato è sempre e soltanto 1 (l'ultimo della lista) ed anche con echo ricevo un solo user_id.
questo è il codice:
Ho fatto anche qualche test con esito positivo; ma a questo punto la sfrutterò allo step successivo.
sto sfruttando l'estensione "chi è stato qui" che mi crea già una tabella degli utenti connessi oggi dalle 00:00 alle 24:00, questo mi evita tante rogne di cui tener conto, come ad esempio fusorari e/o ora legale etc. oltre che ho notato che la tabella user_lastvisit non è molto reattiva (non si aggiorna facilmente se non fai determinate azioni).
Quindi userò il timestamp solo successivamente per decidere quando far partire la query.
Adesso sono fermo ad un altro stupido problema. Ho scritto un file php che mi estrae gli id degli utenti nella tabella wwh (estensione chi è stato qui) e sul template ottengo la lista completa e corretta degli user id connessi oggi; mentre sul php ne ricevo soltanto 1 come mai? ho avuto conferma di questo perchè il contatore aggiornato è sempre e soltanto 1 (l'ultimo della lista) ed anche con echo ricevo un solo user_id.
questo è il codice:
Codice: Seleziona tutto
<?php
// Mi connetto al database mysql
$dbi = mysqli_connect("localhost", 'root', '', 'sbg');
$sql = "SELECT ut.user_id, wt.user_id
FROM " . USERS_TABLE . " ut, " . WWH_TABLE . " wt
WHERE ut.user_id = wt.user_id ";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('lista_connessi',array(
'USER_CONN' => $row['user_id'],
$idconn = $row['user_id'],
));
}
// Aggiungo 100 punti al contatore degli utenti collegati oggi
$req = mysqli_query($dbi, "UPDATE `phpbb_users` SET cont_punti = cont_punti + 100 WHERE user_id = '$idconn'; ");
echo $idconn;
?>
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
Per avere la lista completa prova così:
In questo modo hai un array $idconn[] che puoi estarrre con un ciclo for o foreach.
Codice: Seleziona tutto
<?php
// Mi connetto al database mysql
$dbi = mysqli_connect("localhost", 'root', '', 'sbg');
$sql = "SELECT ut.user_id, wt.user_id
FROM " . USERS_TABLE . " ut, " . WWH_TABLE . " wt
WHERE ut.user_id = wt.user_id ";
$result = $db->sql_query($sql);
$i = 0;
while ($row = $db->sql_fetchrow($result))
{
$idconn[$i] = $row['user_id'];
// echo $idconn[$i] . "<br />"; //se vuoi visualizzare il risultato
$template->assign_block_vars('lista_connessi',array(
'USER_CONN' => $idconn[$i],
));
$i = ++$i ;
}
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite