php中当前选项卡和页码的问题 [英] Problems with current tab and page numbers in php

查看:31
本文介绍了php中当前选项卡和页码的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在那里我创建了一个带有标签按钮和页码的程序.所有功能几乎都能正常工作,直到我注意到一个小问题.众所周知,选项卡总是突出显示您所在的当前选项卡.让我们说如果您的选项卡是 AZ 字母和表示主页或主页的 #,而您的 # 是当前页面,主页由列表组成在您的数据库中注册的员工.由于我有页码(下一页和上一页),我将员工姓名/信息的数量或数量限制为 5,声明屏幕上只应显示 5 条记录.

there i have created a program with a tab button and page number. all functions are almost working properly until i noticed one tiny problem. as we all know, tabs always highlights the current tab you are in. let us say if your tabs are A-Z letters and a # that means home or mainpage, and your # is the current page, and the main pages consist of the list of employees registered in your database. since i have page number (Next and Previous), i have limited the amount or number of employee names/information by 5 stating that only 5 records should appear on the screen.

注意:我的代码正在运行,但漏掉了 1 个问题.每次我点击下一个按钮查看其他员工列表时,# 选项卡都没有突出显示,因为您在同一页面中,因此它应该仍然突出显示.有谁知道这是什么原因以及如何解决它?如果不是很清楚,我很抱歉,因为它很难解释.

note: my code is working, but 1 problem slipped. everytime i clicked on the next button to see the other list of employees,the # tab is not highlighted wherein its suppose to still be highlighted since you are in the same page. Does anyone knows what cause this and how to fix it? im sorry if it is not that clear since it is so hard to explain.

示例:(想象一下这个窗口)让我们说极限是 = 2

example:(IMAGINE THIS AS THE WINDOW) let us say the limit is = 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

我希望我在这个简单的插图中解决了我的问题.我希望有人可以帮助我.谢谢

when i try to click next to view the next employee in the main page, the page looks like this:


# 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**

    '."\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 .="

i hope i cleared up my problem in this simple illustration. i hope someone could help me. thanks

\n";返回 $return;}if(isset($_GET['namelist'])){$current=$_GET['namelist'];}别的{$current='';}//echo你想要菜单的地方if(isset($_GET['namelist'])) {echo toc_menu(strtolower($_GET['namelist']));$tocmenu = toc_menu(strtolower($_GET['namelist']));} 别的 {echo toc_menu(strtolower(''));}//或将其保存在一个变量中以便稍后显示?>//这是我的page_number代码:<?php if ($offset>=1){//如果偏移量为 0,则绕过 PREV 链接$prevoffset=$offset-$limit;打印 "<a href=\"".htmlentities($_SERVER['PHP_SELF'])."?offset=$prevoffset&searchfile=$search&namelist=$listname\"/>Prev</a> &nbsp;";}回声'</td><td colspan ="5" height ="20" align="right"';//检查是否是最后一页如果 (!($offset+$limit > $total)){//不是最后一页所以给 NEXT 链接如果 ($offset == 1){$newoffset=$offset+($limit-1);}别的{$newoffset=$offset+$limit;}打印 "<a href=\"".htmlentities($_SERVER['PHP_SELF'])."?offset=$newoffset&searchfile=$search&namelist=$listname\">Next</a> &nbsp;";}?>

//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> &nbsp;"; } 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> &nbsp;"; } ?>

注意:我的变量 namelist 用于 A-Z 变量searchfile 用于我的搜索按钮陈美莎

TAKE NOTE: My variable namelist is used for the A-Z variable the searchfile is for my search button MisaChan

推荐答案

在处理了这么长的一段代码之后,我发现唯一可能导致问题的是 $listname

After struggling with this long piece of code the only thing that i see that can be causing an issue is $listname

如果 listname 不是字母,您的代码将不起作用.

if listname is not a letter your code will not work.

这是我的建议,因为您的代码不是按字母顺序排序的,您应该考虑使用数字代替.A-Z 将是 1 到 10 或 1 到总页数 这更有意义,

here is what i suggested, since your code is not sorted alphabetically you should consider using numbers instead. A-Z will be 1 to 10 or 1 to total pages it makes much more sense,

这是一个我用来轻松处理分页的类

here is a class that i use to handle pagination easily

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

这将自动为您创建上一个和下一个按钮

This will automatically create the previous and next button for you

希望能帮到你解决问题

这篇关于php中当前选项卡和页码的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