透明 发表于 2015-2-16 00:30:10

PHP教程之如何用PHP来给网页做导航栏

可以在书上很方便地做标记,及时记下自己的心得体会。网页       译者注:本文原名《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没有太大区别,关键是兴趣。

老尸 发表于 2015-3-2 18:22:21

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

再现理想 发表于 2015-3-11 05:08:39

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

冷月葬花魂 发表于 2015-3-13 00:09:39

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

兰色精灵 发表于 2015-3-16 22:30:53

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

只想知道 发表于 2015-3-19 02:51:19

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

海妖 发表于 2015-3-27 01:09:23

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

愤怒的大鸟 发表于 2015-4-4 09:03:10

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

飘灵儿 发表于 2015-4-7 02:57:40

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

若天明 发表于 2015-4-16 17:50:28

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

柔情似水 发表于 2015-4-22 09:56:53

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

莫相离 发表于 2015-4-25 13:01:21

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

山那边是海 发表于 2015-4-26 09:12:00

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

因胸联盟 发表于 2015-6-7 21:57:03

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

分手快乐 发表于 2015-6-12 08:16:22

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

小女巫 发表于 2015-6-12 18:57:39

本文当是我的笔记啦,遇到的问题随时填充

飘飘悠悠 发表于 2015-6-23 20:36:50

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
页: [1] 2
查看完整版本: PHP教程之如何用PHP来给网页做导航栏