2013年5月21日星期二

【转】 ZendStudio+ZendDebuger实现PHP的代码调试

1.安装ZendStudio6.1,很简单,按照向导即可。

2.从zend官方网站下载ZendDebuger.

http://downloads.zend.com/pdt/server-debugger/

ZendDebugger-5.2.14-cygwin_nt-i386.zip

3.解压缩ZendDebugger后,将对应版本的dll文件拷贝到php的ext目录下。

4.修改php的配置文件:php.ini

添加如下的内容:

[zend]
zend_extension_ts=C:\AppServ\php5\ext\ZendDebugger.dll
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always

5.重新启动web服务器,使用phpinfo()函数测试。看到如下如下内容:

Zend Debugger

Passive Mode Timeout 20 seconds

Directive Local Value Master Value
zend_debugger.allow_hosts 127.0.0.1 127.0.0.1
zend_debugger.allow_tunnel no value no value
zend_debugger.connect_password no value no value
zend_debugger.deny_hosts no value no value
zend_debugger.expose_remotely always always
zend_debugger.httpd_uid -1 -1
zend_debugger.max_msg_size 2097152 2097152
zend_debugger.tunnel_max_port 65535 65535
zend_debugger.tunnel_min_port 1024 1024

6.使用ZendStudio即可实现本地和远程调试PHP代码了。

7.附件中为ZendDebugger。

摘自:http://blog.opendigest.org/archives/?article-1.html

【转】phpeclispe+xampp+zenddebuger安装配置到调试

摘自:http://icrwen.iteye.com/blog/609079

1phpeclise 到对应地址http://www.eclipse.org/downloads/下 载Eclipse for PHP Developers (eclipse-php-galileo-SR2-win32.zip),解压即可 或者打开eclipse3.2, Help -> Software Updates -> Find and Install -> Search for new features to install -> New Remote Site -> http://phpeclipse.sourceforge.net/update/releases 

2.安装好phpeclipse后,到对应地址http://www.apachefriends.org/zh_cn/xampp-windows.html下载xampp-win32-1.7.0-installer.exe ,注意为了使其中的php能够匹配PDT(目前只有5.2.x版本,所以下载的是1.7.0.。下载后安装。安装后配置phpeclise:
  Window -> Preferences -> PHPeclipse Web Development -> PHP External Tools -> XAMPP

3.配置好虚拟目录
添加虚拟目录和默认首页: 默认站点主目录为Apache的htdocs目录。由于要在D:\php_workspace下放置所有的Eclipse工程,因此为了能够访问到各个工 程下面的php文件,需要建立一个虚拟目录指向eclipse工程所在目录。修改httpd.conf,在文件结尾添加:

Alias /Workspace/ "D:/php_workspace/" 
<Directory "D:/php_workspace/"> 
   Options Indexes MultiViews 
   AllowOverride None 
   Order allow,deny 
   Allow from all 
</Directory> 
    这样做的好处是,所有php工程都共享一个apache配置,通过   http://localhost/Workspace/ProjectDirectory即可访问相应工程下面的php文件。

4.zenddebuger
   从http://downloads.zend.com/pdt/server-debugger/下载ZendDebugger-5.2.14-cygwin_nt-i386.zip,解压后将对应zenddebuger拷贝到windows/system32下,或者设置环境变量path指定目录。
  并且设置xampp->apache->bin->php.ini
    [Zend]
zend_extension_ts="ZendDebugger.dll"
;zend_extension_ts = "E:\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
zend_extension_manager.optimizer_ts = "E:\xampp\php\zendOptimizer\lib\Optimizer"
zend_optimizer.enable_loader = 0
zend_optimizer.optimization_level=15
;zend_optimizer.license_path =
zend_debugger.allow_hosts=127.0.0.1  192.168.0.163
zend_debugger.expose_remotely=always
; Local Variables:
; tab-width: 4
; End:

成功后运行phpinfo();页面下方会出现zenddebuger列表

[Zend]
zend_extension_manager.optimizer_ts="..\ZendOptimizer"
;zend_extension_ts="..\..\ZendOptimizer\ZendExtensionManager.dll"
zend_extension_ts="E:\PHPnow\php-5.2.10-Win32\ext\ZendDebugger.dll"
zend_debugger.allow_hosts=127.0.0.1,192.168.0.163
zend_debugger.expose_remotely=always

