0

I have a custom page template and I found a a PHP snippet that create a pagination in html table. But the code is not working properly.

UPDATE: I change the code. But still the code is not working correctly, when I click on the 2nd page, the 2nd page displayed a blank page only.

if (isset($_POST['list_position']) && $_POST['list_position'] != 'Select by Position'){
    $list_position= $_POST['list_position'];
    $result_position= $wpdb->get_results($wpdb->prepare("SELECT DISTINCT id, submit_time, last_name, first_name, middle_name, mobile_number, email, location, position, message, attachment_resume_id FROM resume_databank WHERE position= '" . $list_position . "' ORDER BY position ASC", OBJECT));

$rows_per_page = 3;
$current = (intval(get_query_var('paged'))) ? intval(get_query_var('paged')) : 1;

global $wp_rewrite;

$pagination_args = array(
    'base' => @add_query_arg('paged','%#%'),
    'format' => '',
    'total' => ceil(sizeof($result_position)/$rows_per_page),
    'current' => $current,
    'show_all' => false,
    'type' => 'plain',
);

if( $wp_rewrite->using_permalinks())
    $pagination_args['base'] = user_trailingslashit(trailingslashit(remove_query_arg('s',get_pagenum_link(1))) . 'page/%#%/', 'paged');

if( !empty($wp_query->query_vars['s']))
    $pagination_args['add_args'] = array('s'=>get_query_var('s'));
    echo paginate_links($pagination_args);

$start = ($current - 1) * $rows_per_page;
$end = $start + $rows_per_page;
$end = (sizeof($result_position) < $end) ? sizeof($result_position) : $end;

    echo '<table id="paginate_result">';
        echo '<tr>';
        $optionId = 0;
        echo '<th>Submit Time</th>';
        echo '<th>Last Name</th>';
        echo '<th>First Name</th>';
        echo '<th>Middle Name</th>';
        echo '<th>Mobile Number</th>';
        echo '<th>Email</th>';
        echo '<th>Location</th>';
        echo '<th>Position</th>';
        echo '<th>Message</th>';
        echo '<th>Resume</th>';
        echo '<th>Processed?</th>';
        //foreach ($result_position as $record_s){
            for ($i=$start;$i < $end ;++$i ) {
            $row = $result_position[$i];
            $optionId++;
            echo '<tr>';
            echo '<td id="submit_time">' . $result_position[0]->submit_time . '</td>';
            echo '<td id="last_name">' . $result_position[0]->last_name . '</td>';
            echo '<td id="first_name">' . $result_position[0]->first_name . '</td>';
            echo '<td id="middle_name">' . $result_position[0]->middle_name . '</td>';
            echo '<td id="mobile_number">' . $result_position[0]->mobile_number . '</td>';
            echo '<td id="email">' . $result_position[0]->email . '</td>';
            echo '<td id="location">' . $result_position[0]->location . '</td>';
            echo '<td id="position">' . $result_position[0]->position . '</td>';
            echo '<td id="message">' . $result_position[0]->message . '</td>';
            echo '<td id="resumeFile'.$optionId.'"><a href=' . wp_get_attachment_url($result_position[0]->attachment_resume_id) . '>Download Resume</a></td>';
            echo '<td id="radioOption><label for="Yes">Yes</label>
                      <input type="radio" id="processedOptionYes'.$optionId.'" name="processedOption" value="Yes" onclick="proccessedCheck('.$optionId.',\'Yes\')"/>
                      <label for="No">No</label>
                      <input type="radio" id="processedOptionNo'.$optionId.'" name="processedOption" value="No" onclick="proccessedCheck('.$optionId.',\'No\')"/></td>';
            echo '</tr>';
        }
        echo '</table>';
  • Share your query with limit clause. Are you getting any error message when you access second page or empty result? If so, make sure you have result in the second page. – Karthikeyani May 24 '16 at 7:06
  • I dont get any error when I click on the 2nd page – User014019 May 24 '16 at 7:12
1

You should get total and result array separately. Total is to create the page numbers and result array will give you limited data for each pages. Refer the below code.

if (isset($_POST['list_position']) && $_POST['list_position'] != 'Select by Position'){
    $list_position= $_POST['list_position'];
    $totalPosition= $wpdb->get_var("SELECT count(id) FROM resume_databank WHERE position= '" . $list_position . "' ORDER BY position ASC");
$rows_per_page = 3;
$current = (intval(get_query_var('paged'))) ? intval(get_query_var('paged')) : 1;

global $wp_rewrite;

$pagination_args = array(
    'base' => @add_query_arg('paged','%#%'),
    'format' => '',
    'total' => ceil(sizeof($totalPosition)/$rows_per_page),
    'current' => $current,
    'show_all' => false,
    'type' => 'plain',
);

if( $wp_rewrite->using_permalinks())
    $pagination_args['base'] = user_trailingslashit(trailingslashit(remove_query_arg('s',get_pagenum_link(1))) . 'page/%#%/', 'paged');

if( !empty($wp_query->query_vars['s']))
    $pagination_args['add_args'] = array('s'=>get_query_var('s'));
    echo paginate_links($pagination_args);

$start = ($current - 1) * $rows_per_page;
$end = $start + $rows_per_page;
$end = ($totalPosition < $end) ? $totalPosition : $end;
$result_position= $wpdb->get_results($wpdb->prepare("SELECT DISTINCT id, submit_time, last_name, first_name, middle_name, mobile_number, email, location, position, message, attachment_resume_id FROM resume_databank WHERE position= '" . $list_position . "' ORDER BY position ASC LIMIT $start,$end", OBJECT));

    echo '<table id="paginate_result">';
        echo '<tr>';
        $optionId = 0;
        echo '<th>Submit Time</th>';
        echo '<th>Last Name</th>';
        echo '<th>First Name</th>';
        echo '<th>Middle Name</th>';
        echo '<th>Mobile Number</th>';
        echo '<th>Email</th>';
        echo '<th>Location</th>';
        echo '<th>Position</th>';
        echo '<th>Message</th>';
        echo '<th>Resume</th>';
        echo '<th>Processed?</th>';
        //foreach ($result_position as $record_s){
            for ($i=$start;$i < $end ;++$i ) {
            $row = $result_position[$i];
            $optionId++;
            echo '<tr>';
            echo '<td id="submit_time">' . $result_position[0]->submit_time . '</td>';
            echo '<td id="last_name">' . $result_position[0]->last_name . '</td>';
            echo '<td id="first_name">' . $result_position[0]->first_name . '</td>';
            echo '<td id="middle_name">' . $result_position[0]->middle_name . '</td>';
            echo '<td id="mobile_number">' . $result_position[0]->mobile_number . '</td>';
            echo '<td id="email">' . $result_position[0]->email . '</td>';
            echo '<td id="location">' . $result_position[0]->location . '</td>';
            echo '<td id="position">' . $result_position[0]->position . '</td>';
            echo '<td id="message">' . $result_position[0]->message . '</td>';
            echo '<td id="resumeFile'.$optionId.'"><a href=' . wp_get_attachment_url($result_position[0]->attachment_resume_id) . '>Download Resume</a></td>';
            echo '<td id="radioOption><label for="Yes">Yes</label>
                      <input type="radio" id="processedOptionYes'.$optionId.'" name="processedOption" value="Yes" onclick="proccessedCheck('.$optionId.',\'Yes\')"/>
                      <label for="No">No</label>
                      <input type="radio" id="processedOptionNo'.$optionId.'" name="processedOption" value="No" onclick="proccessedCheck('.$optionId.',\'No\')"/></td>';
            echo '</tr>';
        }
        echo '</table>';
  • the pagination is not displayed when I try your code – User014019 May 25 '16 at 5:43
  • Replace 'total' => ceil(sizeof($totalPosition)/$rows_per_page) with 'total' => ceil($totalPosition/$rows_per_page) and try. – Karthikeyani May 25 '16 at 5:47
  • still when i click the link to the 2nd page, i get a blank page only – User014019 May 25 '16 at 5:49
  • Come for the chat here chat.stackexchange.com/rooms/40254/karthikeyani – Karthikeyani May 25 '16 at 5:58
  • im in the chat room now – User014019 May 25 '16 at 6:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.