Php 在laravel中创建出席人数
嗯。。我已经为销售人员创建了一个考勤系统,我的数据库结构是Php 在laravel中创建出席人数,php,mysql,laravel,Php,Mysql,Laravel,嗯。。我已经为销售人员创建了一个考勤系统,我的数据库结构是 用户(id、名称) 出席人数(收件人id、用户id、创建时间) 这是我在创建考勤时使用的数据 $final = array:2 [▼ 0 => array:3 [▼ "id" => 6 "name" => "Talha Munshi" "attendance" => array:4 [▼ 0 => array:3 [▼ "attendance" => "P" "advance" =
$final = array:2 [▼
0 => array:3 [▼
"id" => 6
"name" => "Talha Munshi"
"attendance" => array:4 [▼
0 => array:3 [▼
"attendance" => "P"
"advance" => "0"
"date" => Carbon {#250 ▼
+"date": "2017-07-16 08:07:00.000000"
+"timezone_type": 3
+"timezone": "Asia/Karachi"
}
]
1 => array:3 [▼
"attendance" => "P"
"advance" => "0"
"date" => Carbon {#249 ▼
+"date": "2017-07-17 08:07:00.000000"
+"timezone_type": 3
+"timezone": "Asia/Karachi"
}
]
2 => array:3 [▼
"attendance" => "A"
"advance" => "0"
"date" => Carbon {#248 ▼
+"date": "2017-07-18 08:07:00.000000"
+"timezone_type": 3
+"timezone": "Asia/Karachi"
}
]
3 => array:3 [▼
"attendance" => "L"
"advance" => "0"
"date" => Carbon {#241 ▼
+"date": "2017-07-19 08:07:00.000000"
+"timezone_type": 3
+"timezone": "Asia/Karachi"
}
]
]
]
1 => array:3 [▶]
]
$days_count = 20; //From first till today (20th)
现在,我尝试了一些编码,以垂直格式填充每天的出席人数,视图中编写的代码如下:
<table class="table-responsive table-condensed table-striped table-hover table-bordered">
<thead>
<tr>
<td>Salesman</td>
<?php for($i = 1; $i <= $days_count; $i++){ ?>
<td><?php echo $i; ?></td>
<?php }?>
</tr>
</thead>
<tbody>
@forelse($final as $attend)
<tr>
<td>{{ $attend['name'] }}</td>
<?php for($i = 1; $i < $days_count; $i++){
$make_date = date("Y-m")."-".$i;
?>
<?php foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
?>
<td><?php echo $att['attendance']; ?></td>
<?php } else{?> <td>-</td> <?php } }?>
<?php }?>
</tr>
@empty
<tr><td>No Salesman</td></tr>
@endforelse
</tbody>
</table>
所需输出:应该是什么
第一个问题是这个块
<?php foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
?>
<td><?php echo $att['attendance']; ?></td>
<?php } else{?> <td>-</td> <?php } }?>
<?php }?>
第一个问题是这个街区
<?php foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
?>
<td><?php echo $att['attendance']; ?></td>
<?php } else{?> <td>-</td> <?php } }?>
<?php }?>
我想你对下一行的日期比较有问题
if($att['date'] == $make_date){
}
在这里,$make_date
将为您提供类似于2017-07-20
的日期,您试图与碳DateTime
进行比较,如2017-07-20 04:55:09
这永远不会相等
因此,您必须使用碳元素格式化$att['date']
像这样:
if($att['date']->format('Y-m-d') == $make_date){
}
我想你对下一行的日期比较有问题
if($att['date'] == $make_date){
}
在这里,$make_date
将为您提供类似于2017-07-20
的日期,您试图与碳DateTime
进行比较,如2017-07-20 04:55:09
这永远不会相等
因此,您必须使用碳元素格式化$att['date']
像这样:
if($att['date']->format('Y-m-d') == $make_date){
}
您可以将视图更改为以下内容
<table class="table-responsive table-condensed table-striped table-hover table-bordered">
<thead>
<tr>
<td>Salesman</td>
<?php for($i = 1; $i <= $days_count; $i++){ ?>
<td>
<?php echo $i; ?>
</td>
<?php }?>
</tr>
</thead>
<tbody>
@forelse($final as $attend)
<tr>
<td>{{ $attend['name'] }}</td>
<?php
for($i = 1; $i < $days_count; $i++){
$make_date = date("Y-m")."-".$i;
$set_attendance_for_day=false;
$attendance_for_day ="-";
foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
$attendance_for_day = "P";
}
}
?>
<td>
<?php echo $attendance_for_day; ?>
</td>
<?php }?>
</tr>
@empty
<tr>
<td>No Salesman</td>
</tr>
@endforelse
</tbody>
</table>
推销员
@forelse($final as$Atteent)
{{$attent['name']}
@空的
没有推销员
@endforelse
**根据评论更新
<table class="table-responsive table-condensed table-striped table-hover table-bordered">
<thead>
<tr>
<td>Salesman</td>
<?php for($i = 1; $i <= $days_count; $i++){ ?>
<td>
<?php echo $i; ?>
</td>
<?php }?>
</tr>
</thead>
<tbody>
@forelse($final as $attend)
<tr>
<td>{{ $attend['name'] }}</td>
<?php
for($i = 1; $i < $days_count; $i++){
$make_date = date("Y-m")."-".$i;
$set_attendance_for_day=false;
$attendance_for_day ="-";
foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
$attendance_for_day = "P";
}
}
?>
<td>
<?php echo $attendance_for_day; ?>
<?php if($i==20){ ?>
---------------------------------------------------
<PLACE YOUR FORM HERE>
---------------------------------------------------
<?php } ?>
</td>
<?php }?>
</tr>
@empty
<tr>
<td>No Salesman</td>
</tr>
@endforelse
</tbody>
</table>
推销员
@forelse($final as$Atteent)
{{$attent['name']}
---------------------------------------------------
---------------------------------------------------
@空的
没有推销员
@endforelse
您可以将视图更改为以下内容
<table class="table-responsive table-condensed table-striped table-hover table-bordered">
<thead>
<tr>
<td>Salesman</td>
<?php for($i = 1; $i <= $days_count; $i++){ ?>
<td>
<?php echo $i; ?>
</td>
<?php }?>
</tr>
</thead>
<tbody>
@forelse($final as $attend)
<tr>
<td>{{ $attend['name'] }}</td>
<?php
for($i = 1; $i < $days_count; $i++){
$make_date = date("Y-m")."-".$i;
$set_attendance_for_day=false;
$attendance_for_day ="-";
foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
$attendance_for_day = "P";
}
}
?>
<td>
<?php echo $attendance_for_day; ?>
</td>
<?php }?>
</tr>
@empty
<tr>
<td>No Salesman</td>
</tr>
@endforelse
</tbody>
</table>
推销员
@forelse($final as$Atteent)
{{$attent['name']}
@空的
没有推销员
@endforelse
**根据评论更新
<table class="table-responsive table-condensed table-striped table-hover table-bordered">
<thead>
<tr>
<td>Salesman</td>
<?php for($i = 1; $i <= $days_count; $i++){ ?>
<td>
<?php echo $i; ?>
</td>
<?php }?>
</tr>
</thead>
<tbody>
@forelse($final as $attend)
<tr>
<td>{{ $attend['name'] }}</td>
<?php
for($i = 1; $i < $days_count; $i++){
$make_date = date("Y-m")."-".$i;
$set_attendance_for_day=false;
$attendance_for_day ="-";
foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
$attendance_for_day = "P";
}
}
?>
<td>
<?php echo $attendance_for_day; ?>
<?php if($i==20){ ?>
---------------------------------------------------
<PLACE YOUR FORM HERE>
---------------------------------------------------
<?php } ?>
</td>
<?php }?>
</tr>
@empty
<tr>
<td>No Salesman</td>
</tr>
@endforelse
</tbody>
</table>
推销员
@forelse($final as$Atteent)
{{$attent['name']}
---------------------------------------------------
---------------------------------------------------
@空的
没有推销员
@endforelse
这将搜索考勤中是否存在日期并相应打印
@forelse($final as $attend)
<tr>
<td>{{ $attend['name'] }}</td>
@for ($i = 1; $i < $days_count; $i++)
{{--*/ $make_date = Carbon\Carbon::create(date("Y-m")."-".$i); /*--}}
{{--*/ $key = array_search($make_date, array_column($attend['attendance'], 'date')); /*--}}
@if ($key !== FALSE)
<td>{{ $att['attendance'][$key]['attendance'] }}</td>
@else
<td>-</td>
@endif
@endfor
</tr>
@empty
<tr><td>No Salesman</td></tr>
@endforelse
@forelse($final as$attent)
{{$attent['name']}
@对于($i=1;$i<$days\u count;$i++)
{{--*/$make_date=Carbon\Carbon::create(日期(“Y-m”)。“-”$i);/*--}
{--*/$key=array\u search($make\u date,array\u column($attent['attention'],'date'));/*-}
@如果($key!==FALSE)
{{$att['Attention'][$key]['Attention']}
@否则
-
@恩迪夫
@结束
@空的
没有推销员
@endforelse
这将搜索考勤中是否存在日期并相应打印
@forelse($final as $attend)
<tr>
<td>{{ $attend['name'] }}</td>
@for ($i = 1; $i < $days_count; $i++)
{{--*/ $make_date = Carbon\Carbon::create(date("Y-m")."-".$i); /*--}}
{{--*/ $key = array_search($make_date, array_column($attend['attendance'], 'date')); /*--}}
@if ($key !== FALSE)
<td>{{ $att['attendance'][$key]['attendance'] }}</td>
@else
<td>-</td>
@endif
@endfor
</tr>
@empty
<tr><td>No Salesman</td></tr>
@endforelse
@forelse($final as$attent)
{{$attent['name']}
@对于($i=1;$i<$days\u count;$i++)
{{--*/$make_date=Carbon\Carbon::create(日期(“Y-m”)。“-”$i);/*--}
{--*/$key=array\u search($make\u date,array\u column($attent['attention'],'date'));/*-}
@如果($key!==FALSE)
{{$att['Attention'][$key]['Attention']}
@否则
-
@恩迪夫
@结束
@空的
没有推销员
@endforelse
试试这个。删除额外的循环。创建标志变量并检查它
<?php for($i = 1; $i < $days_count; $i++){
$make_date = date("Y-m")."-".$i;
$set_attendance_for_day=false;
foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
$set_attendance_for_day=true;
?>
<td><?php echo $att['attendance']; ?></td>
<?php } ?>
<?php } ?>
<?php if (!$set_attendance_for_day) { ?>
<td>-</td>
<?php }
else{ ?>
<td>P</td>
<?php }
?>
<?php }?>
-
P
试试这个。删除额外的循环。创建标志变量并检查它
<?php for($i = 1; $i < $days_count; $i++){
$make_date = date("Y-m")."-".$i;
$set_attendance_for_day=false;
foreach($attend['attendance'] as $att){
if($att['date'] == $make_date){
$set_attendance_for_day=true;
?>
<td><?php echo $att['attendance']; ?></td>
<?php } ?>
<?php } ?>
<?php if (!$set_attendance_for_day) { ?>
<td>-</td>
<?php }
else{ ?>
<td>P</td>
<?php }
?>
<?php }?>
-
P
那么有什么问题?为什么要使用@forelse
?它应该是@foreach
?看看当前输出!所有破折号!它应该在匹配的日期中写上“P”或“A”或“L”。它应该在16、17、18和19日添加出席人数。添加输出样本o有什么问题?为什么使用@forelse
?它应该是@foreach
?看看当前输出!所有破折号!它应该在匹配的日期中写上“P”或“A”或“L”。它应该在16、17、18和19添加出席人数并添加一个输出样本井。。它显示了正确的块数,但仍然不会在右侧的spotsWell上回显P A或L。。它显示了正确的块数,但仍然不会在右边的斑点上回显P A或L谢谢!如果我必须在最后一个日期(即20日)插入表格,该怎么办。我该怎么做?像这样的表单将有name=“id[]”的输入,并选择name=“Attention[]”抱歉,我不明白你在问什么嘿,谢谢!如果我必须在最后一个日期(即20日)插入表格,该怎么办。我该怎么做?像这样的表单将有name=“id[]”的输入,并选择name=“Attention[]”抱歉,我不明白你在问什么嘿,谢谢!如果我必须在最后一个日期(即20日)插入表格,该怎么办。我该怎么做?嘿,谢谢!如果我必须在最后一个日期(即20日)插入表格,该怎么办。我该怎么做?