Фильтры поиска, нужно доделать
Цена договорная
Всем привет, пытался сам сделать, по примерам, но знаний не хватает, не все могу реализовать.
Задача для тех кто php отлично знает, ну и js.
Будет хорошо, если работали с фраемворками, а желательно с ko7, koseven она же kohana.
Есть страница, там подгрузка авто, есть фильтры на странице, сортировка по ценам, по датам и дням.
Как все работает и устроено.
При выборе цены или даты, берется значение с селекта.
<select name="sortPrice" id="sortPrice" class="js-selectize" placeholder="Цене">
<option value="0">Цене</option>
<option value="DESC">По возрастанию</option>
<option value="ASC">По убыванию</option>
</select>
Значение уходит в контроллер, далее там идет проверка, если значение пришло, то задействуем обновление по сортировке авто.
$requestBody = ''; parse_str($this->request->body(), $requestBody);
$sortPrice = $requestBody['sortPrice'] ?? []; //прайс - получаем ASC ИЛИ DESC
$sortGod = $requestBody['sortGod'] ?? []; //год - получаем ASC ИЛИ DESC
$session = Session::instance();
if ($sortPrice) {
$auto = $autosOrm
->order_by('price', $sortPrice)
->order_by('god', $sortGod)
->and_where('status', '=', 1)
->find_all();
//записываем сессию если есть сорт прайс
$session->set('sortPrice', $sortPrice);
}
Идет запись в сессию, для того чтобы потом когда мы нажимаем на страницы в пагинации, выбранная сортировка была выбрана.
Вот пример.
<?php
$sortPrice = [
(object)['value' => 'DESC', 'name' => 'По возрастанию'],
(object)['value' => 'ASC', 'name' => 'По убыванию'],
];
?>
<select name="sortPrice" id="sortPrice" class="js-selectize" placeholder="Цене">
<option value="0">Цене</option>
<?php foreach ($sortPrice as $sortPrice) : ?>
<option value="<?php echo $sortPrice->value ?>" <?php if ($sortPrice->value == $sessionPrice) : ?> selected<?php endif; ?>><?php echo $sortPrice->name ?></option>
<?php endforeach; ?>
</select>
Что не выходит сделать и нужно сделать:
Не могу разобраться с пагинацией, выбрал я допустим сортировка по цене, подгрузились авто по цене по возрастанию к примеру, страницы тож появились, но если на 2 перейти, то там идут как и на первой авто.
Получение номера страницы есть:
$pageUrl = $requestBody['page'] ?? []; //получаем номер страницы, 1,2 и так далее
Пагинация:
$page = $this->request->param('id');
if ($page < 1) {
$page = 1;
}
$settings = ORM::factory('Setting', 1);
$countOnList = $settings->autoPage;
$autosCountOrm = ORM::factory('Auto');
$autosCount = $autosCountOrm->find_all()->count();
$autosOrm = ORM::factory('Auto');
$autosOrm->limit($countOnList);
$autosOrm->offset((($page - 1) * $countOnList));
$pagination = Pagination::factory(array(
'current_page' => array(
// 'source' => 'query_string',
'source' => 'route',
'key' => 'page'
),
'total_items' => $autosCount,
'items_per_page' => $countOnList, 'view' => 'admin/paginations.query'
));
$pagination = Helper_Pagenavigator::view_pagination($autosCount, '/auto', $pageUrl, $countOnList);
Есть там же сортировка по датам, типа показывать за последние три дня, за неделю и т.д.
Делал но не все понимаю как сделать, чтобы сортировать по датам, показывать авто за последний день, те что добавились, или за последние три или неделю.
//за три дня
if ($sortDate == 'Inthreedays') {
$date1 = date('Y-m-d'); //сегодняшняя дата и время
$date2 = date('Y-m-d', strtotime('-3 days'));
$starDate = $date1;
$endDate = $date2;
}
if ($starDate) {
$auto = $autosOrm
->where('date', $starDate)
->and_where('date', $endDate)
//->and_where('status', '=', 1)
->find_all();
}
Тут не верно, не работает так.
Ну вообщем это основные задачи по сортировке, задачи очень простые.
Задача для тех кто php отлично знает, ну и js.
Будет хорошо, если работали с фраемворками, а желательно с ko7, koseven она же kohana.
Есть страница, там подгрузка авто, есть фильтры на странице, сортировка по ценам, по датам и дням.
Как все работает и устроено.
При выборе цены или даты, берется значение с селекта.
<select name="sortPrice" id="sortPrice" class="js-selectize" placeholder="Цене">
<option value="0">Цене</option>
<option value="DESC">По возрастанию</option>
<option value="ASC">По убыванию</option>
</select>
Значение уходит в контроллер, далее там идет проверка, если значение пришло, то задействуем обновление по сортировке авто.
$requestBody = ''; parse_str($this->request->body(), $requestBody);
$sortPrice = $requestBody['sortPrice'] ?? []; //прайс - получаем ASC ИЛИ DESC
$sortGod = $requestBody['sortGod'] ?? []; //год - получаем ASC ИЛИ DESC
$session = Session::instance();
if ($sortPrice) {
$auto = $autosOrm
->order_by('price', $sortPrice)
->order_by('god', $sortGod)
->and_where('status', '=', 1)
->find_all();
//записываем сессию если есть сорт прайс
$session->set('sortPrice', $sortPrice);
}
Идет запись в сессию, для того чтобы потом когда мы нажимаем на страницы в пагинации, выбранная сортировка была выбрана.
Вот пример.
<?php
$sortPrice = [
(object)['value' => 'DESC', 'name' => 'По возрастанию'],
(object)['value' => 'ASC', 'name' => 'По убыванию'],
];
?>
<select name="sortPrice" id="sortPrice" class="js-selectize" placeholder="Цене">
<option value="0">Цене</option>
<?php foreach ($sortPrice as $sortPrice) : ?>
<option value="<?php echo $sortPrice->value ?>" <?php if ($sortPrice->value == $sessionPrice) : ?> selected<?php endif; ?>><?php echo $sortPrice->name ?></option>
<?php endforeach; ?>
</select>
Что не выходит сделать и нужно сделать:
Не могу разобраться с пагинацией, выбрал я допустим сортировка по цене, подгрузились авто по цене по возрастанию к примеру, страницы тож появились, но если на 2 перейти, то там идут как и на первой авто.
Получение номера страницы есть:
$pageUrl = $requestBody['page'] ?? []; //получаем номер страницы, 1,2 и так далее
Пагинация:
$page = $this->request->param('id');
if ($page < 1) {
$page = 1;
}
$settings = ORM::factory('Setting', 1);
$countOnList = $settings->autoPage;
$autosCountOrm = ORM::factory('Auto');
$autosCount = $autosCountOrm->find_all()->count();
$autosOrm = ORM::factory('Auto');
$autosOrm->limit($countOnList);
$autosOrm->offset((($page - 1) * $countOnList));
$pagination = Pagination::factory(array(
'current_page' => array(
// 'source' => 'query_string',
'source' => 'route',
'key' => 'page'
),
'total_items' => $autosCount,
'items_per_page' => $countOnList, 'view' => 'admin/paginations.query'
));
$pagination = Helper_Pagenavigator::view_pagination($autosCount, '/auto', $pageUrl, $countOnList);
Есть там же сортировка по датам, типа показывать за последние три дня, за неделю и т.д.
Делал но не все понимаю как сделать, чтобы сортировать по датам, показывать авто за последний день, те что добавились, или за последние три или неделю.
//за три дня
if ($sortDate == 'Inthreedays') {
$date1 = date('Y-m-d'); //сегодняшняя дата и время
$date2 = date('Y-m-d', strtotime('-3 days'));
$starDate = $date1;
$endDate = $date2;
}
if ($starDate) {
$auto = $autosOrm
->where('date', $starDate)
->and_where('date', $endDate)
//->and_where('status', '=', 1)
->find_all();
}
Тут не верно, не работает так.
Ну вообщем это основные задачи по сортировке, задачи очень простые.
Отзывы
Рекомендую, задач было больше чем в задании, все задачи решил, соображает в php, js, не просто на словах, а на деле.
2 года
назад
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.