Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472

    problema con cronometro [interazione con php] [variabili globali ?]

    Riporto a grandi linee lo script che prevede:
    - inizialmente (con pass non inserito) un form dove viene chiesto il livello
    - con pass=1, se azione=0 vengono fatte tutta una serie di inizializzazioni e l'utente compie una scelta (con diversi radio)
    - con pass=1 e azione=1 vengono fatte alcune operazioni
    - in qualsiasi momento l'utente può agire sul form con pass=2 per dare la soluzione.

    codice:
    <html><head><title>x</title>
    </head>
    <script language="javascript">
    function mytime()
    {
      x=new Date();
      adesso=x.getTime();
      m=parseInt((adesso-start)/60000);
      s=parseInt((adesso-start)/1000);
      d=(adesso-start)-1000*s;
      s=s-m*60;
      if(s<=9) s="0"+s;
      if(m<=9) m="0"+m;
      if(d<=9) d="00"+d;
      if((d>9) && (d<=99)) d="0"+d;
      time=m+":"+s+":"+d;
      document.frmmn.rtime.value=time;
      setTimeout("mytime()",1); 
    }
    </script>
    </head>
    <body onload="mytime()">
    <?php
    if (!isset($_POST['pass']) || $_POST['pass'] == "")
    { 
      ?><form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="frm">
        Livello <input type="text" value="" name="livello">
    
    
        <input type="submit" value="conferma">
        <input type="hidden" name="pass" value="1">
        <input type="hidden" name="inizia" value="0">
        </form> 
       <?php                       
    }
    elseif ($_POST['pass'] == 1)
    {   
      if ($_POST['inizia']==0)
      {
        //operazioni da svolgere tipo inizializzazioni di variabili ecc....
        ?>
        <script language="JavaScript">
        x=new Date();
        start=x.getTime();
        </script>
        <?php
      }
      elseif ($_POST['inizia']==1)
      {
      //operazioni
      }
      ?><form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="frmmn"> 
        <input type="text" name="rtime" size="8">
        <input type="text" name="soluzione">
    
        </form>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="form_principale"> 
        <input type="hidden" name="pass" value="1">
        <input type="hidden" name="inizia" value="1">
        <input type="submit" value="conferma">
         
        </form>
        <?php
       }
    elseif ($_POST['pass'] == 2)
    { 
       // altre operazioni per la validazione della soluzione, qua ormai il cronometro è fermo.
    }
    
    ?>
    </body>
    </html>
    Per comodità credo che sia preferibile avere il cronometro in javascript (minuti, secondi e millesimi).
    Il cronometro parte dopo che l'utente ha scelto il livello e infatti lì ho messo la variabile "start" cioè il tempo di partenza.
    Ogni millesimo di secondo viene eseguita la funzione mytime() e fin qui tutto ok.
    Cioè tutto ok finché non viene ricaricata la pagina agendo sul form_principale: infatti dopo questa operazione non va più.
    Sembra che la variabile "start" non sia più riconosciuta...
    Ho letto che in javascript le variabili definite fuori dalle funzioni vengono considerate variabili globali...ma allora perché "start" non viene definita globale?
    Come risolvere il problema?
    Grazie.

  2. #2

    Re: problema con cronometro [interazione con php] [variabili globali ?]

    Originariamente inviato da mld
    Cioè tutto ok finché non viene ricaricata la pagina agendo sul form_principale: infatti dopo questa operazione non va più.
    /stSembra che la variabile "start" non sia più riconosciuta...
    Come risolvere il problema?
    Grazie.
    Beh, quando viene ricaricata la pagina, dal punto di vista del browser essa &egrave; una pagina nuova, tanto &egrave; vero che il php non genera il codice javascript che contiene l'inizializzazione della variabile start!
    (prova a guardare il sorgente della pagina quando la hai caricata!)
    Una soluzione potrebbe essere quella di passare come campo hidden (valorizzato nell'onsubmit della form) il valore della variabile start e far generare a php il codice javascript che la inizializza a questo valore.

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Far passare in hidden la variabile "start" va bene....ma se la variabile è in javascript come faccio a farla passare?

    Non sono molto pratico di php ma di js ancora meno

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Dopo qualche mese ho ripreso in mano 'sto discorso...

    Rileggevo quello che mi suggeriva Zappa, ma praticamente come faccio a far rigenerare il codice js a php?

    Potete aiutarmi (Zappa o chi per lui)?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.