Php 如果受foreach()数据变量的制约,如何回显foreach()数据变量?
我有一个表tbl_tmpdtr和tbl_employee,并使用此查询获取所需数据:Php 如果受foreach()数据变量的制约,如何回显foreach()数据变量?,php,Php,我有一个表tbl_tmpdtr和tbl_employee,并使用此查询获取所需数据: SELECT tbl_tmpdtr.id, tbl_tmpdtr.userid, date(tbl_tmpdtr.in_out) as in_out, time(tbl_tmpdtr.in_out) as dtr_time, tbl_tmpdtr.status, tbl_employee.emp_id, tbl_employee.emp_fname
SELECT
tbl_tmpdtr.id,
tbl_tmpdtr.userid,
date(tbl_tmpdtr.in_out) as in_out,
time(tbl_tmpdtr.in_out) as dtr_time,
tbl_tmpdtr.status,
tbl_employee.emp_id,
tbl_employee.emp_fname,
tbl_employee.emp_mname,
tbl_employee.emp_lname
FROM
tbl_tmpdtr
INNER JOIN
tbl_employee
ON
tbl_tmpdtr.userid = tbl_employee.emp_id
WHERE
tbl_tmpdtr.userid='(some id)'
GROUP BY
tbl_tmpdtr.userid
sample output query:
id | userid | inp_out | dtr_time | status
1 | 1002 | 2015-05-01 | 09:00:00 | In
2 | 1002 | 2015-05-01 | 18:30:00 | Out
我在我的视图中预先获取了这些数据,其中有两个单独的输入
标记为“In”和“Out”的类型,我的问题是如何放置dtr_时间
09:00:00在标记为“in”的输入类型中,如果状态为“in”,则为“on”
另一方面,输入类型中的下一个dtr_时间为18:30:00
如果状态为“OUT”,则为“OUT”
我尝试过,但即使在dtr_时间,状态为OUT的输入类型标记为In
这是我试过的
<?php if(!empty($dtr)){foreach ($dtr as $dtrs): ?>
<h4>
<label for="exampleInputEmail1"> Full name: </label>
<?php echo ucfirst($dtrs->emp_lname).", ".ucfirst($dtrs->emp_fname).", ".ucfirst($dtrs->emp_mname)."."; echo "</br>";?>
<label for="exampleInputEmail1"> EMP_ID: </label>
<?php echo $dtrs->emp_id;?></br></br>
</h4>
<div>
<table class="display table table-bordered table-striped">
<thead>
<tr>
<th bgcolor="2ECC71"><center><font color="white">Date(s)</font></center></th>
<th bgcolor="2ECC71"><center><font color="white">In</font></center></th>
<th bgcolor="2ECC71"><center><font color="white">Out</font></center></th>
</tr>
</thead>
<tr>
<center>
<td align="center"><input type="date" value="<?php echo $dtrs->in_out;?>"></td>
<?php if($dtrs->status == 'In'){?>
<td align="center"><input type="text" value="<?php echo $dtrs->dtr_time;} else if($dtrs->status == 'Out'){?>"></td>
<td align="center"><input type="text" value="<?php echo $dtrs->dtr_time; } else { echo "do nothing";}?>"></td>
</tr>
</center>
</table>
</div>
<?php endforeach; }?>
全名:
环境管理计划编号:
日期
在里面
出来
如果您按userid排序,tbl_tmpdtr.in_out您可以在数组中迭代,并对照下一个索引的userid进行检查
<?php
$count = count($result);
for($i=0;$i<$count;$i++){
if (($i+1) >= $count) {
echo "User: " + $result[$i]["userid"];
echo "Status:" +$result[$i]["status"];
echo "Date: " + $result[$i]["inp_out"] + " - " + $result[$i]["dtr_time"];
}
if (
$result[$i]["userid"] == $result[($i+1)]["userid"] &&
$result[$i]["status"] == "In" && $result[($i+1)]["status"] == "Out" ) {
echo "User: " + $result[$i]["userid"];
echo "In: " + $result[$i]["inp_out"] + " - " + $result[$i]["dtr_time"];
echo "Out: " + $result[$i+1]["inp_out"] + " - " + $result[$i+1]["dtr_time"];
i++;
}
else {
echo "User: " + $result[$i]["userid"];
echo $result[$i]["status"]": " + $result[$i+1]["inp_out"] + " - " + $result[$i+1]["dtr_time"];
}
}
你可以用这种方法来做,它会按你的意愿工作
<tr>
<td align="center"><input type="date" value="<?php echo $dtrs['inp_out']; ?>"></td>
<td align="center"><input type="text" value="<?php echo (isset($dtrs['status']) && $dtrs['status'] === 'In') ? $dtrs['dtr_time'] : '----' ?>"></td>
<td align="center"><input type="text" value="<?php echo (isset($dtrs['status']) && $dtrs['status'] === 'Out') ? $dtrs['dtr_time'] : '----' ?>"></td>
</tr>
请添加php代码。以及您尝试过的内容。展示你的efforts@Uchiha,已完成更新我的问题,提前感谢各位的想法。无法在阵列中完成,我正在使用codeigniter。所以我对它做了如下修改:对不起,我没有理解你,但是你可以访问CI中的变量,正如我所展示的,它对mewait@uchiha有效,为什么在输入类型OUT中,你给出的是一个值“----”,而不是id为2”的dtr_时间?我在这里做的是用状态检查值,如果status==in
,那么它将把值放在in
的
中,反之亦然,你面临的问题是什么?你的预期输出是什么只需使用预期输出更新您的问题