单击 table 中的特定单元格后获取所有数据

Getting all data after clicking a particular cell in a table

Dbfiddle:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=65b310b4b973a7577d4953e01c09a124

目前我有一个 table 显示每个来源的数据值的总数。在比较 2 tables 1 是 crm_leads 与我所有的产品信息,1 是 crm_sources 与产品相关的来源后,我得到了这个值。

现在这是输出:

现在您可以看到总计数显示在每个 header 的来源旁边。如图所示,每个源有 8 个单元格。现在这些计数值位于一个标签内,点击后会转到查看所有页面。

现在基本上我想显示我点击的项目的数据。因此,例如,如果我单击“热门”状态下的 163,它会将我带到 viewall 页面并显示 table.[=17= 中所有处于“热门”状态的人的 ID、来源、enquiry_date ]

所以基本上它应该检测点击了哪个来源和哪个状态的数据,然后相应地做出这样的声明?

select * from crm_leads where lead_source = '.$source.' and lead_status = '.$status.';

我想我可以在这里做的另一件事是将我的 table 放在一个表单中,并将这些值作为 post 传递到我的控制器 class leadstatus 中,它将传递该值查看全部?不太确定如何进行。

型号Class:

function get_statusreport($fdate='',$tdate='')
    {
        $this->db->select("l.lead_status,crm_sources.title,count(*) as leadnum,l.enquiry_date,l.sub_status");
        $this->db->from($this->table_name." as l");
        if($fdate !='')
            $this->db->where("date(l.added_date) >=",date('Y-m-d',strtotime($fdate)));
        if($tdate !='')
            $this->db->where("date(l.added_date) <=",date('Y-m-d',strtotime($tdate)));
        $this->db->where("lead_status <>",10);
        $this->db->join("crm_sources ","crm_sources.id= l.lead_source","left");
        $this->db->group_by("l.lead_status,crm_sources.title");
        $this->db->order_by("leadnum DESC, crm_sources.title ASC,l.lead_status ASC");
        $query = $this->db->get();
        $results = $query->result_array();
        return $results;
    }

控制器 Class(leadstatus 持有我当前 table 的视图):

public function leadstatus($slug='')
    {
        $content='';
        $content['groupedleads'] = $this->leads_model->get_statusreport($fdate,$tdate);
        $this->load->view('crm/main',$main);    
        $this->load->view('crm/reports/leadstatus',$content);
    }

public function viewall($slug='')
    {
        $content='';
        $this->load->view('crm/main',$main);    
        $this->load->view('crm/reports/viewall',$content);
    }

查看class:

<?php
    $ls_arr = array(1=>'Open',8=>'Hot',2=>'Closed',3=>'Transacted',4=>'Dead'); 
     foreach($groupedleads as $grplead){
        $statuses[] = $status = $ls_arr[$grplead["lead_status"]];
        if($grplead["title"] == NULL || $grplead["title"] == '')
            $grplead["title"] = "Unknown";
        if(isset($grplead["title"]))
            $titles[] = $title = $grplead["title"];
        $leaddata[$status][$title] = $grplead["leadnum"];
    }

    if(count($titles) > 0)
      $titles = array_unique($titles);
    if(count($statuses) > 0)
      $statuses = array_unique($statuses);
    
?>
<table>
<tr">
            <th id="status">Source</th>
             <?php
              if(count($statuses) > 0)
              foreach($statuses as $status){
            ?><th id=<?php echo $status; ?>><?php echo $status; ?></th>
            <?php
              }
            ?>
            <th>Total</th>
          </tr>
<?php
          if(is_array($titles))
            foreach($titles as $title){ 
          ?>
              <tr>
                  <?php 
                    $total = 0;
                    echo "<td>".$title."</td>";
                    foreach ($statuses as $status) {
                        $num = $leaddata[$status][$title];
                        echo "<td><a target='_blank' href='".site_url('reports/viewall')."'>".$num."</a></td>";
                        $total += $num; 
                        $sum[$status] += $num;
                    }
                    echo "<td>".$total."</td>";
                    $grandtotal += $total; 
                   ?>
              </tr>
          <?php } ?>
</table>

您可以像这样在 URL 中包含来源和状态:

foreach ($statuses as $status) {
            $num = $leaddata[$status][$title];
            echo "<td><a target='_blank' href='" . site_url('reports/viewall?source=' . $source . '&status=' . $status) . "'>" . $num . "</a></td>";
            $total += $num;
            $sum[$status] += $num;
        }

然后在你的控制器中:

public function viewall($slug = '')
{
    $content = '';
    $source = $this->input->get('source');
    $status = $this->input->get('status');
    // Do what you want with $source and $status
    $this->load->view('crm/main', $main);
    $this->load->view('crm/reports/viewall', $content);
}