

Grazie

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]'; ");
}
?>
O che nessuno sia connesso per poterlo innescare...alex75 ha scritto: Inoltre potrebbe comunque succedere che in quel minuto in 50 inneschino il processo...
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.
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
}
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(); ");
?>
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.
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.
Codice: Seleziona tutto
DATE(FROM_UNIXTIME (user_lastvisit)) == CURDATE()
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(); ");
?>
Visitano il forum: Nessuno e 23 ospiti