注意:phpnow 中则php.ini是php-5.2.x-Win32->php-apache2handler.ini

5.phpeclise配置PDT
   Window -> Preferences -> php->debug各项配置,尤其是php exectutable配置好,
   然后再在run->debug configuration->Test Debuger如果提示成功则zenddebuger配置成功!


可参考http://blog.csdn.net/webflash/archive/2009/06/05/4245038.aspx

【转】端口查看&关闭进程及Kill使用

端口查看&关闭进程及Kill使用
 
1、Windows平台 
windows命令行窗口下执行: 
1.查看所有的端口占用情况 
C:\>netstat -ano 
 
  协议    本地地址                     外部地址               状态                   PID 
  TCP    127.0.0.1:1434         0.0.0.0:0              LISTENING       3236 
  TCP    127.0.0.1:5679         0.0.0.0:0              LISTENING       4168 
  TCP    127.0.0.1:7438         0.0.0.0:0              LISTENING       4168 
  TCP    127.0.0.1:8015         0.0.0.0:0              LISTENING       1456 
  TCP    192.168.3.230:139      0.0.0.0:0              LISTENING       4 
  TCP    192.168.3.230:1957     220.181.31.225:443     ESTABLISHED     3068 
  TCP    192.168.3.230:2020     183.62.96.189:1522     ESTABLISHED     1456 
  TCP    192.168.3.230:2927     117.79.91.18:80        ESTABLISHED     4732 
  TCP    192.168.3.230:2929     117.79.91.18:80        ESTABLISHED     4732 
  TCP    192.168.3.230:2930     117.79.91.18:80        ESTABLISHED     4732 
  TCP    192.168.3.230:2931     117.79.91.18:80        ESTABLISHED     4732 
 
2.查看指定端口的占用情况   www.2cto.com  
C:\>netstat -aon|findstr "9050" 
  协议    本地地址                     外部地址               状态                   PID 
  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       2016 
P: 看到了吗,端口被进程号为2016的进程占用,继续执行下面命令: (也可以去任务管理器中查看pid对应的进程) 
3.查看PID对应的进程 
C:\>tasklist|findstr "2016" 
映像名称                       PID 会话名              会话#       内存使用 
========================= ======== ================ 
  tor.exe                     2016 Console                 0     16,064 K 
 
P:很清楚吧,tor占用了你的端口。 
 
4.结束该进程 
C:\>taskkill /f /t /im tor.exe

摘自:http://www.2cto.com/os/201301/185529.html

【转】zend debug图文教程(2012-05-18更新)

摘自:http://blog.csdn.net/newjueqi/article/details/7209857?reload


在网络上有关zend debug的安装和使用的教程都比较简单,记得当时研究折腾了很长的时间才搞定(最主要的是网络上的教程都只是教了怎么安装zend debug,没怎么说zend debug 和 zend toolbar的整合,zend debug 不配合zend tootbar的话是很难在实际编程中发挥作用的)。因此写下这份详细的图文教程,以帮助有需要的人。

 

首先,在zend 的官网上找到 zend debug的dll 和火狐的插件,我已经打包上传到http://download.csdn.net/source/3498366


最新的zend debug 和zend toolbar 可在http://www.zend.com/en/products/studio/downloads 下载,选择“Studio Web Debugger ” 和 “Studio Browser Toolbars” 即可


安装ZendDebugger-5.2.15-cygwin_nt-i386.zip,需要下面的步骤:

1.      解压ZendDebugger-5.2.15-cygwin_nt-i386.zip

2.      根据php的版本确定需要哪个dll文件(4.3.x, 4.4.x, 5.0.x, 5.1.x,5.2.x)

3.      添加下面的信息到php.ini:

   Windows:               zend_extension_ts=<full_path_to_ZendDebugger.dll>

  Windows non-thread safe: zend_extension=<full_path_to_ZendDebugger.dll>

 

注意了:1. 进程不安全的dll只适用于Zend Core 2.0。

2. 进程安全的配置项是zend_extension_ts,进程安全的配置项是zend_extension,这是不一样的。

 

4.      添加下面的内容到php.ini:

zend_debugger.allow_hosts=<host_ip_addresses>

  zend_debugger.expose_remotely=always

 

   譬如我只是在本机上debug的,那么allow_hosts 就是127.0.0.1

5.      copy dummy.php 到网站根目录。(譬如,我的php的主目录是E:\wamp\bin\php\php5.2.6,那么dummy.php的路径为E:\wamp\bin\php\php5.2.6\www\ dummy.php)。

