Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Timer php

  1. #1

    Timer php

    Salve a tutti,
    avrei bisogno che una volta che un utente clicca su un determinato link parta un countdown fino a zero. Durante il countdown l'utente non può eseguire altre azioni oltre a navigare semplicemente nel sito. Mi spiego meglio: si tratta di un gioco e dopo che il player ha avviato la costruzione di un oggetto non può costruirne altri fino a che non ha completato quello, ma può comunque continuare a girare per le schermate di gioco.
    Come posso fare?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Potresti farti una tabella sul db con i seguenti campi (ed altri a seconda delle tue esigenze):

    id_utente | id_costruzione (per sapere cosa sta costruendo) | fine_costruzione (timestamp)

    Quando un utente prova ad avviare una costruzione leggi in questa tabella se ha già una costruzione in corso, se ce l'ha gli dici di attendere o gli disabiliti i pulsanti per avviare le costruzioni, o vedi tu come vuoi impedirgli di costruire altre cose.
    Se non ha niente in costruzione, aggiungi una riga a questa tabella.
    Periodicamente elimini le righe con timestamp scaduti.

  3. #3
    Due cose: l'attributo timestamp nella tabella non fa si che venga stampato l'orario in cui è stato creato il record? Come lo inserisco sennò? Cioè dalla tabella edifici devo ricavare il tempo necessario alla costruzione(in che formato lo salvo?) e lo sommo all'ora attuale (come?).
    Un altra cosa: come faccio a far visualizzare in real time un timer che mostra il tempo rimanente?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Supponiamo che una costruzione richieda 5 minuti, quindi 300 secondi, nella tabella salvi time()+300.

    Per il timer leggi il timestamp nel db e fai fine_costruzione-time(), così sai quanti secondi mancano, passi questo valore ad una funzione Javascript e sarà poi questa a visualizzare il countdown (php non lo può fare)

  5. #5
    Ho scritto così:
    Codice PHP:
    $sq mysql_query("SELECT * FROM edifici WHERE id='".$ed."' ") or die (mysql_error());
        
    $build mysql_fetch_array($sq);
        
    $ownoro $resrow['oro'];
        
    $time $build['time'];
        
    $end time() + $time;
        
    $ver true;
        
    $act mysql_query("SELECT * FROM azioni WHERE utente = '".$id."' ") or die (mysql_error());
        while (
    $action mysql_fetch_array($act)) {
            if (
    $action['fine'] > time()) {
                
    $ver false;
            }    }
        if ((
    $resrow['oro'] >= $build['oro']) && ($ver == true)) {
            
    $ownoro $ownoro $build['oro'];
            
    $Query mysql_query("UPDATE utenti SET oro = '".$ownoro."' WHERE id = '".$id."' ") or die (mysql_error());
            
    $strQuery mysql_query("INSERT INTO costruiti (edificio, utente, liv) values ('".$ed."', '".$id."', '".$liv."')") or die(mysql_error());
            
    $costruzione mysql_query("INSERT INTO azioni (edificio, utente, fine) values ('".$ed."', '".$id."', '".$end."')") or die(mysql_error());
        } 
    Il problema è che però la verifica effettuata dall'if non funzioni, perchè se dopo aver fatto costruire l'edificio immediatamente dopo ne faccio costruire un altro questo non viene bloccato.
    Ultima modifica di masternick; 13-04-2014 a 17:09 Motivo: Formattazione php variata

  6. #6
    Dov'è l'errore?

  7. #7
    Ho controllato che la variabile inserita all'interno di "fine" sia nel formato timestamp ed ho impostato il valore di $time all'interno del db come int. Continua a non funzionare, però; a me sembra sintatticamente a posto, non capisco come mai l'if non verifica... Idee?

  8. #8
    Il fatto è che nella tabella azioni la variabile $end non viene inserita all'interno del campo timestamp "fine". Come mai? Eppure l'inserimento sembra corretto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.