我创建了一个带有标签按钮和页码的程序。所有功能几乎都正常工作,直到我注意到一个小问题。众所周知,标签总是突出显示您当前的标签。让我们说一下,如果你的标签是AZ字母和#表示家庭或主页,你的#是当前页面,主页面包括员工在您的数据库中注册由于我有页码(下一页和上一页),我将员工姓名/信息的数量或数量限制为5,说明屏幕上只应显示5条记录。
注意:我的代码正常运行,但有1个问题出现了问题。每当我点击下一个按钮查看其他员工列表时, # 标签不会突出显示,因为您在同一页面中,它仍然会突出显示。有谁知道这是什么原因以及如何解决它?我很抱歉,如果不是那么清楚,因为它很难解释。
示例:(想象一下这个窗口)让我们说限制是= 2
**#** A B C D E F G H I J K L M N O P Q R S T U V W X Y Z //this is the tabs button, notice the # is highlighted employee_id : employee_name : employee_age 1 chel 26 2 brandon 35 **PREV** **NEXT** //this is the page number
当我尝试单击下一个以查看主页面中的下一个员工时,页面如下所示:
# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z //notice the # is NOT highlighted after you click next employee_id : employee_name : employee_age 3 charlie 28 4 sasha 24 **PREV** **NEXT**
我希望我在这个简单的插图中解决了我的问题。我希望有人可以帮助我。感谢
//this is my tabs codes
<?php
function toc_menu($current){
$return ='<ol id="toc">
'."\n";
$return .= ($current=='') ? '<li class="current"><a href="index.php?namelist=%"><span>#</span></a></li>'."\n" : '<li><a href="index.php"><span>#</span></a></li>'."\n";
foreach(range('a','z') as $link){
$return .= ($current==$link) ? '<li class="current"><a href="index.php?namelist='.$link.'"><span>'.strtoupper($link).'</span></a></li>'."\n" : '<li><a href="index.php?namelist='.$link.'"><span>'.strtoupper($link).'</span></a></li>'."\n";
}
$return .="</ol>\n";
return $return;
}
if(isset($_GET['namelist']))
{
$current=$_GET['namelist'];
}
else
{$current='';
}
//echo where you want the menu
if(isset($_GET['namelist'])) {
echo toc_menu(strtolower($_GET['namelist']));
$tocmenu = toc_menu(strtolower($_GET['namelist']));
} else {
echo toc_menu(strtolower(''));
}
//or hold it in a variable to display later on
?>
//and this is my page_number codes:
<?php if ($offset>=1)
{ // bypass PREV link if offset is 0
$prevoffset=$offset-$limit;
print "<a href=\"".htmlentities($_SERVER['PHP_SELF'])."?offset=$prevoffset&searchfile=$search&namelist=$listname\"/>Prev</a> ";
}
echo '</td>
<td colspan ="5" height ="20" align="right"';
// check to see if last page
if (!($offset+$limit > $total))
{
// not last page so give NEXT link
if ($offset == 1)
{
$newoffset=$offset+($limit-1);
}
else
{
$newoffset=$offset+$limit;
}
print "<a href=\"".htmlentities($_SERVER['PHP_SELF'])."?offset=$newoffset&searchfile=$search&namelist=$listname\">Next</a> ";
}
?>
请注意: 我的变量 namelist 用于A-Z变量 搜索文件用于我的搜索按钮 MisaChan
答案 0 :(得分:0)
在努力解决这段很长的代码后,我看到的唯一可能导致问题的是$listname
如果listname不是字母,则代码将无效。
这是我的建议,因为你的代码没有按字母顺序排序,你应该考虑使用数字代替。 A-Z将是1到10或1 to total pages
它更有意义,
这是一个我用来轻松处理分页的课程
class Pagination {
public $current_page;
public $per_page;
public $page_count;
public function __construct($page=1,$per_page= 15, $total_count=0) {
$this->current_page = $page;
$this->per_page = $per_page;
$this->total_count = $total_count;
}
public function offset() {
return ($this->current_page -1)* $this->per_page;
}
public function total_pages () {
return ceil($this->total_count/ $this->per_page);
}
public function previous_page () {
return $this->current_page -1;
}
public function next_page () {
return $this->current_page +1;
}
public function has_previous_page () {
return $this->previous_page() >= 1? true : false;
}
public function has_next_page () {
return $this->next_page() <= $this->total_pages()? true : false;
}
// edit this section to suit your needs
public function format_output ($link,$query) {
if ($this->total_pages() > 1) {
$output = "<div id=\"pagination\"><p>";
$output .= ($this->has_previous_page())? ("<a href=\"/$link/".$this->previous_page()."/{$query}\" >Previous</a>"): "";
$c = $this->current_page;
$t = $this->total_pages();
for ( $i = 1; $i <= $t; $i++ )
{
if ($this->current_page == $i) {
$output .= " <a class=\"active\" href=\"#\" >{$i}</a> ";
}else {
$output .= " <a href=\"/$link/{$i}/{$query}\" >{$i}</a> ";
//$output .= " <a href=\"$link?q={$query}&page={$i}\" >{$i}</a> ";
}
}
$output .= (($t ==$this->total_pages())?"":' ... ');
$output .= ($this->has_next_page())? ("<a href=\"/$link/".$this->next_page()."/{$query}\" >Next</a>"): "";
$output .= "</p></div>";
}else {
$output = "<div id=\"pagination\"><p>Displaying all results.</p></div>";
}
return $output;
}
}
?>
以下是我如何使用它。
// your listname in numbers
$currentPage = isset($_GET['currentPage'])? $_GET['currentPage']: 1; // page number
$limit =2; // you decided to limit 2 per page
$total = 10; // the total result available in all pages
$pagination = new Pagination($currentPage, $limit,$total);
// if you need the the value of how many to offset for the current page
$offset = $pagination->offset(); // example page 6 will return 12
// and to display the pagination simply echo this
echo $pagination->format_output(htmlentities($_SERVER['PHP_SELF']),'other values u want to pass');
这将自动为您创建上一个和下一个按钮
我希望这能帮助您解决问题