2012-12-07 36 views
6

मेरे पास $dbSessionDuration वैरिएबल है जहां mysqli का उपयोग करके, यह क्वेरी से डेटा के परिणाम को इस चर में बांधने में सक्षम है। $dbSessionDuration चर समय रखती है तो चर के रूप में नीचे एक समय प्रारूप है:टाइमर बनाने के लिए कैसे करें

01:30:10

अब इसका मतलब है कि 1 घंटे 30 मिनट और 10 सेकंड। मैं जो करना चाहता हूं वह एक टाइमर में $dbSessionDuration मान प्रदर्शित करता है ताकि ऊपर के उदाहरण में यह 01:30:10 से नीचे टिकना शुरू कर दे और 0 बंद होने पर सभी तरह से 0 पर जाएं। मेरा सवाल यह है कि आप टाइमर बनाते हैं और 00:00:00 तक गिनने के लिए टाइमर में $dbSessionDuration मान जो भी मान रखते हैं?

+0

समय $time_on से शुरू क्या आप 'var_dump मिल ($ पुनः प्राप्त करने के लिए है कोर्सिड) 'सम्मिलित करने से पहले – GBD

+0

क्या आपने कोई आइटम ड्रॉपडाउन में चुना है और फिर php पर सबमिट किया है? – GBD

+0

क्या आप अपना एचटीएमएल फॉर्म पेस्ट कर सकते हैं? – GBD

उत्तर

12

सबसे पहले, आपको सेकंड में अपना समय बदलना होगा।

<?php 

list($hour,$min,$sec) = explode(':', $dbSessionDuration); 
$dbSessionDurationTime = mktime(0,0,0,$hour,$min,$sec); 

?> 

उलटी गिनती बनाने के लिए, आपको जावास्क्रिप्ट का उपयोग करना होगा।

<script type="text/javascript"> 
    var millis = <?php echo $dbSessionDurationTime; ?> 

    function displaytimer(){ 
     var hours = Math.floor(millis/36e5), 
      mins = Math.floor((millis % 36e5)/6e4), 
      secs = Math.floor((millis % 6e4)/1000); 
      //Here, the DOM that the timer will appear using jQuery 
      $('.count').html(hours+':'+mins+':'+secs); 
    } 

    setInterval(function(){ 
     millis -= 1000; 
     displaytimer(); 
    }, 1000); 

</script> 

मैंने परीक्षण नहीं किया, लेकिन यह काम करना चाहिए!

+0

अरे आदमी मैं आपके बारे में नहीं भूल गया, मैं इस अनुभाग में आने से पहले कुछ PHP स्क्रिप्ट्स पर काम कर रहा हूं। मैं इसका परीक्षण करूंगा और आपको परिणाम बता दूंगा। उत्तर के लिए धन्यवाद – user1881090

3

कोड: http://jsfiddle.net/g3rRJ/

मैं घंटे, मिनट और सेकंड में समय अलग हो गए। और हर दूसरे ने घड़ी में कमी की। आल्गो बहुत सीधी आगे है मेरा मानना ​​है कि:

var timer = setInterval(function(){ 
     seconds--; 
     if(seconds == -1) { 
      seconds = 59; 
      minutes--; 

      if(minutes == -1) { 
       minutes = 59; 
       hours--; 

       if(hours==-1) { 
        alert("timer finished"); 
        clearInterval(timer); 
        return; 
       } 
      } 
     } 
     span.text(correctNum(hours) + ":" + correctNum(minutes) + ":" + correctNum(seconds)); 
    }, 1000); 
3

jQuery का उपयोग करें क्योंकि आप इसका स्वामी हैं।

यहाँ एक अच्छा प्लगइन https://github.com/jylauril/jquery-runner

है और यह उसका एक उदाहरण है:

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script> 
     <script src="https://raw.github.com/jylauril/jquery-runner/master/build/jquery.runner-min.js"></script>  
    </head> 
    <body> 
     <span id="runner"></span> 

     <script type="text/javascript"> 
      $(document).ready(function(){ 
       $('#runner').runner({ 
        autostart: true, 
        countdown: true, 
        stopAt: 0, 
        startAt: 30000 // alternatively you could just write: 30*1000 
       }); 
      }); 
     </script> 
    </body> 
</html> 
3

यदि आप एक टाइमर की जरूरत है तो आप इस plugin in Jquery यह बहुत अच्छा काम करता है का उपयोग कर सकते हैं। आप इसे पढ़ने के बाद HTML के एक छिपे हुए तत्व में समय या $ dbSessionDuration डाल देंगे और इसे jquery काउंटर प्लगइन में डाल देंगे। अगर विचार दिलचस्प लगता है तो मुझे बताएं और मैं एक उदाहरण छोड़ देता हूं।

4

आपको पहले पता होना चाहिए कि कोई भी आपके द्वारा बनाए गए जावास्क्रिप्ट टाइमर गलत होगा। यह here बहुत अच्छी तरह से संक्षेप में कारणों के असंख्य कारणों से है।

