2015-06-07 2 views
0

Я пытаюсь написать плагин, который ищет таблицу SQL на основе ввода, предоставленного через форму. Мой код ...WordPress с пользовательским запросом

   global $table_name_log; 
       $pagenum = isset($_GET['pagenum']) ? absint($_GET['pagenum']) : 1; 
       $limit = 25; 
       $offset = ($pagenum - 1) * $limit; 

       $l_task=isset($_POST['l_task']) ? $_POST['l_task'] : "a"; 
       $l_val=$_POST['l_val']; if($l_val=="") { $l_task="a"; } 
       if($l_task=="d") 
       { 
        $criteria="where log.Doc_Number='{$l_val}'"; 
       } 
       elseif($l_task=="e") 
       { 
        $criteria="where log.Employee='{$l_val}'"; 
       } 
       else 
       { 
        $criteria=""; 
       } 
        $SQLQuery="SELECT em.ID, log.Date, em.Payroll, log.Doc_Number, doc.Doc_Name, doc.Replaced_By, log.Trainer, log.Log, log.Type 
          FROM {$table_name_log} log 
          join {$table_name_employee} em on log.Employee=em.ID 
          join {$table_name_documents} doc on log.Doc_Number=doc.Doc_Number 
          {$criteria} 
          order by log.Employee asc 
        "; 

       //Get total number of results 
       $results=$wpdb->get_results("{$SQLQuery}",ARRAY_A); 
       $search_total = $wpdb->num_rows; 

       //Limit results by page 
       $results=$wpdb->get_results("{$SQLQuery} LIMIT {$offset}, {$limit}",ARRAY_A); 
       if(! $results) 
       { 
        if($pagenum>1) 
        { 
         $pagenum=1; 
         $results=$wpdb->get_results("{$SQLQuery} LIMIT 0, {$limit}",ARRAY_A); 
        } 
       } 

Затем я показываю результаты запроса. В нижней части отображаемых результатов у меня есть этот код ...

   $total=$search_total; 
       $num_of_pages = ceil($total/$limit); 
       $page_links = paginate_links(array(
        'base' => add_query_arg('pagenum', '%#%'), 
        'format' => '', 
        'prev_text' => __('«', 'aag'), 
        'next_text' => __('»', 'aag'), 
        'total' => $num_of_pages, 
        'current' => $pagenum 
       )); 

       if ($page_links) { 
        echo '<div class="tablenav"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>'; 
       } 

Проблема заключается в том, что, хотя количество страниц подсчитывается правильно и страница 1 показывает правильные результаты; при выборе другой страницы он отображает результаты без $criteria, установленных $l_task. Как отредактировать код, чтобы ссылки на страницы отображали правильный запрос для использования для дополнительных страниц?

ответ

0

теперь работает путем добавления этого в верхней части ...

if(isset($_GET['l_task'])) { $_POST['l_task']=$_GET['l_task']; } 
if(isset($_GET['l_val'])) { $_POST['l_val']=$_GET['l_val']; } 

Затем я добавил это ...

'add_args' => array('l_task' => $_POST['l_task'], 'l_val' => $_POST['l_val']) 

к ...

$page_links = paginate_links(array(
    'base' => add_query_arg('pagenum', '%#%'), 
    'format' => '', 
    'prev_text' => __('&laquo;', 'aag'), 
    'next_text' => __('&raquo;', 'aag'), 
    'total' => $num_of_pages, 
    'current' => $pagenum, 
    'add_args' => array('l_task' => $_POST['l_task'], 'l_val' => $_POST['l_val']) 
));