6.      然后,查看phpinfo的信息,如果看到下面的截图就是安装成功了,不然请检查以上的步骤是否正确:

 

 

安装完zend debug,接下来安装firefox的插件,方法很简单,拖到火狐上就行了。如果安装后看不到zenddebug工具栏,在firefox的菜单栏旁边空白处点击一下右键,复选zend debug工具栏,如下图:

 

安装完插件后还需要配置,选择zenddebug toolbar->Extra Stuff->Settings->zend studio settings->zendstudio Executable:配置zend studio可执行文件的位置,如下图:

 

 

最后,在zend studio中,windows->preferences->php->debug, 查看一下默认的debug是否已选择了zend debug,如下图:

 

OK,到此为止,所有的配置都完成了。测试步骤如下:

1.       导入一个工程到zend studio,我偷懒,直接导入了phpmyadmin

2.       在firefox中运行phpmyadmin,在zend debug工作栏中选择如下:


3.       刷新一下页面,这时zend studio就进入了debug模式,

 

 

 

 注意:

在window下只有5.2 zend debug的能安装成功,5.3 zend debug的没有成功过

在linux下我试过安装5.3的 zend debug,能成功


 但在项目中,很多时候都必须要使用php5.3,但又想用zend debug,怎么办?

解决方法一:使用linux,zend debug for php 5.3 在linux 没问题,而且LAMP这个黄金组合天生就和linux分不开。

解决方法二:使用wampserver这个集成开发环境,可以很方便在多个php版本之间切换,当平时开发就使用php 5.3,需要zend debug切换到php 5.2 ( 这个方法个人觉得挺折腾的,还是推荐使用linux )。


wampserver 在多个php版本切换的步骤如下:

1 )  wampserver 默认是只安装了一个php版本,所以要先安装多个php版本。

http://www.wampserver.com/en/#download-wrapper 中点击“Download   PHP   Addons”,在弹出窗口中选择一个php 5.2的addon下载,选择其中一个版本的php 5.2下载,如下图:



 

安装下载的文件,安装完后再查看一下wampserver 的php 版本,就能看到有多个php的版本可选了,如下图:


当需要使用php 5.3.3,就在5.3.3 标签上点击一下,当需要使用php 5.2.9 ,就在5.2.9标签上点击一下。


 

----------------------------------------------------------------------------------------------------------------------

 

[文章标题] zend debug图文教程(2012-05-18更新)

[文章作者]曾健生

[作者邮箱]zengjiansheng1@126.com

[作者QQ]190678908

[博客]  http://blog.csdn.net/newjueqi

http://blog.sina.com.cn/h6k65


修改记录:

2012-05-18: 添加了在wamp上切换不同php版本的方法

2013年5月10日星期五

【转】电脑上安装安卓系统模拟器的方法


现在流行安卓系统,鉴于囊中羞涩,买不起手机和平板电脑,所以我就在网上找了个安卓模拟器,整理了一下,分享给大家,对安卓系统感兴趣的朋友不妨拿来解解馋吧。
这个方法目前可以模拟android1.5-3.0系统,从各种安卓系统的手机,到安卓系统的平板电脑都可以模拟,而且可以安装所有安卓程序,可以上网、登QQ、听音乐等等。跟在手机和平板电脑上的操作和功能几乎一样。由于安装和设置比较复杂,特意为大家写个详细的安装教程,以windows XP为例。

工具/原料

  • java JDK 1.6
  • sdk模拟器
  • 安装apk程序到手机或模拟器的工具:APK安装器
  • 光盘映像文件制作/编辑/转换工具:UltraISO软碟通