अब सौंदर्य है, आप प्रत्येक स्क्रिप्ट पर उपयोगकर्ता के सिस्टम समय की एक सरल जांच द्वारा अपनी स्क्रिप्ट की गलतता को सीमित कर सकते हैं। हां उपयोगकर्ता का सिस्टम समय

आपकी स्थिति में यह कोई समस्या नहीं है, क्योंकि आप समय बीतने में रुचि रखते हैं (01:30:10), लेकिन यदि आप समय में एक विशिष्ट पल की प्रतीक्षा कर रहे थे, तो आपको समय क्षेत्र अंतर को संभालना होगा या उपयोगकर्ता के कंप्यूटर पर बस एक बुरी तरह से सेट घड़ी।

आपको क्या समझना है, यह है कि यदि यह सुरक्षा की समस्या है, तो आप अपनी स्क्रिप्ट को लोड करने के बाद सिस्टम घड़ी में बदलावों के लिए खाते में सक्षम नहीं होंगे।

उदाहरण: कुछ साइटों एक विशिष्ट कार्रवाई करने से पहले प्रतीक्षा करने के लिए आप के लिए मजबूर। लेकिन आगे अपनी घड़ी बदलना, ज्यादातर मामलों में आपको खराब सुरक्षा को बाईपास करने में मदद मिलेगी। ज्यादातर मामलों में, ऐसा नहीं होगा क्योंकि द्वितीयक जांच सर्वर की तरफ की जाती है।मैं क्या कहने की कोशिश कर रहा हूं, उन सर्वर पक्षों को बनाता है।

$time = explode(':',$dbSessionDuration);# get hour, minutes, seconds to be elapsed 
$time = $time[2] + $time[1] * 60 + $time[0] * 3600;# get elapse time in seconds 

अपने जावास्क्रिप्ट में दायर आप कुछ इस तरह कर सकता है::

(function(endTime){ 
    endTime*=1000; // javascript works with milliseconds 
    endTime+=new Date().getTime();// add the current system time into the equation 
    // your timeSync function 
    (function timerSync() { 
     var diff = new Date(endTime - new Date().getTime()); 
     var timer=document.getElementById('timer'); 
     if(diff<=0)return timerEnd(timer); 
     timer.innerHTML = 
      doubleDigits(diff.getUTCHours()) 
      + ':' + 
      doubleDigits(diff.getUTCMinutes()) 
      + ':' + 
      doubleDigits(diff.getUTCSeconds()) 
     ; 
     setTimeout(timerSync,1000); 
    })();// also call it to start the timer 
    // your timer end function 
    function timerEnd(timer) { 
     timer.innerHTML='Timer has stopped now'; 
    } 
    // double digit formatting 
    function doubleDigits(number) { 
     return number<10 
      ? '0'+number 
      : number 
     ; 
    } 
})(
    <?php echo $time;?> 
);// time to elapse 1:30:10 


आपके प्रश्न का उत्तर करने के लिए, मैं व्यक्तिगत रूप से है कि पारित करने के लिए आवश्यक हैं सेकंड की संख्या की गणना होगी

यहां एक काम कर रहे fiddle है, लेकिन याद रखें। यह आपके विशिष्ट मामले के लिए अनुकूलित नहीं है। यदि आप पृष्ठ पर दो टाइमर रखते हैं, तो आप इसे किसी ऑब्जेक्ट में अभी भी लपेट सकते हैं, उन कार्यों के साथ क्लोजर मेमोरी को दोहराएं जो बिल्कुल वही कार्य करते हैं।

यदि आपके कोई प्रश्न हैं, तो एक टिप्पणी में पूछें और मैं सहायता करने की कोशिश करूंगा।

0

आप यह और आसान तरीका कर सकते हैं। सबसे पहले आप जो सेकंड

<?php 

    require_once 'db_connect.php'; 
    $sql = "SELECT * FROM ac_one_config"; 
    $result = $con->query($sql); 

    if($result->num_rows > 0){ 
     while($row=mysqli_fetch_assoc($result)) { 
      $time_on = $row['ac_on_time']; 
     } 
    } 
    header("refresh:$time_on; url=https://localhost/your_project/file.php"); 

में पहले से ही है डेटाबेस से समय जावास्क्रिप्ट में उलटी गिनती शुरू करने और उलटी गिनती जब तक 0:00:00

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Massive Electronics</title> 
    <style type="text/css"> 
     .myClass { 
      font-family: verdana; 
      font-size: 16px; 
      font-weight: normal; 
      color: black; 
      line-height: 30px; 
     } 
    </style> 
</head> 
<body> 
    <script type="text/javascript"> 

     (function() { 
      var timeLeft = <?php echo $time_on; ?>, 
      cinterval; 

      var timeDec = function(){ 
       timeLeft--; 
       document.getElementById('countdown').innerHTML = timeLeft; 
       if(timeLeft === 0){ 
        clearInterval(cinterval); 
       } 
      }; 

      cinterval = setInterval(timeDec, 1000); 
     })(); 

     </script> 
     Redirecting in <span id="countdown"><?php echo floor($time_on); ?></span> seconds.<br><br> 
     <span class="myClass">Ac ON Page</span> 
    </body> 
</html> 
संबंधित मुद्दे