Jump to content

Фильтр заказов по периоду времени в админке


Recommended Posts

Здравствуйте. Необходимо в заказах в админке, сделать фильтр по периоду времени, например, выбираем период времени с 5.09.11 по 8.05.12 и у нас отображаются все заказы за данный период времени. Данный функционал очень необходим помогите реализовать пожалуйста.

Link to post
Share on other sites

ты что??? такая функциональность нагрузит СИМПЛУ, это же лишний код и дополнительная обработка!

неужели такие мелочи не могли быть реализованы автором - это ведь действительно удобно и необходимо....

Link to post
Share on other sites

это очень просто сделать...

в погоне за минимализацией кода автор упускает такие мелочи... эта функциональность не просто полезна – она необходима!

Link to post
Share on other sites

хорошо, тогда как освободишься напиши либо сюда решение, оно будет для всех полезно в будущем, либо в личку напиши мне. Спасибо большое.

Link to post
Share on other sites

набросал...

вставляем OrdersAdmin.php после 23-й строки

// Фильтр
$get_filter = $this->request->get('filter');
if($get_filter['date_from'])
$filter['date_from'] = date("Y-m-d 00:00:01",strtotime($get_filter['date_from']));

if($get_filter['date_to'])
$filter['date_to'] = date("Y-m-d 23:59:00",strtotime($get_filter['date_to']));

в Orders.php, функция get_orders

if(isset($filter['date_from']) && !isset($filter['date_to'])){
$date_filter = $this->db->placehold('AND o.date > ?', $filter['date_from']);
}
elseif(isset($filter['date_to']) && !isset($filter['date_from'])){
$date_filter = $this->db->placehold('AND o.date < ?', $filter['date_to']);
}
elseif(isset($filter['date_to']) && isset($filter['date_from'])){
$date_filter = $this->db->placehold('AND (o.date BETWEEN ? AND ?)', $filter['date_from'], $filter['date_to']);
}

там же добавляем условие запроса к базе

$date_filter

в шаблон

{* On document load *}
{literal}
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>

<script>
$(function() {

$('input[name="filter[date_from]"]').datepicker({
regional:'ru'
});

$('input[name="filter[date_to]"]').datepicker({
regional:'ru'
});

});
</script>
<script type="text/javascript">
function show_fields()
{
document.getElementById("filter_fields").style.display = document.getElementById("check").checked ? 'block' : 'none';
}
</script>
{/literal}

{* Фильтр *}
<div style="display: block; width:700px; clear:both; border-radius:10px; border: 1px solid #C0C0C0; margin: 10px 0; padding: 10px">
<form method="get">
<div id='filter_check'>
<input type="checkbox" name="filter[check]" id="check" value='1' {if $smarty.get.filter.check}checked{/if} onclick="show_fields();"/>
<label for="check">Фильтр</label>
</div>

<div id='filter_fields' {if !$smarty.get.filter.check}style="display: none"{/if}>
<input type="hidden" name="module" value="OrdersAdmin">
<input type="hidden" name="status" value="{$status}">
<div style="margin: 15px 0">
<label>Дата с: </label><input type=text name=filter[date_from] value='{$smarty.get.filter.date_from}'> 
<label>По: </label><input type=text name=filter[date_to] value='{$smarty.get.filter.date_to}'>
</div>
<input id="apply_action" class="button_green" type="submit" value="Применить">
</div>
</form>
</div>
{capture name=tabs} <li {if $status===0}class="active"{/if}><a href="{url module=OrdersAdmin status=0 keyword=null filter=null id=null page=null}">Новые</a></li> <li {if $status==1}class="active"{/if}><a href="{url module=OrdersAdmin status=1 keyword=null filter=null id=null page=null}">Приняты</a></li> <li {if $status==2}class="active"{/if}><a href="{url module=OrdersAdmin status=2 keyword=null filter=null id=null page=null}">Выполнены</a></li> <li {if $status==3}class="active"{/if}><a href="{url module=OrdersAdmin status=3 keyword=null filter=null id=null page=null}">Удалены</a></li> {if $keyword} <li class="active"><a href="{url module=OrdersAdmin keyword=$keyword id=null}">Поиск</a></li> {/if} {/capture}

