感谢您抽出宝贵时间来审核我的问题。我应该说,我不是一个专家的PHP开发人员,但我知道这很危险!
我目前正致力于设置显示'事件的PHP日历。如果你愿意的话,在特定的日子里。
我修改了以下代码:http://www.codesend.com/view/84dba4acad5998d6fd4119c0c758dc52/
目前,我能够让foreach循环完成这些日子并在数据出现的每一天显示bootstrap模式框按钮。使用print_r&进行调试时预标签,我可以看到每天都正确显示这些值,但出于某种原因,它会在所有日期内重复我的数据,而不是将每天的数据放在正确的日期。
我已尝试在当前的foreach循环中执行额外的foreach循环,但这似乎无法正常工作,或者我没有正确执行。
在屏幕截图中,您会看到它所说的位置"否" &安培; "待定"在2天。但是,当我点击查看请求时,它只显示Kelly的待处理记录。 (注意,最顶部的3条记录是我的测试记录,它显示了应该分配给它们的日期)
我遇到问题的代码块如下:
foreach($events[$event_day] as $event => $value) {
$calendar.= '<div class="event">';
//Debugging
$calendar.= '<pre>'. $value['status'] .'</pre>';
$status = trim($value['status']);
//if ($inc < 1){
$calendar.= '<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">
View Requests
</button>';
//}
$calendar.='<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel" style="text-align:center;">Agent Requests for - </h4>
</div>
<div class="modal-body"><div class="row"><div class="col-md-4" style="border-right:1px solid gainsboro;min-height:250px;text-align:center;"><span class="label label-success" style="font-size:14px;">Approved</span><hr/>';
if ($status == 'Yes') {
$calendar.= '<li>'.$value['title'] .' ' .$value['title2'].'</li>';
}
$calendar.='</div><div class="col-md-4" style="border-right:1px solid gainsboro;min-height:250px;text-align:center;"><span class="label label-danger" style="font-size:14px;">Denied</span><hr/>';
if ($status == 'No') {
$calendar.= '<li>'.$value['title'] .' ' .$value['title2'].'</li>';
}
$calendar.='</div><div class="col-md-4" style="text-align:center;"><span class="label label-warning" style="font-size:14px;">Pending</span><hr/>';
if ($status == 'Pending') {
$calendar.= '<li>'.$value['title'] .' ' .$value['title2'].'</li>';
}
$calendar.='</div></div></div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>';
//End Event Div
$calendar.= '</div>';
}
提前感谢您花时间看看这个!
答案 0 :(得分:0)
你只看到第一个的原因是因为你的模态选择器使用的id属性#myModal
应该是唯一的,因此它会在找到第一个之后停止查看。由于您在foreach循环中输出模态内容,因此所有div都具有相同的ID。
有很多方法可以解决这个问题,但我建议使用唯一的ID选择器。您还没有提供任何可用的示例数据,但我会猜测并假设您在事件数据对象上有eventId
或类似的区别。如果你没有唯一的id,那么你可能会使用事件名称或其他东西,但你应该在那里放一个ID - 特别是如果你从你设计的数据库中提取。
这是一些缩写的伪代码:
foreach($events[$event_day] as $event => $value) {
// ...
// get some sort of uniquely identifying data attribute from the event
$eventId = trim($value['eventId']);
// ...
// uniquely select the modal content div with a distinct id
$calendar.= '
<button
data-target="#myModal-' . $eventId . '"
type="button"
class="btn btn-primary btn-sm"
data-toggle="modal"
>
View Requests
</button>';
// ...
// use this unique id when generating your modal content
$calendar.='
<div
id="myModal-' . $eventId . '"
class="modal fade"
tabindex="-1"
role="dialog"
aria-labelledby="myModalLabel"
>';
// ...
}
答案 1 :(得分:0)
谢谢杰夫!我注意到,在我把所有东西都擦掉后不久,我就一步一步地重建了它。另外,我的操作顺序略有偏差。
修复:
1。)设置模态ID(否则它不知道要查看哪一天!谢谢杰夫。)
2。)重新排序不应该重复的模态元素在foreach循环之外。
以下是更正后的代码:
$calendar.= '<div class="event">';
if(isset($events[$event_day])) {
//Display Button if Data Present on Day
$calendar.= '<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal-'.$list_day.'">View Requests</button>';
//Build Modal & Table Headers
$calendar.='<div class="modal fade" id="myModal-'.$list_day.'" tabindex="-1" role="dialog" aria-labelledby="myModalLabel-'.$list_day.'">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel-'.$list_day.'" style="text-align:center;">Agent Requests for - '.$event_day.'</h4>
</div>
<div class="modal-body">
<div class="row">
<table class="table table-striped">
<thead>
<tr>
<th style="text-align:center;"><i class="fa fa-cog" aria-hidden="true"></i></th>
<th>Agent Name</th>
<th>Status</th>
<th>Hours</th>
</tr>
</thead>
<tbody>';
foreach($events[$event_day] as $event) {
//Start Table Row
$calendar.='<tr>';
//Edit Button
$calendar.='<td style="text-align:center;"><a title="Edit Record" class="btn btn-default" href="edit-time.php?id='.$event['number'].'"><em class="fa fa-pencil"></em></a>';
//Status Indicator
$calendar.= '<td>'.$event['title'] .' ' .$event['title2'].'</td><td>';
if ($event['status'] == 'Yes'){
$calendar.= '<span class="label label-success" style="font-size:14px;">Approved</span>';
}
if ($event['status'] == 'No'){
$calendar.= '<span class="label label-danger" style="font-size:14px;">Denied</span>';
}
if ($event['status'] == 'Pending'){
$calendar.= '<span class="label label-warning" style="font-size:14px;">Pending</span>';
}
//Hours
$calendar.= '<td>'.$event['hours'].'</td>';
//End Table Row
$calendar.='</tr>';
}
//End Table Body & End Modal
$calendar.='</tr></tbody></table></div></div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>';
}
else {
//No Data
$calendar.= str_repeat('<p> </p>',2);
}
//End Event Div
$calendar.= '</div>';
希望这有助于其他人!
最佳, 将