Php Javascript秒表到MySQL数据库

Php Javascript秒表到MySQL数据库,php,javascript,mysql,countdown,stopwatch,Php,Javascript,Mysql,Countdown,Stopwatch,所以我需要做的是在我创建的html页面上有一个开始时间和结束时间。这样,技师可以在开始工作后启动时钟,当他结束当天的工作时,他点击停止按钮,并计算所用的总时间。现在我已经找到了一堆可以实现这一点的代码,但我需要更进一步。我需要获得经过的时间,并通过我的PHP文件将其发布,以便将其保存在MySQL数据库中创建的表中 <script type="text/javascript"> var duration = 0; // Javascript to compute elapsed ti

所以我需要做的是在我创建的html页面上有一个开始时间和结束时间。这样,技师可以在开始工作后启动时钟,当他结束当天的工作时,他点击停止按钮,并计算所用的总时间。现在我已经找到了一堆可以实现这一点的代码,但我需要更进一步。我需要获得经过的时间,并通过我的PHP文件将其发布,以便将其保存在MySQL数据库中创建的表中

<script type="text/javascript">
var duration = 0;

// 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 & 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

//-->

function assignDuration()
{
   document.stopform.duration.value = duration;
}
</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="stopform" action="process-form.php" method="POST">
   <input type="hidden" name="duration" value="0"/>
   <input type="submit" name="dostop" onClick="assignDuration()" value="Stop"/>
</form>

var持续时间=0;
//Javascript计算“开始”和“完成”按钮单击之间的运行时间
函数时间戳\u类(此\u当前\u时间、此\u开始\u时间、此\u结束\u时间、此\u时间\u差){
this.this\u current\u time=此\u current\u time;
this.this_start_time=此_start_time;
this.this_end_time=this_end_time;
this.this\u time\u difference=此时间差;
this.GetCurrentTime=GetCurrentTime;
this.StartTiming=StartTiming;
this.EndTiming=EndTiming;
}
//从日期时间戳获取当前时间
函数GetCurrentTime(){
var my_current_时间戳;
my_current_timestamp=new Date();//标记当前日期和时间
返回我的当前时间戳。getTime();
}
//将当前时间标记为开始时间并重置显示文本框
函数启动(){
this.this_start_time=GetCurrentTime();//标记当前时间
document.TimeDisplayForm.TimeDisplayBox.value=0;//初始化文本框显示为零
}
//将当前时间标记为停止时间,计算经过的时间差并显示在文本框中
函数EndTiming(){
this.this_end_time=GetCurrentTime();//标记当前时间
this.this\u time\u difference=(this.this\u end\u time-this.this\u start\u time)/1000;//计算经过的时间
document.TimeDisplayForm.TimeDisplayBox.value=this.this\u time\u difference;//在显示框中设置经过的时间
}
var time_object=新的timestamp_类(0,0,0,0)//创建新的时间对象并初始化它
//-->
函数赋值持续时间()
{
document.stopform.duration.value=持续时间;
}

提前谢谢

只要您依赖启用的JavaScript,就可以创建一个隐藏的表单元素,并在用户单击“停止”时为其分配计算的持续时间。这本身应该是一个提交按钮

因此,您的Javascript将如下所示:

<script type="text/javascript">
var duration = 0;
...YOUR TIME CALCULATION CODE...

function assignDuration()
{
   document.stopform.duration.value = duration;
}

</script>
上面的代码假设您已经有了识别用户的方法

对于记录,我同意前面关于在服务器上记录开始时间和结束时间,然后计算持续时间的评论。如前所述,在客户端执行此操作的问题在于,用户能够通过操纵JavaScript代码,甚至仅仅通过他们的系统时间和日期来更改数据。此外,如果没有启用JavaScript,则所有计时器功能都将无法工作

如果您确信JavaScript将始终处于启用状态,并且用户不会对其进行操作,那么上述解决方案(或类似的解决方案)应该可以工作


另外,您可能需要仔细检查JavaScript和PHP的语法,因为我只是在头顶上键入,还没有在代码编辑器中看到它。

只要您依赖启用的JavaScript,您就可以创建一个隐藏的表单元素,并在用户单击“停止”时为其分配计算的持续时间。这本身应该是一个提交按钮

因此,您的Javascript将如下所示:

<script type="text/javascript">
var duration = 0;
...YOUR TIME CALCULATION CODE...

function assignDuration()
{
   document.stopform.duration.value = duration;
}

</script>
上面的代码假设您已经有了识别用户的方法

对于记录,我同意前面关于在服务器上记录开始时间和结束时间,然后计算持续时间的评论。如前所述,在客户端执行此操作的问题在于,用户能够通过操纵JavaScript代码,甚至仅仅通过他们的系统时间和日期来更改数据。此外,如果没有启用JavaScript,则所有计时器功能都将无法工作

如果您确信JavaScript将始终处于启用状态,并且用户不会对其进行操作,那么上述解决方案(或类似的解决方案)应该可以工作


另外,您可能需要仔细检查JavaScript和PHP的语法,因为我只是在头顶上键入,还没有在代码编辑器中看到它。

为什么不单独存储开始和停止时间?然后,您可以稍后计算经过的时间,而不允许客户端处理事情。您不希望以这种方式测量持续时间。setTimeout不应该是100%准确的,这取决于系统负载+浏览器的情况,它可能会在应该的位置降低几%,如果您整天都在运行它,这可能会非常重要。通过存储开始和停止时间并获得差异来计算持续时间。为什么不单独存储开始和停止时间呢?然后,您可以稍后计算经过的时间,而不允许客户端处理事情。您不希望以这种方式测量持续时间。setTimeout不应该是100%准确的,这取决于系统负载+浏览器的情况,它可能会在应该的位置降低几%,如果您整天都在运行它,这可能会非常重要。通过存储开始和停止时间并获得差异来计算持续时间。技术人员一旦开始对汽车进行操作,就会使用此页面,因此我不担心客户会弄乱事情。因此,我知道javascript也将始终处于启用状态。谢谢你迄今为止的帮助!我更改了计时器代码,还包括了您推荐的@kaykayman,但我仍然无法将其添加到我们的数据库中。我给出的php代码假设您已经连接到mysql数据库。您需要使用mysql_connect函数以及数据库的用户名/密码等,以便与数据库进行交互。如果你有
$duration = $_POST['duration'];
mysql_query('INSERT INTO MyTable (duration, technician) VALUES ('.$duration.', '.$technicianId.')');