步骤/方法

  1. 设置电脑系统的环境变量。在桌面【我的电脑】上点击鼠标右键,选择【属性】菜单,即打开了系统属性对话框。
    在【高级】选项卡中,单击【环境变量】按钮,即打卡了环境变量的对话框。
    在系统变量里面,新建一个系统变量:
    变量名:JAVA_HOME 
    变量值:C:\Program Files\Java\jdk1.6.0_10 
    还要新建一个系统变量:(注意符号)
    变量名:classpath 
    变量值:.;%JAVA_HOME%\lib; 
    另外一个环境变量Path 默认已经有了,选中它,并点击【编辑】按钮,对其进行编辑。变量值里面,在原有的的前面加入这个值C:\Program Files\Java\jdk1.6.0_10\bin; 



    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
  2. 下载并安装java JDK 1.6。可以去网上搜索下载,可以在这个地址去下载:
    http://www.java.net/download/jdk6/6u10/promoted/b28/binaries/jdk-6u10-rc-bin-b28-windows-i586-p-21_jul_2008.exe
    文件下载完了如下:
    然后安装这个它很简单,一步步安装过去就好了。 
    电脑上安装安卓系统模拟器的方法
  3. 安装最新的sdk模拟器。
    我在这里下载的:
    http://dl.google.com/android/android-sdk_r05-windows.zip
    下载并解压,不需要安装,直接放到一个可用空间比较大的磁盘,因为到时候里面还要装很多东西。比如我解压后放在D盘的。
    打开这个文件夹,运行里面这个程序:SDK Setup.exe。
    运行这个程序后,会打开几个窗口,不要去管它。
    程序自动连接到google的服务器检查可用的包裹,这里需要几十秒到几分钟,请等待。
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
  4. 下载和安装模拟器的安卓系统版本。
    如果你看到一条关于SSL的错误信息,点击【Settings】标签(在SDK and AVD Manager窗口左边)。然后把Force https://……前面的勾去掉,点确定。
    然后重新选择左边的【installed packages】标签。
    左边列出来的这些,就是安卓的各个系统版本的模拟程序,我这里因为已经下载了很多,所以有很多。你那里没有的话那么多,或者没有你想要的版本的话,请点击【update all】按钮,来进行升级。
    我这里几乎都下载完了,所以全部是绿色的勾,如果是问号,不用管它,选中右边的【Accept All】,并单击【Install】按钮,就会自动下载并安装。
    这个过程有点长,需要几十分钟,甚至几十个小时,取决于你的网速和下载版本的多少。下载一段时间了,不想下载了,可以点【Cancel】取消下载和安装,接着点【Close】关闭下载安装窗口。
    回到【installed packages】标签,可以查看到你安装了哪些版本,比如我这里安装了1.5,1.6,2.1,2.2,2.3.1,2.3.3,3.0版本,除了3.0版本是模拟的安卓平板电脑系统之外,其他的较低的版本都是模拟的安卓手机系统。 
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
  5. 创建设置模拟器。
    点击左侧【Virtual Devices(虚拟设备)】标签。这里来创建和设置模拟器。可以创建多个模拟器。也对可以对其编辑和删除。
    我演示一下创建一个模拟器,先点击右侧的【NEW】按钮,表情新建一个模拟器,然后在如下设置参数。在Name里输入你模拟器的名字,最好用英文或数字。在Target中选择安卓系统的版本,你下载了哪些版本的,这里就可以选择哪些版本。在Size里设置SD卡的大小,SD卡就相当于手机中插的内存卡,可以把各种文件和程序放进去,它是个镜像文件,比如我这里设置的1G,即1024M。在Built-in中选择模拟器的屏幕大小,大家最好选择第一个选项,也就是前面带有Default的默认选项。最后点击最下方的【Create AVD】按钮完成创建模拟器,因为我这里输入的Name不对,所以点击不了。 
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
  6. 运行模拟器。以android2.2为例。
    选中你创建的模拟器,然后点击【Start】运行它。比如我这里来运行2.2版本的。
    在弹出来的窗口,直接点【Launch】就好了。
    稍等几秒钟,模拟器就弹出来了,相继出现两个等待画面,此段时间可能需要等待几分钟,特别是第一次进入模拟器的时候。
    等待一会儿,Android的home screen出现了!你可以用鼠标点进行操作,比如拖动解锁,需要注意的是你不需要双击来打开应用。左边的模拟键盘可以用鼠标点击操作,打字也可以用电脑的键盘进行操作。 
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
  7. 设置操作界面的语言(英语特别好的可以省略)。
    由于默认是英语的操作界面,我们首先为了方便,可以改变语言设置,先拖动解锁。
    打开主菜单,进入【Settings(设置)】菜单,像手机一样操作,网上拖动屏幕,选择【Language & Keyboard(语言和键盘)】菜单:
    选择最上面的那个菜单【Select Language(选择语言)】,进行设置语言。
    同样把屏幕网上拖动,知道最后出现【中文(简体)】的选项,然后选择它,你的“手机”就变成了中文界面了,可能主菜单还没有变成中文的,下次启动就成中文的了。
    可以点击右边模拟键盘上像个房子的图标,表示回到主画面。
    以后的操作大家就很熟悉了,可以进行其他设置,可以用浏览器就行上网,下载文件和软件。可以对桌面进行各种管理等等。
    直接打开浏览器就跳到谷歌搜索(中国网站)首页,这是浏览器默认的主页,可以进行输入网址和搜索的方式进行网络访问。不需任何设置即可上网。可以去网上下载软件
    跟用安卓手机一样操作,大家可以多多试试。
    可以下载并使用QQ:同样后台可以运行程序,跟手机一样操作。
    3.0的系统跟平板电脑操作也一样:
    需要注意的是,这个版本没有单独的模拟键盘,打字的时候可以用电脑键盘。
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
  8. 给模拟器安装软件。
    除了可以用模拟器上网下载软件安装之外,还可以用专门的APK安装器,进行安装软件。
    这款工具可以给连接电脑的安卓系统手机安装程序,也可以给模拟器安装程序。先去下载,它是个绿色软件,直接打开即可。
    比如可以在这里下载2.3版本的:
    http://www.crsky.com/soft/16759.html
    打开之后,点击右侧【刷新设备列表】,上方就会出现一个模拟器,选中它。在点击上面【选择APK文件】按钮,选择你下载的APK程序文件,点击【开始安装】。有的安装较快,有的稍微慢点。
    电脑上安装安卓系统模拟器的方法
  9. 管理SD卡。之前设置了SD卡,这个SD卡是虚拟的,用的光盘镜像文件,大小之前设置了的,我这里设置的1024M,还记得吗。它的位置在电脑中这里:
    C:\Documents and Settings\Administrator\.android\avd\luthui.avd\sdcard.img
    Administrator是你电脑的用户名,如果不是这个用户名,请改。
    luthui.avd是你创建的模拟器的AVD名称,请改成自己的。
    找到sdcard.img文件就可随意读写文件了,需要用光盘映像文件制作/编辑/转换工具,进行文件的管理,我一般用ultraiso工具。可以到这里下载并安装:
    http://www.crsky.com/soft/1134.html
    打开这个工具之后,打开上面那个光盘镜像文件sdcard.img,然后进行管理。把电脑里的文件和程序复制进去,也可以删除、移动、建立文件和文件夹等操作。
    文档整理完之后,请保存,再关闭。而且保存的时候,需要先关闭模拟器。
    如果你无法查看SD卡或模拟器的文件,可以通过手机上网的方式,下载并安装一个文件管理器。比如我用的是双文件管理器Dual File Manager。
    你可以通过手机自带浏览器打开网页,搜索下载,也可以在电脑的浏览器上找好下载万网,然后直接在手机中输入这个网址进行下载:
    http://www.ggdown.com/view/3479.html进去下载,然后安装这个文件。
    打开文件管理器,就可以管理你模拟器和SD卡的文件。
    我在镜像文件里面,复制了很多文件和软件进去,那么在这个文件管理器中,可以尽情的安装。
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法
    电脑上安装安卓系统模拟器的方法

