2016-07-15 14 views
0

現在、私はオフィスサポートシステムに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>

しかし、私は、検索ボタンをクリックしたときに、それが行くだろう:

http://localhost/support/?do=search&criteria=code&criteria_value=111&status=1&department_id=1&priority_id=1&date_from=&date_to=&btn=Search#searchtab

調査を行った後、URLが正しくありません。 それが必要だに行く:?あなたが見ることができるように

http://localhost/support/?v=staff&action=tickets&do=search&criteria=code&criteria_value=111&status=1&department_id=1&priority_id=1&date_from=&date_to=&btn=Search#searchtab

、別のパラメータがある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を参照してください。

答えて

2

私はこの問題の迅速な解決策を見つけたと思います。

ファイルを開く:ビュー/スタッフ/ filter_bar.htm

ライン46の後

<input type="hidden" name="do" value="search" /> 

が後にこれらの2行を追加します:

<input type="hidden" name="action" value="tickets" /> 
<input type="hidden" name="v" value="staff" /> 
+0

おかげで仲間!私はちょうどそれが隠された入力を使用して実現した – CoolTips2u

関連する問題