Я работаю над проектом CodeIgniter (v3.1.9), который отображает графики данных, полученных из баз данных. У меня есть 1 контроллер, 1 модель, основное представление и каждый график в виде подпредставлений.
Моя модель (в настоящее время содержит только 2 запроса), возвращающая массив.
Мой контроллер прост: индексная функция для передачи представлений графика в основное представление и две функции для каждого графика. 1, который просто печатает закодированный JSON, а другой возвращает представление графика в основное представление.
Мои представления содержат Javascript/jQuery, который получает JSON и создает/отображает график (с использованием c3js).
Проблема: Один из графиков отображается нормально, а другой вызывает ошибку 500. . Если я переместию запрос, вызывающий 500, выше другого в моей модели... оба отображаются нормально, и ошибок нет.
Я нашел аналогичный вопрос, заданный 2 года назад, но он остался без ответа.
Что вызывает эту ошибку 500 в зависимости от порядка функций? Как это исправить?
Контроллер:
class ARDash extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model("ar_dash_model");
$this->load->database();
$this->load->helper('url');
}
public function index() {
$data['content'] = array();
array_push($data['content'], $this->displayReportsByClassification());
array_push($data['content'], $this->displayReportsByOccupation());
$this->load->view("Dash/AR/dash_view",$data);
}
function displayReportsByClassification() {
return $this->load->view("Dash/AR/by_classification.php", null, true);
}
function jsonReportsByClassification() {
$data = $this->ar_dash_model->dbGetReportsByClassification();
print json_encode($data);
}
function jsonReportsByOccupation() {
$data = $this->ar_dash_model->dbGetReportsByOccupation();
print json_encode($data);
}
function displayReportsByOccupation() {
$data = $this->load->view("Dash/AR/by_occupation.php", null, true);
return $data;
}
}
Модель:
class ar_dash_model extends CI_Model {
function dbGetReportsByClassification() {
$results = array();
$sql = '
SELECT
Event_Class_ID,
EventClass_Name as name,
count(Event_ID) as count
FROM
Reports.tblEvent as incident
LEFT JOIN Reports.tblEventClass
ON Event_Class_ID = EventClass_ID
WHERE
incident.Event_Deleted is null AND
incident.Event_District_ID = '.$this->di.'
AND
Event_Occurred_Date_Time BETWEEN CAST("'.($this->dateRange["from"]).'" AS DATE) AND CAST("'.($this->dateRange["to"]).'" AS DATE)
GROUP BY
Event_Class_ID
ORDER BY count DESC
';
$query = $this->db->query($sql);
foreach ($query->result() as $row) {
if($row->name != '') {
$tmp = array();
$tmp['classification'] = $row->name;
$tmp['count'] = $row->count;
array_push($results, $tmp);
}
}
return $results;
}
}
/****************
* Moving this above the other function makes the 500 go away
*********/
function dbGetReportsByOccupation() {
$results = array();
$sql = '
SELECT
count(I.Event_ID) as count,
O.Occupation_Name as occupation
FROM
Reports.tblEvent AS I INNER JOIN Reports.tblARPerson AS P ON I.Event_ARPerson_ID = P.ARPerson_ID INNER JOIN mainDb.tblResource as R ON I.Event_Resource_ID = R.Resource_ID INNER JOIN mainDb.tblOccupation as O ON R.Resource_Primary_Occupation_ID = O.Occupation_ID
WHERE
I.Event_District_ID = '.$this->di.'
AND
I.Event_Deleted is null
AND
I.Event_Occurred_Date_Time BETWEEN CAST("'.($this->dateRange["from"]).'" AS DATE) AND CAST("'.($this->dateRange["to"]).'" AS DATE)
GROUP BY
O.Occupation_ID
ORDER BY
count DESC
';
$query = $this->db->query($sql);
foreach ($query->result() as $row) {
if($row->count != '') {
$tmp = array();
$tmp['occupation'] = $row->occupation;
$tmp['count'] = $row->count;
array_push($results, $tmp);
}
}
return $results;
}
Представление графика (для запроса, вызывающего 500):
$.getJSON("index.php/ARDash/jsonReportsByOccupation", function(data){
var chart = c3.generate({
bindto: '#occupationChart',
data: {
json: data,
keys: {
x: 'occupation',
value: ['Number of incidents']
},
type: 'bar',
empty: {
label: {
text: "No Data"
}
}
},
tooltip: {
show: true,
grouped: true
},
axis: {
rotated: true,
x: {
label: {
position: 'outer-center',
},
type: 'category',
categories: 'occupation'
},
y: {
tick: {
format: d3.format("d"),
outer: true,
count: 4
}
}
},
legend: {
show: false
}
});
});
Подробнее здесь: https://stackoverflow.com/questions/519 ... uery-order
Ошибка 500 из запроса с использованием JSON в CodeIgniter в зависимости от порядка запроса ⇐ Php
Кемеровские программисты php общаются здесь
1733365490
Anonymous
Я работаю над проектом CodeIgniter (v3.1.9), который отображает графики данных, полученных из баз данных. У меня есть 1 контроллер, 1 модель, основное представление и каждый график в виде подпредставлений.
Моя [b]модель[/b] (в настоящее время содержит только 2 запроса), возвращающая массив.
Мой [b]контроллер[/b] прост: индексная функция для передачи представлений графика в основное представление и две функции для каждого графика. 1, который просто печатает закодированный JSON, а другой возвращает представление графика в основное представление.
Мои [b]представления[/b] содержат Javascript/jQuery, который получает JSON и создает/отображает график (с использованием c3js).
[b]Проблема:[/b] Один из графиков отображается нормально, а другой вызывает ошибку 500. . Если я переместию запрос, вызывающий 500, выше другого в моей модели... оба отображаются нормально, и ошибок нет.
Я нашел аналогичный вопрос, заданный 2 года назад, но он остался без ответа.
Что вызывает эту ошибку 500 в зависимости от порядка функций? Как это исправить?
[b]Контроллер:[/b]
class ARDash extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model("ar_dash_model");
$this->load->database();
$this->load->helper('url');
}
public function index() {
$data['content'] = array();
array_push($data['content'], $this->displayReportsByClassification());
array_push($data['content'], $this->displayReportsByOccupation());
$this->load->view("Dash/AR/dash_view",$data);
}
function displayReportsByClassification() {
return $this->load->view("Dash/AR/by_classification.php", null, true);
}
function jsonReportsByClassification() {
$data = $this->ar_dash_model->dbGetReportsByClassification();
print json_encode($data);
}
function jsonReportsByOccupation() {
$data = $this->ar_dash_model->dbGetReportsByOccupation();
print json_encode($data);
}
function displayReportsByOccupation() {
$data = $this->load->view("Dash/AR/by_occupation.php", null, true);
return $data;
}
}
[b]Модель:[/b]
class ar_dash_model extends CI_Model {
function dbGetReportsByClassification() {
$results = array();
$sql = '
SELECT
Event_Class_ID,
EventClass_Name as name,
count(Event_ID) as count
FROM
Reports.tblEvent as incident
LEFT JOIN Reports.tblEventClass
ON Event_Class_ID = EventClass_ID
WHERE
incident.Event_Deleted is null AND
incident.Event_District_ID = '.$this->di.'
AND
Event_Occurred_Date_Time BETWEEN CAST("'.($this->dateRange["from"]).'" AS DATE) AND CAST("'.($this->dateRange["to"]).'" AS DATE)
GROUP BY
Event_Class_ID
ORDER BY count DESC
';
$query = $this->db->query($sql);
foreach ($query->result() as $row) {
if($row->name != '') {
$tmp = array();
$tmp['classification'] = $row->name;
$tmp['count'] = $row->count;
array_push($results, $tmp);
}
}
return $results;
}
}
/****************
* Moving this above the other function makes the 500 go away
*********/
function dbGetReportsByOccupation() {
$results = array();
$sql = '
SELECT
count(I.Event_ID) as count,
O.Occupation_Name as occupation
FROM
Reports.tblEvent AS I INNER JOIN Reports.tblARPerson AS P ON I.Event_ARPerson_ID = P.ARPerson_ID INNER JOIN mainDb.tblResource as R ON I.Event_Resource_ID = R.Resource_ID INNER JOIN mainDb.tblOccupation as O ON R.Resource_Primary_Occupation_ID = O.Occupation_ID
WHERE
I.Event_District_ID = '.$this->di.'
AND
I.Event_Deleted is null
AND
I.Event_Occurred_Date_Time BETWEEN CAST("'.($this->dateRange["from"]).'" AS DATE) AND CAST("'.($this->dateRange["to"]).'" AS DATE)
GROUP BY
O.Occupation_ID
ORDER BY
count DESC
';
$query = $this->db->query($sql);
foreach ($query->result() as $row) {
if($row->count != '') {
$tmp = array();
$tmp['occupation'] = $row->occupation;
$tmp['count'] = $row->count;
array_push($results, $tmp);
}
}
return $results;
}
[b]Представление графика (для запроса, вызывающего 500):[/b]
$.getJSON("index.php/ARDash/jsonReportsByOccupation", function(data){
var chart = c3.generate({
bindto: '#occupationChart',
data: {
json: data,
keys: {
x: 'occupation',
value: ['Number of incidents']
},
type: 'bar',
empty: {
label: {
text: "No Data"
}
}
},
tooltip: {
show: true,
grouped: true
},
axis: {
rotated: true,
x: {
label: {
position: 'outer-center',
},
type: 'category',
categories: 'occupation'
},
y: {
tick: {
format: d3.format("d"),
outer: true,
count: 4
}
}
},
legend: {
show: false
}
});
});
Подробнее здесь: [url]https://stackoverflow.com/questions/51987122/500-error-from-query-using-json-in-codeigniter-depending-on-query-order[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия