试图整理我对如何将多个耗时的条目保存到数据库的想法。
因此,我对如何处理这一问题的想法如下:
创建2个表单字段,
<select value="<?php echo $beg_time; ?>" name="beginningtime" id="beginningtime">
<option value = "8">8am</option>
<option value = "etcetc">etcetc</option>
<option value = "6">6pm</option>
</select>
<select value="<?php echo $end_time; ?>" name="endtime" id="endtime">
<option value = "8">8am</option>
<option value = "etcetc">etcetc</option>
<option value = "6">6pm</option>
</select>
// Third input to have time worked that I want to save
<?php $end_time - $start_time = $hours_worked;?>// replace with jquery to update on client side
<input type="hidden" value="jQueryhours_worked">
//Server Code :
//somehow concatenate $hours_worked, so that saved value may look like this :
//2,3,5,1
有没有更简单的方法可以做到这一点,我是不是在重新发明轮子?
您可能希望使用24小时基数作为一个值。这是因为8-8 = 0
,但20-8 = 12
。(20:00是晚上8点),这意味着他们已经工作了12个小时。
此外,您应该确保没有使用任何双id
属性。
您的$hours_worked
隐藏字段不起作用,因为php不起作用。
你需要单独存储每天的工作时间。
从我的角度来看,您的代码无论如何都无法工作。我可以向你指出一些小的解决方案,但那样你就会遇到下一个问题。我觉得你应该从研究如何保存这个函数的结果开始。您可能还想使用javascript来使生活更轻松。
一旦你完成了这项工作,请在评论中告诉我,我会用实际的修复程序更新我的答案(如果到那时实际的修复是可能的)
看看这个问题,了解如何创建实际存储多个表单条目的能力:将表单数据存储为会话变量
一旦完成,我假设您将使用$_SESSION
来存储每天的这些小时数。
这时你可以这样说:
//Checks if the $_SESSION["workedhours"] already has anything stored
//If not, no , beforehand.
if(!isset($_SESSION["workedhours"]){
//this creates the initial session.
$_SESSION["workedhours"] = $hours_worked; }
}
else{
//This adds to it
$_SESSION["workedhours"] .= ",$hours_worked";
}
在这种情况下,您还需要运行start_session()
。这发生在文件的第一行(在<?php
标签之间,
<?php
//Checks if a session already exists, if not, start one
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
?>
我还建议你阅读这篇文章,因为知道如何从你的表单中获得插入的数据很重要:
http://www.w3schools.com/php/php_forms.asp
编辑说明:$_SESSION
是一个临时的东西。它只在浏览器打开时保存数据。如果你想永久存储这些数据,你必须使用数据库。如果你使用数据库,我的答案的一切都会改变,但你现在似乎没有使用数据库。
为什么不把每个动作的开始时间和结束时间都保存到db中呢?您可以直接在SQL层上进行各种计算操作,并且手头总是有谨慎的时间值,以便进行进一步的操作