我正在使用CodeIgniter,正在显示数据库中的数据。
我正在视图上显示数据(预期输出)
AFGFD ANAND
trdsd@gmail.com
ActivityName | Activity_startTime | Activity_endTime
cricket | 05:00. | 08:00
第2行
POIUY ANAND
mnbsd@gmail.com
ActivityName | Activity_startTime | Activity_endTime
cricket | 05:00. | 08:00
Badminton | 09:00. | 11:00
问题是,第一行显示得很完美,因为我只有一个活动,但是第二行却获得了多个记录。
我正在获得第二行的输出,例如
POIUY ANAND
mnbsd@gmail.com
POIUY ANAND
mnbsd@gmail.com
ActivityName | Activity_startTime | Activity_endTime
cricket | 05:00. | 08:00
ActivityName | Activity_startTime | Activity_endTime
Badminton | 09:00. | 11:00
如何分别显示个人信息和活动信息?
我知道我使用了2 foreach
,这就是我得到输出的原因。我想我可以通过更改模型查询来显示个人信息和活动信息。
查看代码
foreach ($SActivity as $sec_data) {
foreach ($sec_data as $row) { ?>
<h2><?php echo $row->first_name;?><?php echo $row->last_name;?></h2>
<p><?php echo $row->email;?></p>
<table>
<thead>
<tr>
<th>ActivityName</th>
<th>Activity_startTime</th>
<th>Activity_endTime</th>
</tr>
</thead>
<tbody>
<tr>
<td><?php echo $row->ActivityName;?></td>
<td><?php echo $row->Activity_startTime;?></td>
<td><?php echo $row->Activity_endTime;?></td>
</tr>
</tbody>
</table>
<?php }
}
我在视图页面中得到输出
Array
(
[0] => Array
(
[0] => stdClass Object
(
[member_id] => 209
[customer_id] => 20183
[profile_pic] => 5bb76975b6c4a1538746741051018.JPG
[first_name] => AFGFD
[middle_name] =>
[last_name] => ANAND
[email] => trdsd@gmail.com
[dob] => 24-07-1982
[phone] => 0987654321
[activity_name_id]=>1
[activity_name]=>cricket
[activity_startTime]=>05:00
[activity_endTime]=>08:00
)
)
[1] => Array
(
[0] => stdClass Object
(
[member_id] => 337
[customer_id] => 20184
[profile_pic] => 5bc7363f4fadf1539782207171018.jpg
[first_name] => POIUY
[middle_name] =>
[last_name] => ANAND
[email] => mnbsd@gmail.com
[dob] => 17-04-2006
[phone] => 0987654314
[activity_name_id]=>1
[activity_name]=>cricket
[activity_startTime]=>05:00
[activity_endTime]=>08:00
)
[1] => stdClass Object
(
[member_id] => 337
[customer_id] => 20184
[profile_pic] => 5bc7363f4fadf1539782207171018.jpg
[first_name] => POIUY
[middle_name] =>
[last_name] => ANAND
[email] => mnbsd@gmail.com
[dob] => 17-04-2006
[phone] => 0987654314
[activity_name_id]=>2
[activity_name]=>Badminton
[activity_startTime]=>09:00
[activity_endTime]=>11:00
)
)
)
控制器
//getting personal information
$getLoginMemberDetails['getAlldata'] = $this->Member_model->getAlldata();
$allData = [];
foreach ($getLoginMemberDetails['getAlldata'] as $m_id) {
$allData[] = $this->Member_model->getMemberActivity($m_id->member_id);
}
$getLoginMemberDetails['SActivity'] = $allData;
模型
public function getSecondaryMemberActivity($gotMemberId)
{
$getDetails = ['members.member_id' => $gotMemberId];
$result = $this->db->where($getDetails)
->from('members')
->join('member_activity', 'members.member_id = member_activity.member_id','LEFT')
->join('activity_name', 'activity_name.activity_name_id = member_activity.activity_id','LEFT')
->get()
->result();
if($result) {
return $result;
} else {
return 0;
}
}
您能在这个问题上帮助我吗?
答案 0 :(得分:0)
在您的视图中尝试此代码。我只添加了一个计数器来跟踪每个用户的活动数量,并跟踪循环中的当前位置,以便仅打印出每个用户的一个表头和用户信息:
<?php
foreach ($SActivity as $sec_data) {
$counter = 0; // COUNTER FOR KNOWING POSITION IN ACTIVITIES LOOP
$num_activities = count($sec_data); // TOTAL NUMBER OF ACTIVITIES FOR THIS USER
foreach ($sec_data as $row) {
$counter++; // ADD +1 TO COUNTER FOR EACH ACTIVITY
// ONLY PRINT OUT THE NAME AND TABLE HEADER IF FIRST ROW
if($counter == 1){ ?>
<h2><?php echo $row->first_name;?><?php echo $row->last_name;?></h2>
<p><?php echo $row->email;?></p>
<table>
<thead>
<tr>
<th>ActivityName</th>
<th>Activity_startTime</th>
<th>Activity_endTime</th>
</tr>
</thead>
<tbody>
<?php } ?>
<tr>
<td><?php echo $row->ActivityName;?></td>
<td><?php echo $row->Activity_startTime;?></td>
<td><?php echo $row->Activity_endTime;?></td>
</tr>
<?php
// IF THIS IS THE LAST ACTIVITY OF THIS USER IN THE LOOP: PRINT TABLE END TAG
if($counter == $num_activities){
echo '</tbody></table>';
}
}
}
?>