注意事项

  • 各个过程可能有点慢,请耐心等待

【转】用谷歌浏览器来当手机模拟器

 很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容。

  谷歌Chrome浏览器,可以很方便地用来当3G手机模拟器。在Windows的【开始】-->【运行】中输入以下命令,启动谷歌浏览器,即可模拟相应手机的浏览器去访问3G手机网页:

  谷歌Android:
chrome.exe --user-agent="Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"


  苹果iPhone 4:
chrome.exe --user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405"


  苹果iPad 2:
chrome.exe --user-agent="Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405"


  诺基亚N97:
chrome.exe --user-agent="Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124"


  试一试,分别用Android、iPhone、诺基亚访问http://www.163.com/http://blog.s135.com/http://www.google.com.hk/http://3g.qq.comhttp://t.sina.cn这些3G手机网页,看看有什么不同。

  更多款手机的User-Agent:http://www.zytrax.com/tech/web/mobile_ids.html

  10月11日备注:如果想切换回普通浏览器模式,关掉所有Chrome浏览器,重开即可。如果不想关闭浏览器,切回普通浏览器模式,则访问:
chrome.exe --user-agent="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7"

2013年4月1日星期一

【转】细说PHP中smarty分页例子显示优化

这个可能要结合书上的过程来看比较好理解

主要是显示方面!书中例子只有第一页,上一页,下一页的链接,我添加了在上下中间显示五个快速跳转链接如下图

