Visualizzazione dei risultati da 1 a 7 su 7

Discussione: countdown lato server

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111

    countdown lato server

    Buon giorno,

    premetto che già ho letto vari post precedenti seza trovare risposta.

    il mio problema è il seguente: ho questo script per il countdown che funzione regolarmente però se cerco di sostituire la data di partenza presa lato client con quella lato server il countdown procede ma visivamente lo scorrimento dei secondi non è più fluido, è necessario ricaricare la pagina per vedere quanto tempo manca.

    La sostituzione della data di riferimento da lato client a lato server si applica in seguente codice php:

    <?php
    $SysTime = time();
    $SysTime=$SysTime*1000;
    ?>

    però se metto la variabile ottenuta all'interno di :

    dateNow = new Date(<?php echo $SysTime; ?>);

    come dicevo il conteggio alla rovescia si interrompe.

    Come devo procedere?

    codice usato:

    <script type="text/javascript">
    //################################################## ####################################
    // Version: v2.0
    // Date: 2011-03-31
    // Description: displays the amount of time until the "dateFuture" entered below.

    // NOTE: the month entered must be one less than current month. ie; 0=January, 11=December
    // NOTE: the hour is in 24 hour format. 0=12am, 15=3pm etc
    // format: dateFuture1 = new Date(year,month-1,day,hour,min,sec)
    // example: dateFuture1 = new Date(2003,03,26,14,15,00) = April 26, 2003 - 2:15:00 pm

    dateFuture1 = new Date(2012,3,23,17,20,43);


    // TESTING: comment out the line below to print out the "dateFuture" for testing purposes
    //document.write(dateFuture +"
    ");
    <?php
    $SysTime = time();
    $SysTime=$SysTime*1000;
    ?>

    //###################################
    //nothing beyond this point
    function GetCount(ddate,iid){

    dateNow = new Date(); //grab current date
    amount = ddate.getTime() - dateNow.getTime(); //calc milliseconds between dates
    delete dateNow;

    // if time is already past
    if(amount < 0){
    document.getElementById(iid).innerHTML="Now!";
    }
    // else date is still good
    else{
    days=0;hours=0;mins=0;secs=0;out="";

    amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs

    days=Math.floor(amount/86400);//days
    amount=amount%86400;

    hours=Math.floor(amount/3600);//hours
    amount=amount%3600;

    mins=Math.floor(amount/60);//minutes
    amount=amount%60;

    secs=Math.floor(amount);//seconds

    if(days != 0){out += days +" "+((days==1)?"g":"g")+" ";}
    if(hours != 0){out += hours +" "+((hours==1)?"h":"h")+" ";}
    out += mins +" "+((mins==1)?"m":"m")+" ";
    out += secs +" "+((secs==1)?"s":"s")+" ";
    out = out.substr(0,out.length-2);
    document.getElementById(iid).innerHTML=out;

    setTimeout(function(){GetCount(ddate,iid)}, 1000);
    }
    }

    window.onload=function(){
    GetCount(dateFuture1, 'countbox1');

    };
    </script>
    <div id="countbox1"></div>

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Come spiegato nelle istruzioni, devi far scrivere al PHP i valori corretti all'interno di questa riga:


    dateFuture1 = new Date(2012,3,23,17,20,43);

    ... ti sposto su PHP
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111
    ti ringrazio per la risposta, ma credo di non essermi spiegato. So come impostare dinamicamente l'ora da sottrarre ma come ho già detto prima se a questa riga in javascript:

    dateNow = new Date();

    a new Date() vado ad inserire la data del server il countdown non procede

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    ... mi pare strano: se la riga viene scritta correttamente dal server non ci sono problemi.

    Ha verificato sul browser cosa ci scrive il PHP ?

    Edit: aspetta... ad ogni richiamo dateNow viene ricalcolato... se lo imposti da server e' ovvio che il conteggio non va avanti... fra qualche minuto ti posto l'alternativa, scusa per aver spostato la discussione senza aver riflettuto abbastanza
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111
    La variabile inserita $SysTime in:

    dateNow = new Date(<?php echo $SysTime; ?>);



    ha il seguente valore:

    1335171477000

    credo sia il tempo espresso in millisecondi

    mettendo alert(dateNow);

    ottengo:

    Mon Apr 23 2012 10:59:20 GMT+0200 (ora legale Europa occidentale)

    il conto alla rovescia come dicevo, a video non prosegue, mentre se ricarico la pagina compare il countdown aggiornato.

    Credo sia qualcosa da modificare a llivello di codice javascript

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Modifiche:
    codice:
    dateFuture1 = new Date(2012,3,23,17,20,43);
    dateNow = new Date(<?php echo $SysTime; ?>);
    
    
    // TESTING: comment out the line below to print out the "dateFuture" for testing purposes
    //document.write(dateFuture +"
    ");
    /*
    <?php 
    $SysTime = time();
    $SysTime=$SysTime*1000;
    ?>
    */
    //###################################
    //nothing beyond this point
    function GetCount(ddate,iid){
    
    dateNow.setSeconds(dateNow.getSeconds()+1);
    amount = ddate.getTime() - dateNow.getTime();	//calc milliseconds between dates
    //delete dateNow;
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111
    Ti ringrazio...

    confermo per chi volesse utilizzare il codice che ora funziona correttamente il countdown con la data di riferimento del server.


    Grazie ancora per il supporto!

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.