Link to post
Share on other sites

Что-то у меня не фильтрует и выдает те же заказы что и на странице новых заказов.
Разобрался, в шаблоне была ошибка.

Wizard спасибо!

Link to post
Share on other sites
  • 6 months later...

Спасибо огромное, очень нужная вещь.
Нашел косяк. Если регишься на сайте и нажимаешь на ник выскакивает нотис:

Notice: Undefined variable: date_filter in /home/aqq9440/public_html/shurshim.ru/api/Orders.php on line 175Warning: Cannot modify header information - headers already sent by (output started at /home/aqq9440/public_html/shurshim.ru/api/Orders.php:175) in /home/aqq9440/public_html/shurshim.ru/index.php on line 26
Link to post
Share on other sites
  • 8 months later...

набросал...

 

вставляем OrdersAdmin.php после 23-й строки

// Фильтр
$get_filter = $this->request->get('filter');
if($get_filter['date_from'])
$filter['date_from'] = date("Y-m-d 00:00:01",strtotime($get_filter['date_from']));

if($get_filter['date_to'])
$filter['date_to'] = date("Y-m-d 23:59:00",strtotime($get_filter['date_to']));

в Orders.php, функция get_orders

if(isset($filter['date_from']) && !isset($filter['date_to'])){
$date_filter = $this->db->placehold('AND o.date > ?', $filter['date_from']);
}
elseif(isset($filter['date_to']) && !isset($filter['date_from'])){
$date_filter = $this->db->placehold('AND o.date < ?', $filter['date_to']);
}
elseif(isset($filter['date_to']) && isset($filter['date_from'])){
$date_filter = $this->db->placehold('AND (o.date BETWEEN ? AND ?)', $filter['date_from'], $filter['date_to']);
}

там же добавляем условие запроса к базе

$date_filter

в шаблон

{* On document load *}
{literal}
<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>

<script>
$(function() {

$('input[name="filter[date_from]"]').datepicker({
regional:'ru'
});

$('input[name="filter[date_to]"]').datepicker({
regional:'ru'
});

});
</script>
<script type="text/javascript">
function show_fields()
{
document.getElementById("filter_fields").style.display = document.getElementById("check").checked ? 'block' : 'none';
}
</script>
{/literal}

{* Фильтр *}
<div style="display: block; width:700px; clear:both; border-radius:10px; border: 1px solid #C0C0C0; margin: 10px 0; padding: 10px">
<form method="get">
<div id='filter_check'>
<input type="checkbox" name="filter[check]" id="check" value='1' {if $smarty.get.filter.check}checked{/if} onclick="show_fields();"/>
<label for="check">Фильтр</label>
</div>

<div id='filter_fields' {if !$smarty.get.filter.check}style="display: none"{/if}>
<input type="hidden" name="module" value="OrdersAdmin">
<input type="hidden" name="status" value="{$status}">
<div style="margin: 15px 0">
<label>Дата с: </label><input type=text name=filter[date_from] value='{$smarty.get.filter.date_from}'> 
<label>По: </label><input type=text name=filter[date_to] value='{$smarty.get.filter.date_to}'>
</div>
<input id="apply_action" class="button_green" type="submit" value="Применить">
</div>
</form>
</div>
{capture name=tabs} <li {if $status===0}class="active"{/if}><a href="{url module=OrdersAdmin status=0 keyword=null filter=null id=null page=null}">Новые</a></li> <li {if $status==1}class="active"{/if}><a href="{url module=OrdersAdmin status=1 keyword=null filter=null id=null page=null}">Приняты</a></li> <li {if $status==2}class="active"{/if}><a href="{url module=OrdersAdmin status=2 keyword=null filter=null id=null page=null}">Выполнены</a></li> <li {if $status==3}class="active"{/if}><a href="{url module=OrdersAdmin status=3 keyword=null filter=null id=null page=null}">Удалены</a></li> {if $keyword} <li class="active"><a href="{url module=OrdersAdmin keyword=$keyword id=null}">Поиск</a></li> {/if} {/capture}

В какой шаблон нужно добавлять?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...