代码如下:

<p align="center">
        共<b><{$pageInfo.row_total}></b>条记录,
        显示第<b><{$pageInfo.page_start}></b>-<b><{$pageInfo.page_end}></b> 条记录
        <a href='<{$url}>?p=1'>首页</a>
        <{if $pageInfo.prev_page}>
            <a href='<{$url}>?p=<{$pageInfo.prev__num}>'>上一页</a>
        <{else}>
            上一页
        <{/if}>
        <{if $pageInfo.page_num <= 6}>
            <{section name=i loop=$pageInfo.page_num}>
                <{if $current_page eq $smarty.section.i.iteration}>
                          <{$smarty.section.i.iteration}>
                  <{else}>
                        <a href ="{$url}?p=<{$smarty.section.i.iteration}>"><{$smarty.section.i.iteration}></a>  
                <{/if}>
            <{/section}>
        <{else}>
            <{if $current_page < 3}>
                <{section name=i loop=5}>
                    <{if $current_page eq $smarty.section.i.iteration}>
                              <{$smarty.section.i.iteration}>
                      <{else}>
                            <a href ="<{$url}>?p=<{$smarty.section.i.iteration}>"><{$smarty.section.i.iteration}></a>  
                    <{/if}>
                <{/section}>
            <{elseif $current_page > $pageInfo.page_num - 3}>
                <{section name=i start=$pageInfo.page_num-5 loop=$pageInfo.page_num+1}>
                    <{if $current_page eq $smarty.section.i.index}>
                              <{$smarty.section.i.index}>
                      <{else}>
                            <a href ="<{$url}>?p=<{$smarty.section.i.index}>"><{$smarty.section.i.index}></a>  
                    <{/if}>
                <{/section}>
            <{else}>
                <{section name=i start=$current_page-2 loop=$current_page+3 show=true}>
                    <{if $current_page eq $smarty.section.i.index}>
                              <{$smarty.section.i.index}>
                      <{else}>
                            <a href ="<{$url}>?p=<{$smarty.section.i.index}>"><{$smarty.section.i.index}></a>  
                    <{/if}>
                <{/section}>
            <{/if}>    
        <{/if}>    
        <{if $pageInfo.next_page}>
            <a href='<{$url}>?p=<{$pageInfo.next_page}>'>下一页</a>
        <{else}>
            下一页
        <{/if}>
        <a href='<{$url}>?p=<{$pageInfo.page_num}>'>最后一页</a>                
        当前<b><{$pageInfo.current_page}>/<{$pageInfo.page_num}></b>页
        </p>

附上我从书上一字一字码下来分页类,(很辛苦的~)

<?php 
    class Page{
        private $total;
        private $page;
        private $num;
        private $pageNum;
        private $offset;
        function __construct($total, $page=1, $num=5){
            $this->total=$total;
            $this->page=$page;
            $this->num=$num;
            $this->pageNum=$this->getPageNum();
            $this->offset=$this->getOffset();
        }
        private function getPageNum(){
            return ceil($this->total/$this->num);
        }
        private function getNextPage(){
            if ($this->page==$this->pageNum)
                return false;
            else 
                return $this->page+1;    
        }
        private function getPrevPage(){
            if ($this->page==1)
                return false;
            else 
                return $this->page-1;    
        }
        private function getOffset(){
            return ($this->page-1)*$this->num;
        }
        private function getStartNum(){
            if ($this->total==0)
                return 0;
            else 
                return $this->offset+1;    
        }
        private function getEndNum(){
            return min($this->offset+$this->num,$this->total);
        }
        public function getPageInfo(){
            $pageInfo=array(
                "row_total"    =>$this->total,
                "row_num"      =>$this->num,
                "page_num"     =>$this->getPageNum(),
                "current_page" =>$this->page,
                "row_offset"   =>$this->getOffset(),
                "next_page"    =>$this->getNextPage(),
                "prev_page"    =>$this->getPrevPage(),
                "page_start"   =>$this->getStartNum(),
                "page_end"     =>$this->getEndNum()
            );
            return $pageInfo;
        }
    }
//end of page_class

总感觉显示的部分代码太多,肯定有办法写到类中的吧,等待发掘了~


摘自:http://hi.baidu.com/czm080/item/beb8a00d0ddd893bf2eafc62