仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5445|回复: 20
打印 上一主题 下一主题

[学习教程] PHP教程之如何用PHP来给网页做导航栏

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:30:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
可以在书上很方便地做标记,及时记下自己的心得体会。网页       译者注:本文原名《Site Navigation with PHP》,原文胪陈了若何用PHP编程来做出后果幻想的网页导航条,本文只选译了个中的局部文章,所拔取的局部是文章精华之地点,只需人人能弄懂这局部内容就能够用一样的道理、思惟做出咱们需求的后果来,但愿给读者能起到抛砖引玉的感化。本文只需求读者具有PHP、HTML的初步常识就能够根基读懂了。    译 文:如人人所知PHP关于用数据库驱动的网站(making database-driven sites)来说可谓功效壮大,可是咱们是不是可以用它来做点其他工作呢?PHP给了咱们一切咱们希冀的东西:for与while的轮回布局、数学运算等等,还可以经由过程两种体例来援用文件:直接援用或向办事器提出请求。其实何止这些,让咱们来看一个若何用它来做导航条的例子:完全的原代码:
<!―― This "<?" is how you indicate the start of a block of PHP code, ――>
<?php # and this "#" makes this a PHP comment.
    $full_path = getenv("REQUEST_URI");
    $root = dirname($full_path);$page_file = basename($full_path);$page_num = substr($page_file, strrpos($page_file, "_") + 1, strpos($page_file, ".html") - (strrpos($page_file, "_") + 1));
    $partial_path = substr($page_file, 0, strrpos($page_file, "_"));
    $prev_page_file = $partial_path . "_" . (string)($page_num-1) . ".html";$next_page_file = $partial_path . "_" . (string)($page_num+1) . ".html";
    $prev_exists = file_exists($prev_page_file);$next_exists = file_exists($next_page_file);
    if ($prev_exists)
    { print "<a href="$root/$prev_page_file">previous</a>";if ($next_exists)
    { print " | ";} if ($next_exists)
    { print "<a href="$root/$next_page_file">next</a>";}
    ?>//原法式完。
    代码剖析:OK! 后面做了足够的铺垫任务,如今让咱们来看看若何来用PHP来完成这项任务:
    <!―― This "<?" is how you indicate the start of a block of PHP code, ――> <?php # and this "#" makes this a PHP comment.
    $full_path = getenv("REQUEST_URI");
    $root = dirname($full_path);$page_file = basename($full_path);
    /* PHP函数getenv()用来获得情况变量的值,REQUEST_URI的值是紧跟在主机名后的局部URL,假设URL是http://www.yourmom.com/dinner/tuna_1.html, 那它的值就为/dinner/tuna_1.html. 如今咱们将失掉的那局部URL放在变量$full_path中,再用dirname()函数来从URL中抓取文件目次,用basename()函数获得文件名,用下面的例子来说dirname()前往值:/dinner/;basename()前往:tuna_1.html.接上去的局部绝对有些技能,假设咱们的文件名以story_x的格局定名,个中x代表页码,咱们需求从中将咱们利用的页码抽出来。固然文件名纷歧定只要一名数字的形式或只要一个下划线,它可所以tuna_2.html,一样它还可以叫做tuna_234.html乃至是candy_apple_3.html,而咱们真正想要的就是位于最初一个“_”和“。html”之间的东东。可采取以下办法:*/ $page_num = substr($page_file, strrpos($page_file, "_") + 1, strpos($page_file, ".html") - (strrpos($page_file, "_") + 1));/* substr($string, $start,[$length] )函数给了咱们字符串$string中从$start入手下手、长为$length或到末尾的字串(方括号中的参数是可选项,假如省略$length,substr就会前往给咱们从$start入手下手直到字符串末尾的字符串),正如每个优异的C法式员告知你的那样,代表字符串入手下手的地位入手下手的数字是“0”而不是“1”。
    函数strrpos($string, $what)告知咱们字符串$what在变量$string中最初一次呈现的地位,咱们可以经由过程它找出文件名中最初一个下划线的地位在哪,同理,接着的strpos($string, $what)告知咱们“。html”初次呈现的地位。咱们经由过程应用这三个函数获得在最初一个“_”和“。html”之间的数字(代码中的strpos()+1代表超出“_”本人)。
    剩下的局部很复杂,起首为上页和下页机关文件名:*/ $partial_path = substr($page_file, 0, strrpos($page_file, "_"));
    $prev_page_file = $partial_path . "_" . (string)($page_num-1) . ".html";$next_page_file = $partial_path . "_" . (string)($page_num+1) . ".html";
    /*(string)($page_num+1)将数学运算$page_num+1的了局转化为字符串类型,如许就能够用来与其他字串终究毗连成为咱们需求的文件名。
    */ /*如今反省文件是不是存在(这段代码假定一切的文件都位于一样的目次下),并终究给出组成页面导航栏的HTML代码。
    */ $prev_exists = file_exists($prev_page_file);$next_exists = file_exists($next_page_file);
    if ($prev_exists)
    { print "<a href="$root/$prev_page_file">previous</a>";if ($next_exists)
    { print " | ";} if ($next_exists)
    { print "<a href="$root/$next_page_file">next</a>";}
    ?>
  左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢!
爱飞 该用户已被删除
沙发
发表于 2015-2-16 05:18:08 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
小妖女 该用户已被删除
板凳
发表于 2015-2-19 15:23:43 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
深爱那片海 该用户已被删除
地板
发表于 2015-2-23 13:05:23 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
老尸 该用户已被删除
5#
发表于 2015-3-2 18:22:21 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
再现理想 该用户已被删除
6#
发表于 2015-3-11 05:08:39 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-13 00:09:39 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
兰色精灵 该用户已被删除
8#
发表于 2015-3-16 22:30:53 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
只想知道 该用户已被删除
9#
发表于 2015-3-19 02:51:19 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
海妖 该用户已被删除
10#
发表于 2015-3-27 01:09:23 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-4-4 09:03:10 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
飘灵儿 该用户已被删除
12#
发表于 2015-4-7 02:57:40 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
若天明 该用户已被删除
13#
发表于 2015-4-16 17:50:28 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
柔情似水 该用户已被删除
14#
发表于 2015-4-22 09:56:53 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
莫相离 该用户已被删除
15#
发表于 2015-4-25 13:01:21 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
山那边是海 该用户已被删除
16#
发表于 2015-4-26 09:12:00 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
因胸联盟 该用户已被删除
17#
发表于 2015-6-7 21:57:03 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
分手快乐 该用户已被删除
18#
发表于 2015-6-12 08:16:22 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
小女巫 该用户已被删除
19#
发表于 2015-6-12 18:57:39 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
飘飘悠悠 该用户已被删除
20#
发表于 2015-6-23 20:36:50 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 18:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表