2013-10-03 34 views
0

社区,我目前在我的页面上有一些分页帮助用户页面查看已登录的门票。为了解决这个问题,我有两个分别带有Next和Previous的表格单元。现在,当用户点击任意一个时,它会向AJAX的一个字符串的JS计数器添加+1或-1。然后,我有我的分页,或者去我的mysql数据库中的下一个或前15个项目。我写了我的JS,所以如果计数器小于1,它会回到一个。这样他们不必重复点击下一个按钮来查看门票。我试图找出从另一端做到这一点的方法,如果结果列表的末尾是空白的,或者没有更多结果可用,它将停留在最后一个计数器。 比索包括初始表设置和字符串变量来自Javascript的帮助分页

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 – Rich

+1

刚刚创建返回搜索结果的数量,或在渲染部分,只呈现存储搜索结果的数量隐藏输入的功能,在做计数时,记得无分页,你想要的最大总数可以是 – Armand

回答

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>'; 
} 

而且一看n将这个

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可能是在正在被Ajax的页面上吗? –

+0

你可以检查这个元素是否呈现给浏览器: Armand

+0

是的,它正在渲染。如果有帮助,我正在使用IE 9。谢谢 –

0

我不知道为什么“添加注释”中没有显示我,

但我想说不使用的功能mysql_ *

尝试使用一些像PDO的事情