Нумерация страниц с помощью Javascript

0

Сообщество. В настоящее время у меня есть страница с разбивкой по страницам на странице, чтобы помочь пользователям на странице через зарегистрированные билеты. Чтобы помочь в этом, у меня есть две ячейки таблицы со следующими и предыдущими в каждом соответственно. Прямо сейчас, когда пользователь нажимает либо, он добавляет +1 или -1 к счетчику JS, что AJAX - строка. Затем у меня есть разбиение на страницы, которое либо переходит к следующему, либо предыдущему 15 элементам в моей базе данных mysql. Я написал свою JS, чтобы, если счетчик меньше 1, он вернется к одному. Таким образом, им не нужно многократно нажимать следующую кнопку, чтобы просмотреть билеты. Я пытаюсь найти способ сделать это с другого конца, где, если конец списка результатов пуст или больше результатов, он останется на последнем счетчике. PhP, включая начальную настройку таблицы и строковую переменную

include 'Search_Var.php';  //This file is used to build $sequel.
                           //$sequel is a string built by user selected search options
echo '<div style="display: none" id="Search_Var">'.$sequel.'</div>
<div class="container" style="clear: both;">
<fieldset>
<legend class="legend1"><h2> &nbsp Results &nbsp </h2></legend>
<div style="padding-top: 5px;">
<span id="page">';
include 'Search_Tickets.php';  // This file builds a table to show the first 15 results
                               // It also displays the total number of tickets found
                               // in the database matching the search query
echo '</span>';
if($openTicketsCount!=0) {include '********/***********/PreviousNext.inc.php';};
//If no tickets are available the Previous and Next boxes won't appear.
</fieldset>
</div>
</div>
';

Javascript

var count = 1;
$(window).on('load', function() {
    var id = document.getElementById( "Search_Var" ).innerText;
    $('.page').on('click', function() {
        var page = $(this).html();
        if(page == "Next")
        {
            count = count + 1;
        }
        if(page == "Previous")
        {
            count = count - 1;
        }
        if(count < 1)
        {
            count = 1;
        }
        $.get("/*******/********/Search_Pagination.inc.php?count_id=" + count + "&search_id=" + id, function(data) {
            $('#page').html(data);
        });
    });
});

Наконец, разбивка на страницы

$start = 0;
$per_page = 15;
$page = $_GET['selection_id'];
$_SESSION['role_id'] = $_GET['role_id'];
$_SESSION['bus_id'] = $_GET['bus_id'];
$_SESSION['dept_id'] = $_GET['dept_id'];
if($page <= 1)
{
    $start = 0;
}
else
{
    $start = $page * $per_page - $per_page;
}
$get_openTickets = $search;
$openTicketsCount = mysql_num_rows(mysql_query($get_openTickets));
$num_rows = mysql_num_rows(mysql_query($get_openTickets));
$num_pages = $num_rows / $per_page;
$get_openTickets .= " LIMIT $start, $per_page";
if($openTicketsCount !=true)
{
    echo '
    <td colspan = "9">No open tickets were found!</td>
    ';
}
else
{
    $result = mysql_query($get_openTickets);
    echo '
    <table class="openTickets" width="1150px" border="0px" padding="0px">
    <tr>
      <th scope="col">ID</th>
      <th scope="col" style="width:75px;">PRIORITY</th>
      <th scope="col">CALLER /<br />DEPARTMENT</th>
      <th scope="col">COMPANY NAME /<br />SALES REP</th>
      <th scope="col" style="width:75px;">CREATED<br />ON</th>
      <th scope="col" style="width:75px;">LAST<br />UPDATED</th>
      <th scope="col" style="width:75px;">SOURCE</th>
      <th scope="col">USER</th>
      <th scope="col">CATEGORY /<br />SUBCATEGORY</th>
    </tr>
';
    while(($openTicket = mysql_fetch_assoc($result)))
    {
        echo'
        <tr>
          <td><a href="?page=ViewTicket&ticket='.$openTicket['call_id'].'">'.$openTicket['call_id'].'</a></td>
          <td style="width:75px;">'.$openTicket['priority_name'].'</td
          <td>'.$openTicket['caller_name'].'<br />'.$openTicket['caller_dept'].'</td>
          <td>'.$openTicket['cust_name'].'<br />'.$openTicket['cust_rep'].'</td>
          <td style="width:75px;">'.$openTicket['created_on'].'</td>
          <td style="width:75px;">'.$openTicket['updated_on'].'</td>
          <td style="width:75px;">'.$openTicket['source_name'].'</td>
          <td>'.$openTicket['created_by'].'</td>
          <td>'.$openTicket['cat_name'].'<br />'.$openTicket['subcat_name'].'</td>
       </tr>';
   }
   echo '
   <tr>
     <th colspan="9" style="text-align:right;">Total Open Ticket(s): '.$openTicketsCount.'&nbsp;&nbsp;</th>
   </tr>
   </table>';
}
  • 0
    пожалуйста, отправьте jsfiddle
  • 1
    просто создайте функцию, которая возвращает количество результатов поиска, или в части рендеринга, просто визуализируйте скрытый ввод, который хранит счетчик результатов поиска, не помните никакой подкачки при выполнении подсчета, вы хотите, чтобы максимальный итог мог быть
