Время, затраченное на доступ к базе данных из таймера Javascript

#php #javascript #mysql #timer

#php #javascript #mysql #таймер

Вопрос:

У меня есть следующий код, который будет подсчитывать затраченное время и выводить значение в секундах после того, как пользователь нажмет кнопку остановки. Наша первая проблема заключается в том, что мы пытаемся заставить его отображать прошедшее время в часах. Итак, допустим, что затраченное время составляет 20 минут, результат будет равен .3 часам.

Во-вторых, мы пытаемся поместить это значение в таблицу внутри нашей созданной базы данных MySQL. Это значение int в нашей таблице, просто не знаю, как его туда разместить. Любая помощь приветствуется!

 <script type="text/javascript">

// Javascript to compute elapsed time between "Start" and "Finish" button clicks
function timestamp_class(this_current_time, this_start_time, this_end_time, this_time_difference) { 
        this.this_current_time = this_current_time;
        this.this_start_time = this_start_time;
        this.this_end_time = this_end_time;
        this.this_time_difference = this_time_difference;
        this.GetCurrentTime = GetCurrentTime;
        this.StartTiming = StartTiming;
        this.EndTiming = EndTiming;
    }

    //Get current time from date timestamp
    function GetCurrentTime() {
    var my_current_timestamp;
        my_current_timestamp = new Date();              //stamp current date amp; time
        return my_current_timestamp.getTime();
        }

    //Stamp current time as start time and reset display textbox
    function StartTiming() {
        this.this_start_time = GetCurrentTime();        //stamp current time
        document.TimeDisplayForm.TimeDisplayBox.value = 0;      //init textbox display to zero
        }

    //Stamp current time as stop time, compute elapsed time difference and display in textbox
    function EndTiming() {
        this.this_end_time = GetCurrentTime();          //stamp current time
        this.this_time_difference = (this.this_end_time - this.this_start_time) / 1000; //compute elapsed time
        document.TimeDisplayForm.TimeDisplayBox.value = this.this_time_difference;      //set elapsed time in display box
        }

var time_object = new timestamp_class(0, 0, 0, 0);  //create new time object and initialize it

//-->
</script>

    <form>
        <input type="button" value="Start" onClick="time_object.StartTiming()"; name="StartButton">
    </form>
    <form>
        <input type="button" value="Finish" onClick="time_object.EndTiming()"; name="EndButton">
    </form>
    <form name="TimeDisplayForm">
    Elapsed time:
      <input type="text" name="TimeDisplayBox" size="6">
    seconds
    </form>
  

Ответ №1:

  1. Date.getTime() возвращает время в миллисекундах, поэтому this_time_difference разница во времени будет выражена в миллисекундах. Все, что вам нужно сделать, это разделить на 36,00,000 (1 час = 60 минут * 60 секунд * 1000 миллисекунд), чтобы получить значение в часах.

     var timeInHours = this_time_difference/3600000;
      
  2. Я не уверен, с какой проблемой вы столкнулись, просто отправляя эти данные (используя Ajax или обычную старую форму отправки) в PHP-скрипт, который вставляет значение в вашу базу данных — дополнительная информация о том, где вы застряли, поможет вам получить более конкретные ответы.