現在、私はオフィスサポートシステムにHelpDeskZを使用しています。 しかし、チケットを検索する検索機能が動作しないことがわかりました。 申し訳ありませんが、まだPHPの初心者です。PHPでURLを変更する方法
これはそのfilter_bar.htmlファイル内の検索フォームのコードです:
<form method="get" action="{{ getUrl(controller,'tickets',null,'#searchtab')|raw }}">
<input type="hidden" name="do" value="search" />
<table width="100%" class="widget-table-form">
<tr>
<td>{{ LANG.SEARCH_IN }}:</td>
<td></td>
</tr>
<tr>
<td align="right">
\t <select name="criteria">
<option value="code" {% if input.g.criteria == 'code' %}selected{% endif %}>{{ LANG.TICKET_ID }}</option>
<option value="subject" {% if input.g.criteria == 'subject' %}selected{% endif %}>{{ LANG.SUBJECT }}</option>
<option value="email" {% if input.g.criteria == 'email' %}selected{% endif %}>{{ LANG.EMAIL }}</option>
<option value="name" {% if input.g.criteria == 'name' %}selected{% endif %}>{{ LANG.NAME }}</option>
</select>
</td>
<td>
<input type="text" name="criteria_value" style="width:100%" value="{{ input.g.criteria_value }}" />
</td>
</tr>
<tr>
<td align="right">{{ LANG.STATUS }}:</td>
<td><select name="status">
<option value="">{{ LANG.ANY_STATUS }}</option>
{% for id, name in ticket_status %}
{% if input.g.status == id %}
<option value="{{ id }}" selected>{{ name }}</option>
{% else %}
<option value="{{ id }}">{{ name }}</option>
{% endif %}
{% endfor %}
</select>
</td>
</tr>
<tr>
<td align="right">{{ LANG.DEPARTMENT }}:</td>
<td><select name="department_id">
<option value=""></option>
{% for id, name in departments %}
{% if input.g.department_id == id %}
<option value="{{ id }}" selected>{{ name }}</option>
{% else %}
<option value="{{ id }}">{{ name }}</option>
{% endif %}
{% endfor %}
</select></td>
</tr>
<tr>
<td align="right">{{ LANG.PRIORITY }}:</td>
<td><select name="priority_id">
<option value=""></option>
{% for key in priority %}
{% if input.g.priority_id == key.id %}
<option value="{{ key.id }}" selected>{{ key.name }}</option>
{% else %}
<option value="{{ key.id }}">{{ key.name }}</option>
{% endif %}
{% endfor %}
</select></td>
</tr>
<tr>
<td align="right">{{ LANG.FROM }}:</td>
<td><input type="text" name="date_from" id="date_from" value="{{ input.g.date_from }}" /></td>
</tr>
<tr>
<td align="right">{{ LANG.TO }}:</td>
<td><input type="text" name="date_to" id="date_to" value="{{ input.g.date_to }}" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="btn" value="{{ LANG.SEARCH }}" /></td>
</tr>
</table>
</form>
しかし、私は、検索ボタンをクリックしたときに、それが行くだろう:
調査を行った後、URLが正しくありません。 それが必要だに行く:?あなたが見ることができるように
、別のパラメータがあるhttp://localhost/support/ URL、後にあり、V =スタッフ&アクション=チケット
Iコントローラフォルダ内のtickets_action.phpで検索しようとしましたが、編集方法はわかりません。 これはコントローラです:
<?php
/**
* @package HelpDeskZ
* @website: http://www.helpdeskz.com
* @community: http://community.helpdeskz.com
* @author Evolution Script S.A.C.
* @since 1.0.0
*/
//Query String
$getvar = $_SERVER['QUERY_STRING'];
//Ticket Status
$ticket_status = array(1 => $LANG['OPEN'], 2 => $LANG['ANSWERED'], 3 => $LANG['AWAITING_REPLY'], 4 => $LANG['IN_PROGRESS'], 5 => $LANG['CLOSED']);
$template_vars['ticket_status'] = $ticket_status;
//Status Color
$statuscolor = array('1' => '#008000',
\t \t \t \t \t '2' => '#b84764',
\t \t \t \t \t '3' => '#ff8000',
\t \t \t \t \t '4' => '#53a9ff',
\t \t \t \t \t '5' => '#333333', \t \t \t \t \t \t
\t \t \t \t \t);
//Departments
$q = $db->query("SELECT * FROM ".TABLE_PREFIX."departments");
$departments = array();
while($r = $db->fetch_array($q)){
\t if(in_array($r['id'],$staff_departments)){
\t \t $departments[$r['id']] = $r['name'];
\t }else{
\t \t $exceptiondep_query .= " AND department_id!={$r['id']}";
\t }
}
$template_vars['departments'] = $departments;
//Priority
$q = $db->query("SELECT * FROM ".TABLE_PREFIX."priority");
while($r = $db->fetch_array($q)){
\t $priority[$r['id']] = $r;
}
$template_vars['priority'] = $priority;
//Filter bar
$filter_query = ($exceptiondep_query == ''?'':'WHERE '.substr($exceptiondep_query, 4));
$totalticket = $db->query("SELECT status, department_id, COUNT(id) as total FROM ".TABLE_PREFIX."tickets {$filter_query} GROUP by status, department_id");
while($r = $db->fetch_array($totalticket)){
\t $total_dep[$r['department_id']][$r['status']] = $r['total'];
}
$searchurl = getUrl($controller,'tickets',null,'do=search&');
foreach($departments as $dep_id => $dep_name){
\t $data = array('id' => $dep_id, 'pId' => 0, 'name' => '<strong>'.$dep_name.'</strong>', 'open' => 'true', 'isParent' => 'true','url' => $searchurl.'department_id='.$dep_id, 'target' => '_parent');
\t
\t $data1 = array('id' => $dep_id.'1', 'pId' => $dep_id, 'name' => $LANG['OPEN'].' '.($total_dep[$dep_id]['1'] != ''?'<span class="fancytree_descr">('.$total_dep[$dep_id]['1'].')</span>':''), 'url' => $searchurl.'status=1&department_id='.$dep_id, 'target' => '_parent');
\t
\t $data2 = array('id' => $dep_id.'2', 'pId' => $dep_id, 'name' => $LANG['AWAITING_REPLY'].' '.($total_dep[$dep_id]['3'] != ''?'<span class="fancytree_descr">('.$total_dep[$dep_id]['3'].')</span>':''), 'url' => $searchurl.'status=3&department_id='.$dep_id, 'target' => '_parent');
\t
\t $data3 = array('id' => $dep_id.'3', 'pId' => $dep_id, 'name' => $LANG['IN_PROGRESS'].' '.($total_dep[$dep_id]['4'] != ''?'<span class="fancytree_descr">('.$total_dep[$dep_id]['4'].')</span>':''), 'url' => $searchurl.'status=4&department_id='.$dep_id, 'target' => '_parent');
\t
\t $data4 = array('id' => $dep_id.'4', 'pId' => $dep_id, 'name' => $LANG['ANSWERED'].' '.($total_dep[$dep_id]['2'] != ''?'<span class="fancytree_descr">('.$total_dep[$dep_id]['2'].')</span>':''), 'url' => $searchurl.'status=2&department_id='.$dep_id, 'target' => '_parent');
\t
\t $data5 = array('id' => $dep_id.'5', 'pId' => $dep_id, 'name' => $LANG['CLOSED'].' '.($total_dep[$dep_id]['5'] != ''?'<span class="fancytree_descr">('.$total_dep[$dep_id]['5'].')</span>':''), 'url' => $searchurl.'status=5&department_id='.$dep_id, 'target' => '_parent');
\t $filter_bar .= json_encode($data).','.json_encode($data1).','.json_encode($data2).','.json_encode($data3).','.json_encode($data4).','.json_encode($data5).',';
}
$template_vars['filter_bar'] = $filter_bar;
if($params[0] == 'view' && is_numeric($params[1])){
\t include(CONTROLLERS.'staff/params/tickets_view.php');
}elseif($params[0] == 'canned'){
\t include(CONTROLLERS.'staff/params/tickets_canned.php');
}
$search_query = '';
if($input->g['do'] == 'search'){
\t if(array_key_exists($input->g['status'],$ticket_status)){
\t \t $search_query .= "status='".$db->real_escape_string($input->g['status'])."' AND ";
\t }else{
\t \t $search_query .= "status!='test' AND ";
\t }
\t if(array_key_exists($input->g['department_id'],$departments) && in_array($input->g['department_id'], $staff_departments)){
\t \t $search_query .= "department_id='".$db->real_escape_string($input->g['department_id'])."' AND ";
\t }
\t if(array_key_exists($input->g['priority_id'],$priority)){
\t \t $search_query .= "priority_id='".$db->real_escape_string($input->g['priority_id'])."' AND ";
\t }
\t if(!empty($input->g['date_from'])){
\t \t $daterange = daterange($input->g['date_from']);
\t \t if($daterange != ''){
\t \t \t $date_from = $daterange[0];
\t \t \t $search_query .= "date>='$date_from' AND ";
\t \t } \t
\t }
\t if(!empty($input->g['date_to'])){
\t \t $daterange = daterange($input->g['date_to']);
\t \t if($daterange != ''){
\t \t \t $date_to = $daterange[1]; \t
\t \t \t $search_query .= "date<='$date_to' AND ";
\t \t } \t
\t }
\t if(!empty($input->g['criteria_value'])){
\t \t switch($input->g['criteria']){
\t \t \t case 'code':
\t \t \t $search_query .= "code='".$db->real_escape_string($input->g['criteria_value'])."' AND ";
\t \t \t break;
\t \t \t case 'subject':
\t \t \t $search_query .= "subject LIKE '%".$db->real_escape_string($input->g['criteria_value'])."%' AND ";
\t \t \t break;
\t \t \t case 'name':
\t \t \t $search_query .= "fullname LIKE '%".$db->real_escape_string($input->g['criteria_value'])."%' AND ";
\t \t \t break;
\t \t \t case 'email':
\t \t \t $search_query .= "email='".$db->real_escape_string($input->g['criteria_value'])."' AND ";
\t \t \t break;
\t \t }
\t }
}
if($search_query){
\t $search_query = substr($search_query,0,-5); \t
}else{
\t $search_query = "status!='5' AND status!='2'";
}
\t \t \t
if($params[0] == 'page'){
\t $page = (!is_numeric($params[1])?1:$params[1]);
}else{
\t $page = 1; \t
}
$order_list = array('code', 'subject', 'last_replier', 'replies', 'priority_id', 'last_update', 'department_id', 'status');
$orderby = (in_array($params[2],$order_list)?$params[2]:'last_update');
$sortby = ($params[3] == 'asc'?'asc':'desc');
if($input->p['do'] == 'update'){
\t if(verifyToken('tickets', $input->p['csrfhash']) !== true){
\t \t $error_msg = $LANG['CSRF_ERROR']; \t
\t }elseif(!is_array($input->p['ticket_id'])){
\t \t $error_msg = $LANG['NO_SELECT_TICKET']; \t
\t }else{
\t \t foreach($input->p['ticket_id'] as $k){
\t \t \t if(is_numeric($k)){
\t \t \t \t $ticketid = $db->real_escape_string($k);
\t \t \t \t if($input->p['remove'] == 1){
\t \t \t \t \t $db->delete(TABLE_PREFIX."tickets", "id='$ticketid'"); \t \t \t \t \t \t
\t \t \t \t \t $db->delete(TABLE_PREFIX."tickets_messages", "ticket_id='$ticketid'"); \t \t
\t \t \t \t \t removeAttachment($ticketid,'tickets'); \t \t \t
\t \t \t \t }else{
\t \t \t \t \t if(array_key_exists($input->p['department'],$departments)){
\t \t \t \t \t \t $db->query("UPDATE ".TABLE_PREFIX."tickets SET department_id='".$db->real_escape_string($input->p['department'])."' WHERE id='$ticketid'");
\t \t \t \t \t }
\t \t \t \t \t if(array_key_exists($input->p['status'],$statuscolor)){
\t \t \t \t \t \t $db->query("UPDATE ".TABLE_PREFIX."tickets SET status='".$db->real_escape_string($input->p['status'])."' WHERE id='$ticketid'");
\t \t \t \t \t }
\t \t \t \t \t if(array_key_exists($input->p['priority'],$priority)){
\t \t \t \t \t \t $db->query("UPDATE ".TABLE_PREFIX."tickets SET priority_id='".$db->real_escape_string($input->p['priority'])."' WHERE id='$ticketid'");
\t \t \t \t \t }
\t \t \t \t }
\t \t \t }
\t \t }
\t \t header('location: '.getUrl($controller,$action,array('page',$page,$orderby,$sortby),$getvar));
\t \t exit;
\t }
}
$max_results = $settings['page_size'];
$count = $db->fetchOne("SELECT COUNT(*) AS NUM FROM ".TABLE_PREFIX."tickets WHERE {$search_query} {$exceptiondep_query}");
$total_pages = ceil($count/$max_results); \t
$page = ($page>$total_pages?$total_pages:$page);
$from = ($max_results*$page) - $max_results;
$q = $db->query("SELECT * FROM ".TABLE_PREFIX."tickets WHERE {$search_query} {$exceptiondep_query} ORDER BY {$orderby} {$sortby} LIMIT $from, $max_results");
$todayis = time();
while($r = $db->fetch_array($q)){
\t $trzebra = ($trzebra == ''?1:'');
\t $timeleft = $todayis-$r['last_update'];
\t $overdue = ($timeleft >=($settings['overdue_time']*60*60) && ($r['status'] == '1' || $r['status'] == '2' || $r['status'] == '4')?1:0);
\t if($overdue == 1){
\t \t $colortime = '#ff0000';
\t \t $tdclass = 'troverdue';
\t }else{
\t \t $colortime = '#8bb467';
\t \t $tdclass = ($trzebra == 1?'trzebra':''); \t \t \t \t \t
\t }
\t
\t $days = floor($timeleft/86400);
\t $hours = floor($timeleft/3600)-($days*24);
\t $minutes = floor($timeleft/60)-($days*24*60)-($hours*60);
\t $seconds = $timeleft-($days*24*60*60)-($hours*60*60)-($minutes*60);
\t $r['lastupdate'] = ($days?$days.'d ':'').($hours?$hours.'h ':'').($minutes?$minutes.'m ':'').($days?'':$seconds.'s');
\t $r['priority'] = $priority[$r['priority_id']]['name'];
\t $r['priority_color'] = $priority[$r['priority_id']]['color'];
\t $r['color_time'] = $colortime;
\t $r['td_class'] = $tdclass;
\t $tickets[] = $r;
}
$template_vars['total_tickets'] = $count;
$template_vars['tickets'] = $tickets;
$template_vars['total_pages'] = $total_pages;
$template_vars['page'] = $page;
$template_vars['orderby'] = $orderby;
$template_vars['sortby'] = $sortby;
$template_vars['getvar'] = $getvar;
$template_vars['error_msg'] = $error_msg;
$template_vars['statuscolor'] = $statuscolor;
$template = $twig->loadTemplate('tickets.html');
echo $template->render($template_vars);
$db->close();
exit;
?>
任意のアイデアをどのように正しいものにURLを変更するには?
ありがとうございました!
NB:コードをダウンロードするには、https://github.com/evolutionscript/HelpDeskZ-1.0/archive/master.zipを参照してください。
おかげで仲間!私はちょうどそれが隠された入力を使用して実現した – CoolTips2u