Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Differenza tra date e successivo countdown

    Salve, sono sempre io :P

    Non riesco bene a capire come sviluppare uno script, e dato che ho visto che in questo forum siete molto disponibili e preparati, spero non vi infastidirete se propongo un'altra domanda a distanza ti poco tempo.

    ---------------------------

    Nel database ho memorizzato due date, una di inizio ed una di fine nel seguente modo:


    Codice PHP:
    $sql "INSERT INTO missioni(id_giocatore, inizio, fine) 
    VALUES (
    $id_giocatore, NOW(), DATE_ADD(NOW(), INTERVAL $min_missione MINUTE))"
    Questo fa si che nel DB nella tabella missioni venga memorizzato l'id del giocatore che compie la missione, l'inizio cioè quando inizia la missione e la fine, cioè quanto finirà la missione in base hai minuti che ha scelto che sono contenuti in $min_missione. Ora vorrei fare in modo che una volta che i dati vengono inseriti nel database si calcoli la differenza tra Fine ed Inizio ad esempio con TIMEDIFF di sql, in modo da calcolare il tempo rimanente, che scalerà come un countdown fino ad arrivare a 0 quanto il tempo corrente sarà uguale al tempo di Fine, quando arriverà a 0 apparirà un messaggio con scritto: hai finito la missione, guarda il risultato. In questo modo poi si potrà vedere il risultato della missione che elaborerò in seguito, un ultima cosa, una volta che il countdown è arrivato a 0 ed è possibile visualizzare il risultato bisognerebbe fare in modo di cancellare dalla tabella missioni quella determinata missione con id_giocatore, inizio e fine, se no andando avanti nel tempo più i giocatori faranno missioni più il database csi riempirà, fino a collassare...

    Qualcuno sa come fare ?

    P:S.:

    Se un giocatore è già in missione bisogna anche controllare che non ne esegua un'altra finche non ha finito quella corrente.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    io non ho ben capito QUANDO deve avvenire il calcolo... inoltre parli di un "countdown" come se fosse in "tempo reale"... non ho ben capito la dinamica di interazione: l'utente si collega ad un interfaccia web normale (un sito)? In questo caso il tempo deve scorrere o no? ...

  3. #3
    Sì, il tempo è reale, praticamente quando l'utente compie una missione e sceglio 10 minuti di missione ad esempio, nel database viene memorizzando il tempo di inizio now(), ed il tempo di fine cioè now() + minuti di missione scelti.

    Una volta che l'utente ha scelto questi minuti reali di missine, dovrà attandere che essi finiscano per visualizzare il risultato della missione.

    In pratica faccio un piccolo esempio:

    Sono le 16:00 ed io inizio una missione di 10 minuti, nel database viene memorizzato come inizio le 16:00 e come fine 16:10:00 (16:00 + 10 minuti).

    Appena ho iniziato la missione mi parte un count down che stampa a schermo i minuti rimanenti ad arirvare al campo fine.

    Cioè ad esempio se sono le 16:03:00 mi stamperà 00:07:00 minuti al termine, e si aggiornerà di secondo in secondo:

    se sono le 16:03:50 visualizzerà 00:06:10
    se sono le 16:03:51 visualizzerà 00:06:09
    se sono le 16:03:52 visualizzerà 00:06:08

    e così via...

    Mi sono spiegato abbastanza bene ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    forse è come pensavo... ma in queto caso il problema non è php+mysql, direi, ma piuttosto ajax (o quale altra interfaccia usi per la gestione in "tempo reale"): sul DB non credo tu debba salvare gli aggiornamenti del tempo... resterà sempre lo stesso record, suppongo.

    In pratica:
    - inserisci il recordo con ORA ATTUALE + ORA FINALE
    - parte lo script LOCALE per gestire il tempo (p.es. AJAX)
    - quando il tempo è scaduto fai quello che devi

    ...l'unico "problema" potrebbe essere un eventuale volontà di sincronizzazione esatta con il server... ma se questo è il caso si può valutare una soluzione specifica (magari AJAX), ma non credo sia necessaria

  5. #5
    Il problema è che io non so come fare, ho quei dati memorizzati nel database, che bastano, nel DB non devo più memorizzare nulla, ma ora non so come trarre la differenza ed aggiornalra ogni secondo con ajax (non lo conosco molto bene) riesci (tu o qualcun altro) a postare un esempio di script di come devo fare ?

    Grazie in anticipo,

    marf

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    è un problema JAVASCRIPT: puoi postare la richiesta nel forum apposito linkando anche questo topic... indicativamente direi che probabilmente hai uno script tipo "update.php" che viene richiamato in un dato momento ed eseguire la query di inserimento che dicevi... la stessa pagina (quella HTML generata successivamente, intendo) conterrà il timer che partirà dal numero di minuti definito per andare fino a zero.

  7. #7
    Ok, grazie mille, ora provo a postare il problema anche nella sezione js a vedere se qualcuno riesce ad aiutarmi con qualche script di esempio, perchè non so proprio come orientarmi con ajax e js.

    Ciao,

    marf

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.