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

    Prendere Data e ora corrente del server

    Buongiorno a tutti.
    Ho un countdown che utilizza una data fissa di scadenza(PHP) di un prodotto e la confronta con la data odierna.

    Al momento prendo la data/ora con javascript e il countdown funziona, ma se inserisco la data del server in php, come di seguito, il countdown non funziona.
    codice:
    //se cosi funziona
    <script>
    var countDownDate = new Date("<?php echo $dhms;?>").getTime();
                                        // Update the count down every 1 second
                                        var x = setInterval(function() {
                                        // Get today's date and time
                                        var now = new Date().getTime();
    
    
    //se cosi no
    <?php
    $lt = (new DateTime())->format("Y-m-d H:i:s:000");
    ?>
    <script>
    var countDownDate = new Date("<?php echo $dhms;?>").getTime();
                                        // Update the count down every 1 second
                                        var x = setInterval(function() {
                                        // Get today's date and time
                                        var now = new Date("<?php echo $lt;?>").getTime();
    Dove sbaglio?
    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Premi F12 nel browser e nella scheda Console prendi nota dell'errore JavaScript che ti viene restituito.

    Probabilmente stai producendo una sintassi errata, oppure il valore che produci da PHP non è direttamente convertibile nell'equivalente data/ora di JavaScript, che si aspetta una stringa in un altro formato.

    Io eviterei totalmente questo "mix" di linguaggi che rende il codice illeggibile, non manutenibile ed estremamente suscettibile di errori a ogni piccola modifica.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Neanche a me, va di utilizzare script differenti.
    Ma, come faccio a passare data/ora server a javascript?

    Non ho alcun errore.

    Le conversioni mi sembrano le stesse:
    1734616207086(questa prodotta in javascript)
    var now = new Date().getTime();

    1735043399500(questa php da server) e convertita per javascript
    var countDownDate = new Date("<?php echo $dhms;?>").getTime();

    Questa funziona cosi.
    Ma come detto precedentemente, nella var now faccio cosi:
    var now = new Date("< ?php echo $lt;?>").getTime();

    il countdown non si muove, funziona conteggia bene, ma resta fisso nella pagina HTML, ma se stampo come console.log() effettivamente ogni secondo che passa, stampa di continuo.
    Ultima modifica di ANTAGONIA; 19-12-2024 a 15:56

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    il countdown non si muove, funziona conteggia bene, ma resta fisso nella pagina HTML, ma se stampo come console.log() effettivamente ogni secondo che passa, stampa di continuo.
    Non vedendo il codice integrale non posso né testarlo né verificare nel metodo con un debug.

    Riparti da una versione stabile e funzionante, riscrivi il codice pezzo per pezzo verificando il risultato per ogni step e facendolo eseguire per valori "certi", andando solo dopo a sostituire quelli dinamici e - in caso di malfunzionamento - cercando di capire in che modo l'ultima modifica ha "rotto" la logica funzionante.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Ciao.
    Questo è il codice:
    codice:
    //data del server
    <?php $lt = (new DateTime())->format("Y-m-d H:i:s:000");
    //presa dal campo di una tabella dataora
    $dtScad = "2024-12-23 13:34:00";
    $dhms = str_replace(" 13:30:00"," 13:29:59:500",$dtScad);
    ?>
    
    // Set the date we're counting down to
                                        var countDownDate = new Date("<?php echo $dhms;?>").getTime();
                                        // Update the count down every 1 second
                                        var x = setInterval(function() {
                                        // Get today's date and time
                                        var now = new Date("<?php echo $lt;?>").getTime();
                                        console.log(now +" | "+ countDownDate);
                                        // Find the distance between now and the count down date
                                        var distance = countDownDate - now;
                                        // Time calculations for days, hours, minutes and seconds
                                        var days = Math.floor(distance / (1000 * 60 * 60 * 24));
                                        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                                        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
                                        var seconds = Math.floor((distance % (1000 * 60)) / 1000);
                                        // Output the result in an element with id="demo"
                                        document.getElementById("btnContinue").innerHTML = "Prosegui<br/> g:"+days+" h: "+hours+" m:"+minutes+" s:"+seconds+"<br/> fino alla scadenza";
                                        let btn = document.getElementById("btnContinue");
                                        // If the count down is over, write some text 
                                        if (distance <= 0) {
                                            clearInterval(x); document.getElementById("btnContinue").innerHTML = "Scaduta";
                                            $("#btnContinue").css("background-color","red"); $("input#off").attr("disabled","true");
                                            $("input#off").val("");
                                            
                                            btn.disabled = true;
                                        }
                                      }, 1000);
    IN questo modo il countdown è impostato bene, ma non si muove.
    Grazie.

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.