如何用php解决mysql数据库中的数据重复
我还有一个问题,那就是使用php对mysql数据库进行正确的迭代会让我头疼。这是测试数据:如何用php解决mysql数据库中的数据重复,php,mysql,Php,Mysql,我还有一个问题,那就是使用php对mysql数据库进行正确的迭代会让我头疼。这是测试数据: 0007 2015-1-15 17:17 0007 2015-1-19 07:45 0007 2015-1-19 17:58 0007 2015-1-20 08:08 0007 2015-1-20 17:18 0007 2015-1-21 07:42 0007 2015-1-21 17:17 0007 2015-1-22 07:45 下面是我的代码,用于按ID和日期提取和计算时间: $cxn=mysql
0007 2015-1-15 17:17
0007 2015-1-19 07:45
0007 2015-1-19 17:58
0007 2015-1-20 08:08
0007 2015-1-20 17:18
0007 2015-1-21 07:42
0007 2015-1-21 17:17
0007 2015-1-22 07:45
下面是我的代码,用于按ID和日期提取和计算时间:
$cxn=mysqli_connect($host,$user,$pass,$dbname) or die("Couldn't connect to
server");
$qry="select ID, ValidDate,ValidTime,Hours from temprec group by
ID,ValidDate";
$result=mysqli_query($cxn,$qry) or die("Couldn't execute query");
while($row=mysqli_fetch_assoc($result)){
extract($row);
$Time=date("H:i",strtotime($ValidTime));
$Day=date("D",strtotime($ValidDate));
if($Time >= $consTimeOut){
$TimeOut=$Time;
}
elseif($Time > $consLunchOut AND $Time<=$consLunchIn){
$LunchIn=$Time;
}
elseif($Time >= $consLunchOut AND $Time<$consLunchIn){
$LunchOut=$Time;
}
elseif($Time>=$consTimeIn AND $Time <$consLunchOut){
$TimeIn=$Time;
}
}
当我回显数据库的内容时,它没有重复项,但当我输入计算时,数据变得冗余,并不断重复,主要从17:17开始。希望你能帮助我
数据库结构
ID ValidDate ValidTime小时数
至于整个php脚本,其他代码仅用于表结构
这是我在编写上述代码之前编写的伪代码:
While date= newdate
If time!= nexttime then
vtime=time
if vtime>=6:00 AM AND vtime < 11:00 then
timein=vtime
elseif vtime>=11:00 AND vtime <13:00 then
lunchout=vtime
elseif vtime>= 13:00 AND vtime < 17:00 then
lunchin=vtime
else
timeout=vtime
完整代码
如果我没有弄错的话,在循环中为变量设置值之前,每次都需要清除变量$TimeOut、$午餐in、$午餐out、$TimeIn 你从哪里得到$ValidTime?我在你的代码里没看到 更新
while ($row = mysqli_fetch_array($result))
{
extract($row);
$valTime = strtotime($ValidTime);
$valDate = strtotime($ValidDate);
$TimeIn = "";
$TimeOut = "";
$LunchOut = "";
$LunchIn= "";
$Day = date("D", strtotime($ValidDate));
if ($valTime) >= $consTimeIn && $valTime < $consLunchOut)
{
$TimeIn = $valTime;
}
elseif ($valTime >= $consLunchOut && $valTime < $consLunchIn)
{
$LunchOut = $valTime;
}
elseif ($valTime <= $consLunchIn && $valTime > $consLunchOut)
{
$LunchIn = $valTime;
}
else
{
$TimeOut = "";
$TimeOut = $valTime;
}
if (empty($TimeIn))
{
$TimeIn = "NULL";
$OTMsg = "You're missing some time";
}
elseif(empty($LunchOut))
{
$LunchOut="NULL";
$OTMsg="You're missing some time";
}
elseif(empty($LunchIn))
{
$LunchIn="NULL";
$OTMsg="You're missing some time";
}
else
{
/*$validHours = $TimeOut - $TimeIn;
switch($validHours)
{
case 8:
$OTMsg = "Completed the 8 hours standard time";
$validOT = "None";
break;
case ($validHours < 8):
$OTMsg = "You are considered undertime";
$validOT = "None";
break;
case ($validHours > 8):
$validHours -= 1;
$validOT = $validHours - 8;
$OTMsg = "Completed the 8 hours standard time and gained {$validOT} Hours";
break;
}*/
}
$newTimeout = date("g:i", strtotime($TimeOut));
echo "<tr><td>$ID</td>\n
<td>$Day</td>\n
<td>$ValidDate</td>\n
<td>$TimeIn</td>\n
<td>$LunchOut</td>\n
<td>$LunchIn</td>\n
<td>$newtimeout PM</td>\n
<td>$OTMsg</td>\n";
}
评论不用于扩展讨论;这段对话已经结束。
while ($row = mysqli_fetch_array($result))
{
extract($row);
$valTime = strtotime($ValidTime);
$valDate = strtotime($ValidDate);
$TimeIn = "";
$TimeOut = "";
$LunchOut = "";
$LunchIn= "";
$Day = date("D", strtotime($ValidDate));
if ($valTime) >= $consTimeIn && $valTime < $consLunchOut)
{
$TimeIn = $valTime;
}
elseif ($valTime >= $consLunchOut && $valTime < $consLunchIn)
{
$LunchOut = $valTime;
}
elseif ($valTime <= $consLunchIn && $valTime > $consLunchOut)
{
$LunchIn = $valTime;
}
else
{
$TimeOut = "";
$TimeOut = $valTime;
}
if (empty($TimeIn))
{
$TimeIn = "NULL";
$OTMsg = "You're missing some time";
}
elseif(empty($LunchOut))
{
$LunchOut="NULL";
$OTMsg="You're missing some time";
}
elseif(empty($LunchIn))
{
$LunchIn="NULL";
$OTMsg="You're missing some time";
}
else
{
/*$validHours = $TimeOut - $TimeIn;
switch($validHours)
{
case 8:
$OTMsg = "Completed the 8 hours standard time";
$validOT = "None";
break;
case ($validHours < 8):
$OTMsg = "You are considered undertime";
$validOT = "None";
break;
case ($validHours > 8):
$validHours -= 1;
$validOT = $validHours - 8;
$OTMsg = "Completed the 8 hours standard time and gained {$validOT} Hours";
break;
}*/
}
$newTimeout = date("g:i", strtotime($TimeOut));
echo "<tr><td>$ID</td>\n
<td>$Day</td>\n
<td>$ValidDate</td>\n
<td>$TimeIn</td>\n
<td>$LunchOut</td>\n
<td>$LunchIn</td>\n
<td>$newtimeout PM</td>\n
<td>$OTMsg</td>\n";
}