#php #mysql #codeigniter
Вопрос:
Dbfiddle: https://dbfiddle.uk/?rdbms=mysql_8.0amp;fiddle=65b310b4b973a7577d4953e01c09a124
В настоящее время у меня есть таблица, в которой отображается общее количество значений моих данных для каждого источника. Я получаю это значение после сравнения 2 таблиц, 1-это crm_leads со всей информацией о моем продукте, а 1-это crm_sources, с какими источниками связаны продукты.
Теперь это результат:
Теперь, как вы можете видеть, общее количество отображается под каждым заголовком рядом с его источником. Для каждого источника есть 8 ячеек, как показано на рисунке. Теперь эти значения количества находятся внутри тегов, которые после нажатия переходят на страницу просмотра.
Теперь здесь в основном я хочу показать данные элемента, на который я нажал. Так, например, если я нажму 163 в разделе «Горячий статус», он приведет меня на страницу «Просмотр всех» и покажет мне идентификатор, источник, дату запроса для всех, кто находится в списке «Горячий статус» в таблице.
Таким образом, в основном он должен определить данные, для которых выбран источник и какой статус, а затем, соответственно, сделать следующее заявление?
select * from crm_leads where lead_source = '.$source.' and lead_status = '.$status.';
Еще одна вещь, о которой я думаю, что могу здесь сделать, это поместить свою таблицу в форму и передать эти значения как post в моем классе контроллера leadstatus, который передаст это значение в viewall? Не совсем уверен, как действовать дальше.
Класс Модели:
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;
}
Класс контроллера(leadstatus содержит представление для моей текущей таблицы):
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);
}
Класс просмотра:
<?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>
Ответ №1:
Вы можете указать источник и статус в URL-адресе следующим образом:
foreach ($statuses as $status) {
$num = $leaddata[$status][$title];
echo "<td><a target='_blank' href='" . site_url('reports/viewall?source=' . $source . 'amp;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);
}