Раньше даты и имена выводились в одной таблице, но появилась необходимость вывести денные отдельно для каждой даты.
Есть функция:
public function getSheduleForWeek() {
$sql = "SELECT c.name, cs.date FROM " . DB_PREFIX . "courses c LEFT JOIN " . DB_PREFIX . "course_shedule cs ON (c.course_id = cs.course) WHERE cs.location = '1' AND YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1) ORDER BY cs.date";
$query = $this->db->query($sql);
return $query->rows;
}
которая возвращает массив:
array(9) {
[0]=>
array(3) {
["name"]=>
string(124) "Имя"
["date"]=>
string(19) "2019-02-18 09:00:00"
}
[1]=>
array(3) {
["name"]=>
string(102) "Имя 2"
["date"]=>
string(19) "2019-02-18 09:00:00"
}
[3]=>
array(3) {
["name"]=>
string(108) "Имя 3"
["date"]=>
string(19) "2019-02-19 09:00:00"
}
}
Сделал 2-ю функцию:
public function getSheduleForDate() {
$data = array();
$sql = "SELECT distinct DATE_FORMAT(cs.date, '%Y-%m-%d') FROM " . DB_PREFIX . "courses c LEFT JOIN " . DB_PREFIX . "course_shedule cs ON (c.course_id = cs.course) WHERE cs.location = '1' AND YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1) ORDER BY cs.date";
$query = $this->db->query($sql);
foreach ($query->rows as $values) {
foreach ($values as $value) {
$data[] = $value;
}
}
return $data;
}
которая возвращает массив с датами:
array(4) {
[0]=>
string(10) "2019-02-18"
[1]=>
string(10) "2019-02-19"
[2]=>
string(10) "2019-02-20"
[3]=>
string(10) "2019-02-22"
}
Но нужно сделать что-бы был такой массив:
array(3) {
["date"]=>
string(17) "2019-02-18"
["array_name"]=>
array(9) {
[0]=>
array(3) {
["name"]=>
string(124) "Имя"
["date"]=>
string(19) "2019-02-18 09:00:00"
}
[1]=>
array(3) {
["name"]=>
string(102) "Имя 2"
["date"]=>
string(19) "2019-02-18 09:00:00"
}
}
}
array(3) {
["date"]=>
string(17) "2019-02-19"
["array_name"]=>
array(9) {
[0]=>
array(3) {
["name"]=>
string(108) "Имя 3"
["date"]=>
string(19) "2019-02-19 09:00:00"
}
}
}
Подскажите, пожалуйста, как можно это сделать?
CMS: Opencart
Кому интересно, сделал так:
public function getSheduleForWeek() {
$sql = "SELECT c.name, DATE_FORMAT(cs.date, '%Y-%m-%d') date FROM " . DB_PREFIX . "courses c LEFT JOIN " . DB_PREFIX . "course_shedule cs ON (c.course_id = cs.course) WHERE cs.location = '1' AND YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1) ORDER BY cs.date";
$query = $this->db->query($sql);
$data = [];
foreach ($query->rows as $row){
$data[$row['date']][] = array(
'name' => $row['name'],
);
}
return $data;
}
получил массив:
array(3) {
["2019-02-18"]=>
array(2) {
[0]=>
array(3) {
["name"]=>
string(124) "Имя"
}
[1]=>
array(3) {
["name"]=>
string(78) "Имя 2"
}
}
["2019-02-19"]=>
array(2) {
[0]=>
array(3) {
["name"]=>
string(108) "Имя 3"
}
}
}
и вывел дату через $key.
Выкинуть на помойку то, что лежит в $this->db. Вместо этого положить нормальный PDO. Затем
public function getSheduleForWeek()
{
$dbp = DB_PREFIX;
$sql = "SELECT date(cs.date), name, cs.date FROM {$dbp}courses c
LEFT JOIN {$dbp}course_shedule cs ON c.course_id = cs.course
WHERE cs.location = '1' AND YEARWEEK(`date`, 1) = YEARWEEK(NOW(), 1)
ORDER BY cs.date";
return $this->db->query($sql)->fetchAll(PDO::FETCH_GROUP);
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Изучаю вебсокеты, конкретно библиотеку reactphp, в документации масса примеров сокет-серверов, но подключение к сокету идёт в основном через...
Создал скрипт который должен реагировать на нажатие кнопки (с произвольным именем из 1 символа), однако при выполнении ничего не происходит...
Всем привет, имеется данный код на PHP, который парсит контент с одной страницыА как вывести например, контент с разных страниц