Visualizzazione risultati 1 fino 8 di 8

Discussione: Countdown con dati forniti da php

  1. #1
    Guest

    Predefinito Countdown con dati forniti da php

    Salve, questo è il mio primo messaggio. Premetto che ho cercato quello che volevo, ma invano. Ho creato una funzione php che ricevuto un determinato time sottrae il time attuale e mostra il tempo che manca. Il problema come è facile intuire è che stampa il tempo che manca una volta e questo non si aggiorna di secondo in secondo. Sapete aiutarmi a fare una cosa del genere con js? Grazie.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

  3. #3
    Guest

    Predefinito

    Eh, il problema è che ci devo stampare anche minuti, secondi, ore, giorni ecc.. Non deve essere un semplice countdown disecondi.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

    Predefinito

    Allora leggi qui.

    Ovviamente: invece di passare come timestamp attuale con:

    Codice PHP:
    <?= time()*1000; ?>
    gli passi i secondi che deve contare.

    Poi, ovviamente, invece di incrementare il tempo, nel tuo caso lo devi togliere ^^

    Ovvero
    Codice HTML:
    data.setTime(data.getTime()-1000);
    Ciao!

  5. #5
    Guest

    Predefinito

    Ho abbozzato questo script sulla base di quello che ho trovato, ma non stampa nulla..

    <script>
    var seconds = <?=1395780920-time();?>;
    function countDown()
    {
    var day = 0; if(seconds>=86400){
    day = floor(seconds/86400);
    seconds -= day*86400;
    }
    var hours = 0; if(seconds>=3600){
    hours = floor(seconds/3600);
    seconds -= hours*3600;
    }
    var minutes = 0; if(seconds>=60){
    minutes = floor(seconds/60);
    seconds -= minutes*60;
    }

    var string = '';
    if(day>0){
    if(day==1) string .= '1 giorno';
    else string .= day.' giorni';
    }
    if(hours>0){
    if(!empty(string)) string .= ', ';
    if(hours==1) string .= '1 ora';
    else string .= hours.' ore';
    }
    if(mimutes>0){
    if(!empty(string)) string .= ', ';
    if(minutes==1) string .= '1 minuto';
    else string .= minutes.' minuti';
    }
    if(seconds>0){
    if(!empty(string)) string .= ', ';
    if(seconds==1) string .= '1 secondo';
    else string .= seconds.' secondi';
    }

    document.getElementById('countDown').innerHTML = string;
    seconds -= 1;
    setTimeout("countDown();",1000);
    }
    </script>
    Ultima modifica di tenam : 29-01-2011 alle ore 17.51.04

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

    Predefinito

    Stai confondendo la concatenazione tra PHP e js delle stringhe.

    in php si usa il ".", in js si usa il "+":

    Codice:
    $stringa = '';
    $stringa .= 'aaa'; //Concatenazione in PHP
    $stringa += 'aaa'; //Concatenazione in JS
    ..Comunque non funziona... Ma perchè non usi la classe Date() di JS? È molto più semplice

    Ciao!
    Ultima modifica di alemoppo : 29-01-2011 alle ore 18.11.09

  7. #7
    Guest

    Predefinito

    Non uso date perchè non mi visualizzerebbe i giorni giusti se sono più di 30, ma segnerebbe a mesi e così via.

    <script>
    var date = <? echo $time - time(); ?>;
    function orologio()
    {
    var giorno = 0; if(date>=86400){
    giorno = Math.floor(date/86400);
    date -= giorno*86400;
    }
    var ora = 0; if(date>=3600){
    ora = Math.floor(date/3600);
    date -= ora*3600;
    }
    var min = 0; if(min>=60){
    min = Math.floor(min/60);
    date -= min*60;
    }
    var sec = date;

    var string = '';
    if(giorno>0){
    if(d>1) string += giorno+' giorni';
    else string += '1 giorno';
    }
    if(ora>0){
    if(string!='') string += ', ';
    if(ora>1) string += ora+' ore';
    else string += '1 ora';
    }
    if(min>0){
    if(string!='') string += ', ';
    if(m>1) string += min+' minuti';
    else string += '1 minuto';
    }
    if(sec>0){
    if(string!='') string += ', ';
    if(sec>1) string += sec+' secondi';
    else string += '1 secondo';
    }

    document.getElementById('orologio').innerHTML = string;
    date.setTime(date.getTime()-1000)
    setTimeout("orologio();",1000);
    }

    </script>
    <div id="orologio"></div>
    Cos'ha questo codice che non va?

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

    Predefinito

    Citazione Originalmente inviato da tenam Visualizza messaggio
    Non uso date perchè non mi visualizzerebbe i giorni giusti se sono più di 30, ma segnerebbe a mesi e così via.
    capito...

    Citazione Originalmente inviato da tenam Visualizza messaggio
    Cos'ha questo codice che non va?
    Sinceramente io non ho ne tempo ne voglia per guardare perchè non va ... anche perché i sorgenti degli altri non li capisco bene (capisco solo i miei ).

    Se vuoi vedere cosa non va, dovresti debuggarlo (ad esempio, puoi usare firebug); oppure in modo rudimentale con degli alert() per vedere i vari valori delle variabili e/o vedere se entra in certi comandi...


    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •