求一个算法

一生小白 2017-09-05 12:01:32


<?php
require_once ('../core/fun.class.php');
$fun=new fun();
$users=$fun->SelectAdmin();
$userkq=$fun->SelectUserkq();

foreach ($users as $item) {
$item['kqh'] = $fun->query('select * from userkq where agonghao=?', [$item['gonghao']]);
$newUsers[] = $item;
}
$ausers=$newUsers;

$ret=$fun->query('select * from userkq ',[]);
$arr=[];
foreach ($ret as $k=>$v){
$arr[$v['agonghao']][]=$v['kqday'];
}


?>
<!DOCTYPE HTML>
<html>
<head>

<title>用户信息</title>
<?php include ('inde.php');?>
</head>
<body>
<div class="table">
<div class="m-right">
<div class="xqbottom" >
</div>

<div class="userkqchuang">

</div>

<h3>开发科(<?php echo date("Y-m");?>)</h3><h4><?php $days = date("t"); ?></h4>
<table class="user_table" id="userkq_user" style="margin-bottom: 10px;" onmouseover="cells_color()" onmouseout="cells_color()">
<tr>
<th style="width: 30px;">ID</th>
<th class="userkq_bt">选择</th>
<th class="userkq_bt">姓名</th>
<th class="userkq_bt">工码</th>
<th class="userkq_bt">出勤</th>
<th class="userkq_bt">调休</th>
<th class="userkq_bt">加班</th>
<th class="userkq_bt">旷工</th>
<th class="userkq_bt">夜班</th>
<th class="userkq_bt">病假</th>
<th class="userkq_bt">事假</th>
<th class="userkq_bt">婚假</th>
<th class="userkq_bt">产假</th>
<th class="userkq_bt">丧假</th>
<th class="userkq_bt">工伤</th>
<th class="userkq_bt">探亲</th>
<th class="userkq_bt">可用调休</th>
<?php for($i=1;$i<=$days;$i++){
if($i==1){echo "<th class=\"userkq_bt\">姓名</th>";}
if($i==10){echo "<th class=\"userkq_bt\">姓名</th>";}
if($i==20){echo "<th class=\"userkq_bt\">姓名</th>";}
echo "<th class=\"userkq_btt\">".$i."</th>";
}?>

</tr>
<tr >
<?php foreach ($ausers as $key=>$item){ ?>

<td><?php echo $item['id'] ;?></td>
<td ><input type="checkbox" name="rem" value="<?php echo $item['id'];?>"></td>
<td><?php echo $item['username'];?></td>
<td><?php echo $item['gonghao'];?></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>

<?php for($i=1;$i<=($days);$i++){
if($i==1){echo "<td class=\"userkq_bt\">".$item['username']."</td>";}
if($i==10){echo "<td class=\"userkq_bt\">".$item['username']."</td>";}
if($i==20){echo "<td class=\"userkq_bt\">".$item['username']."</td>";}

$tt = $fun->query('select * from userkq where agonghao=?', [$item['gonghao']]);

if($tt){
foreach ($item['kqh'] as $k=>$v){
if($v['kqday']==$i){
echo "<td ondblclick=\"openXiangqingkq($i,$key)\">".$v['userkqh'].mb_substr($v['userkqfujia'],0,1).$v['userkqfujiah']."</td>";
//错误的算法 $array[]=$v['userkqh'];
// 在上面echo $sum $sum=array_sum($array);
}
}
//
if(!in_array($i,$arr[$item['gonghao']])){
echo "<td ondblclick=\"openXiangqingkq($i,$key)\"></td>";
}

}else{
echo "<td ondblclick=\"openXiangqingkq($i,$key)\"></td>";
}
}

}?>


</tr>
<?php }?>
</table>

<div class="userkq_button">
<input type="button" id="userkqbutton" onclick="saveUserkqup()" value="提交"><input type="checkbox" value="">全选
</div>
</div>
</div>

</body>
</html>
...全文
196 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
一生小白 2017-09-06
  • 打赏
  • 举报
回复
引用 11 楼 xuzuning 的回复:
你没说在 worker表中哪些是 正常考勤字段的数字

@xuzuning
xuzuning 2017-09-06
  • 打赏
  • 举报
回复
你没说在 worker表中哪些是 正常考勤字段的数字
一生小白 2017-09-06
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
你没说 时间 是怎么表示的
@xuzuning 正常考勤里面存着数据(数字),查询sql,某人某天的正常考勤字段的数字,在td标签里面echo出这个查询出来的数字。统计也是,查询出这个人正常字段的所有值求和,然后在td标签里面echo
xuzuning 2017-09-06
  • 打赏
  • 举报
回复
你没说 时间 是怎么表示的
一生小白 2017-09-06
  • 打赏
  • 举报
回复
@xuzuning
一生小白 2017-09-06
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
至少你要告诉我数据是如何保存的

worker表

我想在上面统计出某人正常考勤的时间总和也就是需要一个SQL语句查询某人的正常字段然后统计。
特殊情况字段,就需要查询某人特殊情况的时间,然后求和。
特别是特殊情况,我需还要写十个sql这个是不是就有点过了。应该有其他很好解决的办法把
不好意思,有点小白,给你添麻烦了
一生小白 2017-09-05
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
至少你要告诉我数据是如何保存的

                     <?php for($i=1;$i<=($days);$i++){
                        if($i==1){echo "<td class=\"userkq_bt\">".$item['username']."</td>";}
                        if($i==10){echo "<td class=\"userkq_bt\">".$item['username']."</td>";}
                        if($i==20){echo "<td class=\"userkq_bt\">".$item['username']."</td>";}

                        $tt = $fun->query('select * from userkq where agonghao=?', [$item['gonghao']]);
                        //按照工号查询表
                        if($tt){
                            foreach ($item['kqh'] as $k=>$v){
                                if($v['kqday']==$i){
                                    //$i与$key是横坐标,纵坐标,双击触发事件,可以输入考勤时间,是否加班,加班多久。IF是判断字段天数与横坐标是否相同,相同输出,考勤时间。
                                    echo "<td ondblclick=\"openXiangqingkq($i,$key)\">".$v['userkqh'].mb_substr($v['userkqfujia'],0,1).$v['userkqfujiah']."</td>";
                                //之前我在这里用了一个$sum+=$v['userkqh'];然后在上面出勤<td>中打印$sum.结果是累加的。48,96,1XX,1XX遍历打印出来。
                                }
                            }
                            //
                            if(!in_array($i,$arr[$item['gonghao']])){
                                echo "<td ondblclick=\"openXiangqingkq($i,$key)\"></td>";
                            }

                        }else{
                            echo "<td ondblclick=\"openXiangqingkq($i,$key)\"></td>";
                        }


                    }?>
xuzuning 2017-09-05
  • 打赏
  • 举报
回复
至少你要告诉我数据是如何保存的
一生小白 2017-09-05
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
分组查询就是了
没法用一个算法,把张三 后面的数字加起来统计出来吗
xuzuning 2017-09-05
  • 打赏
  • 举报
回复
分组查询就是了
一生小白 2017-09-05
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
不知道你在说什么
表里的 ID,姓名,工号,都是我从数据库提取出来的。后面的考勤时间也是每天的考勤时间。比如张三的考勤时间,张三,日期一号上班8(小时),2号。。。。.整个月 张三 总工作时长的总和,需要一个算法,我第一个想到的就是累加,但是累加把全部的累加出来了。所以是错误的
xuzuning 2017-09-05
  • 打赏
  • 举报
回复
不知道你在说什么

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