foreach循环重复相同的值
foreach loop repeating same value
我从我的数据库中的两个 table 得到结果。 Table一个有项目名,table两个有项目名下的子项目名,这两个table通过一个id连接。
现在,当我通过连接两个 table 使用 foreach 输出结果时,它重复显示项目名称,因为在该重复项目下有多个子项目。
我希望项目名称是单一的,子项目结果将在主项目名称下循环。怎么做?
我使用 codeigniter 进行开发。
我的浏览页:
<?php foreach ($reportlist as $project_item): { ?>
<tr>
<td>
<form method='post' action='update_project'>
<input type='hidden' value='<?php echo ($project_item['pid']); ?>' name='pid'>
<input type='hidden' value='<?php echo $project_item['pp_id']; ?>' name='pp_id'>
<input type="submit" class="linkButton" value="<?php echo $project_item['p_name'] ?>">
</form>
</td>
<td>
<form method='post' action='update_subproject'>
<input type='hidden' value='<?php echo $project_item['pid']; ?>' name='pid'>
<input type='hidden' value='<?php echo $project_item['pp_id']; ?>' name='pp_id'>
<input type="submit" class="linkButton" value="<?php echo $project_item['component_name'] ?>" >
</form>
</td>
<td><?php echo $project_item['coordinating_authority'] ?></td>
<td><?php echo $project_item['start_month'] ?></td>
<td><?php echo $project_item['target_month'] ?></td>
<td><?php echo $project_item['stat_pro'] ?></td>
<td><?php echo $project_item['stat_pro'] ?></td>
<td><?php echo $project_item['remark_pro'] ?></td>
</tr>
<?php } endforeach ?>
</tbody>
我的控制器页面:
$this->load->model('projsubproj_add_model');
$data['reportlist'] = $this->projsubproj_add_model->existing_project();
$this->load->view('PAGE-DESIGN/adminheader');
$this->load->view('existing_project_view', $data);
$this->load->view('PAGE-DESIGN/footer');
和我的模特:
public function existing_project()
{
{
$this->db->select('project_tab.p_name,
pp_project_tab.pp_id AS pp_id,
pp_project_tab.pid AS pid,
pp_project_tab.ppname AS component_name,
pp_project_tab.pp_smonth AS start_month,
pp_project_tab.pp_emonth AS target_month,
pp_project_tab.pp_cordn_reqrd AS coordinating_authority,
pp_project_tab.pps_status AS stat_pro,
pp_project_tab.remarks AS remark_pro');
$this->db->from('project_tab');
$this->db->join('pp_project_tab', 'pp_project_tab.pid =project_tab.pid');
//$this->db->join('pp_status_tab', 'pp_status_tab.pp_id = pp_project_tab.pp_id');
$this->db->order_by('ppname', 'desc');
$query = $this->db->get();
return $query->result_array();
}
$query = $this->db->get_where('project_tab');
return $query->row_array();
}
我得到了解决方案:我刚刚通过 foreach 循环编辑了我的视图文件。我做了两个函数来从两个 table 中提取结果并加入它们,条件是如果子项目 table 的 pid 与主题 table 的 pid 匹配,则回显子项目名称及其项目循环的 foreach 循环内的组件。
这是我的代码:
$projects 用于从 project_tab、
中提取数据
$components 用于从 pp_project_tab
中提取数据
<?php
foreach ($projects as $project) {
echo $project['p_name'];
foreach ($components as $component) {
if ($project['pid']==$component['pid']) {
echo $component['ppname'] ;
}
}
}
?>
我从我的数据库中的两个 table 得到结果。 Table一个有项目名,table两个有项目名下的子项目名,这两个table通过一个id连接。 现在,当我通过连接两个 table 使用 foreach 输出结果时,它重复显示项目名称,因为在该重复项目下有多个子项目。 我希望项目名称是单一的,子项目结果将在主项目名称下循环。怎么做?
我使用 codeigniter 进行开发。
我的浏览页:
<?php foreach ($reportlist as $project_item): { ?>
<tr>
<td>
<form method='post' action='update_project'>
<input type='hidden' value='<?php echo ($project_item['pid']); ?>' name='pid'>
<input type='hidden' value='<?php echo $project_item['pp_id']; ?>' name='pp_id'>
<input type="submit" class="linkButton" value="<?php echo $project_item['p_name'] ?>">
</form>
</td>
<td>
<form method='post' action='update_subproject'>
<input type='hidden' value='<?php echo $project_item['pid']; ?>' name='pid'>
<input type='hidden' value='<?php echo $project_item['pp_id']; ?>' name='pp_id'>
<input type="submit" class="linkButton" value="<?php echo $project_item['component_name'] ?>" >
</form>
</td>
<td><?php echo $project_item['coordinating_authority'] ?></td>
<td><?php echo $project_item['start_month'] ?></td>
<td><?php echo $project_item['target_month'] ?></td>
<td><?php echo $project_item['stat_pro'] ?></td>
<td><?php echo $project_item['stat_pro'] ?></td>
<td><?php echo $project_item['remark_pro'] ?></td>
</tr>
<?php } endforeach ?>
</tbody>
我的控制器页面:
$this->load->model('projsubproj_add_model');
$data['reportlist'] = $this->projsubproj_add_model->existing_project();
$this->load->view('PAGE-DESIGN/adminheader');
$this->load->view('existing_project_view', $data);
$this->load->view('PAGE-DESIGN/footer');
和我的模特:
public function existing_project()
{
{
$this->db->select('project_tab.p_name,
pp_project_tab.pp_id AS pp_id,
pp_project_tab.pid AS pid,
pp_project_tab.ppname AS component_name,
pp_project_tab.pp_smonth AS start_month,
pp_project_tab.pp_emonth AS target_month,
pp_project_tab.pp_cordn_reqrd AS coordinating_authority,
pp_project_tab.pps_status AS stat_pro,
pp_project_tab.remarks AS remark_pro');
$this->db->from('project_tab');
$this->db->join('pp_project_tab', 'pp_project_tab.pid =project_tab.pid');
//$this->db->join('pp_status_tab', 'pp_status_tab.pp_id = pp_project_tab.pp_id');
$this->db->order_by('ppname', 'desc');
$query = $this->db->get();
return $query->result_array();
}
$query = $this->db->get_where('project_tab');
return $query->row_array();
}
我得到了解决方案:我刚刚通过 foreach 循环编辑了我的视图文件。我做了两个函数来从两个 table 中提取结果并加入它们,条件是如果子项目 table 的 pid 与主题 table 的 pid 匹配,则回显子项目名称及其项目循环的 foreach 循环内的组件。
这是我的代码:
$projects 用于从 project_tab、
中提取数据
$components 用于从 pp_project_tab
<?php
foreach ($projects as $project) {
echo $project['p_name'];
foreach ($components as $component) {
if ($project['pid']==$component['pid']) {
echo $component['ppname'] ;
}
}
}
?>