Теги:

2 ответа

1
Лучший ответ

взгляните ниже

$start = 0;
$per_page = 15;
$page = $_GET['selection_id'];
$_SESSION['role_id'] = $_GET['role_id'];
$_SESSION['bus_id'] = $_GET['bus_id'];
$_SESSION['dept_id'] = $_GET['dept_id'];
if($page <= 1)
{
    $start = 0;
}
else
{
    $start = $page * $per_page - $per_page;
}
$get_openTickets = $search;
$openTicketsCount = mysql_num_rows(mysql_query($get_openTickets));
$num_rows = mysql_num_rows(mysql_query($get_openTickets));
$num_pages = $num_rows / $per_page;
$get_openTickets .= " LIMIT $start, $per_page";
if($openTicketsCount !=true)
{
    echo '
    <td colspan = "9">No open tickets were found!</td>
    ';
}
else
{
    $result = mysql_query($get_openTickets);
    echo '<input type="hidden" value="'.$num_pages.'" id="pageCount"/>
    <table class="openTickets" width="1150px" border="0px" padding="0px">
    <tr>
      <th scope="col">ID</th>
      <th scope="col" style="width:75px;">PRIORITY</th>
      <th scope="col">CALLER /<br />DEPARTMENT</th>
      <th scope="col">COMPANY NAME /<br />SALES REP</th>
      <th scope="col" style="width:75px;">CREATED<br />ON</th>
      <th scope="col" style="width:75px;">LAST<br />UPDATED</th>
      <th scope="col" style="width:75px;">SOURCE</th>
      <th scope="col">USER</th>
      <th scope="col">CATEGORY /<br />SUBCATEGORY</th>
    </tr>
';
    while(($openTicket = mysql_fetch_assoc($result)))
    {
        echo'
        <tr>
          <td><a href="?page=ViewTicket&ticket='.$openTicket['call_id'].'">'.$openTicket['call_id'].'</a></td>
          <td style="width:75px;">'.$openTicket['priority_name'].'</td
          <td>'.$openTicket['caller_name'].'<br />'.$openTicket['caller_dept'].'</td>
          <td>'.$openTicket['cust_name'].'<br />'.$openTicket['cust_rep'].'</td>
          <td style="width:75px;">'.$openTicket['created_on'].'</td>
          <td style="width:75px;">'.$openTicket['updated_on'].'</td>
          <td style="width:75px;">'.$openTicket['source_name'].'</td>
          <td>'.$openTicket['created_by'].'</td>
          <td>'.$openTicket['cat_name'].'<br />'.$openTicket['subcat_name'].'</td>
       </tr>';
   }
   echo '
   <tr>
     <th colspan="9" style="text-align:right;">Total Open Ticket(s): '.$openTicketsCount.'&nbsp;&nbsp;</th>
   </tr>
   </table>';
}

И затем измените это

var count = 1;
$(window).on('load', function() {
    var id = document.getElementById( "Search_Var" ).innerText;
    $('.page').on('click', function() {
        var page = $(this).html();
        if(page == "Next")
        {
            count = count + 1;
        }
        if(page == "Previous")
        {
            count = count - 1;
        }
        if(count < 1)
        {
            count = 1;
        }
        if(count > parseInt( $("#pageCount").val()))
        {
            count = parseInt($("#pageCount").val());
        }
        $.get("/*******/********/Search_Pagination.inc.php?count_id=" + count + "&search_id=" + id, function(data) {
            $('#page').html(data);
        });
    });
});

Редактировать:

Возможно, количество страниц не является целым числом, поэтому просто проверьте, что число страниц возвращает допустимое целое число, также добавлено parseInt, возможно, это причина, по которой он не работает

  • 0
    Я попробовал ваше предложение, как показано выше. Мне нравится идея в теории, но она не работает. Возможно ли, что pageCount находится на странице, к которой осуществляется адаптация?
  • 0
    Вы можете проверить, отображается ли этот элемент в браузере <input type="hidden" value="'.$num_pages.'" id="pageCount"/>
Показать ещё 4 комментария
0

Я не знаю, почему "Добавить комментарий" не показан для меня,

Но я хотел сказать не использовать функции mysql_ *

Попробуйте использовать что-то вроде PDO

Ещё вопросы

Сообщество Overcoder
Наверх
Меню