日期:2014-02-28  浏览次数:20548 次

接上一篇PHP例解Webzine编辑和发送(二)


作为构建动态网页的一种语言,PHP提供了一种简化的方法来构造复杂而功能强大的与 Web 相关的程序。 Erik用一个原始的、现实世界的网站示例逐步说明了PHP的基本原理。本系列文章的第3、4部分介绍发送模块如何向读者呈现一个故事菜单,并说明编辑模块如何使作者能将故事提交给Webzine。
如果您是初次接触PHP,您可能会惊喜地发现在实践中它是多么易于使用。本文旨在使您对PHP的工作方式留下一个好的印象; 随后您就可以确定它是否适合您。
简介
在本文的第1、2部分,我介绍了Webzine 这个简单PHP应用程序的发送部分。尽管只有大约3K的代码,但它包含了许多功能。您已试用了这个应用程序,并开始研究它的后台工作方式。我说明了应用程序如何向用户显示类别菜单并根据选择显示故事。我还使读者对PHP应用程序的工作方式以及它们从调用页接收参数的方式有了一定的了解。
本文是第3部分,您首先会了解到发送模块是如何将故事菜单呈现给读者的,然后还会快速查看一下使作者能向Webzine 提交故事的编辑模块。
故事菜单
文件中的每个故事在主题菜单文件中都有对应的一行。我已决定将脱字符号("^")用作定界符来分隔文件中的不同项目,但您可以使用任何字符(制表符是一种通用的选择)。下面是基本的布局:


故事编号^标题^图像 URL^摘要

.

举例来说,仅包含三个故事的主题菜单文件 (TradeShow.txt)可能如下所示:
清单1.包含三个故事的主题菜单文件


33^Great New Products This Year^/images/proddemo.jpg^Thursday's product demo ...
12^Opening Event Well Attended^/images/opnfoto.jpg^Ticket sales to the ...
5^Trade Show Opens^/images/tradelogo.gif^The Fourth Annual Trade Show ...




菜单驱动程序接受这些信息并向读者提供一个故事概述。其工作方式如下:

首先,驱动程序将适当的条目编号从主题菜单文件复制到数组$stories 中。对于上面的示例,$stories[0]包含第一行(故事编号为 33),$stories[1] 包含故事编号 12,$stories[2] 包含故事编号5。您还需要统计数组中的元素个数,并将其保存在变量$numstories 中。

下一步,驱动程序将此信息提供给用户,如下所示:

清单 2.驱动程序


for ($i=0; $i<$numstories; $i++) {
$storyinfo = split("\^", $stories[$i]);
$storynum = $storyinfo[0]; // 故事编号(例如 33)
$storydesc = $storyinfo[1]; // 故事标题(例如 "Great New Products This Year")。
$storyimg = $storyinfo[2]; // 图像 URL(例如 http://www.163design.net/p/b/"/images/proddemo.jpg")。
$dtext = $storyinfo[3]; // 故事摘要(更长的文本说明)。
$url = "<a href=\"index.php3?topic=$topic&story=$storynum\">$storydesc</a><br>";
if ($i<10) {
$url = "<h2>" . $url . "</h2>";
if ($storyimg != "") {
$url = "<p><img align=" . ($i%2==1 ? "right" : "left")
. " src=\"$storyimg\"></p>\n"
. $url;
}
$url = "<hr>" . $url;
} else {
$url = "<h3>" . $url . "</h3>";
}
echo("$url\n");
echo("<p>$dtext</p>\n");
}




split函数将故事信息的内容从一个字符串复制到一个数组中。请注意,脱字符号前面加了一个反斜杠从而成为“转义”字符。该程序将数组节点转换为说明性更强的变量名,从而使代码更易于阅读。然后就会构造URL。if/else 结构对前10个故事的处理与对其他故事的处理不同。前10个故事有一个分隔线,使用H2标记,并包括一张照片(如果有)。剩余的故事使用H3标记,没有分隔线,也没有照片。这个处理突出显示最新的故事,并保留较旧的故事供需要它们的读者访问。请注意,编号为奇数的的图像是右对齐的,而编号为偶数的图像是左对齐的。
作为本例的结束,为上面的 theTradeShow.txt 文件所生成的HTML代码如下所示:
清单 3. 为 theTradeShow.txt 文件所生成的 HTML 代码

<hr><p><img align=left src=http://www.163design.net/p/b/"/images/proddemo.jpg"></p>
<h2><a href="index.php3?topic=TradeShow&story=33">Great New Products This Year</a><br></h2>
<p>Thursday's product demo included a couple of exciting new
surprises from competing firms in the industry.</p>
<hr><p><img align=right src=http://www.163design.net/p/b/"/images/opnfoto.jpg"></p>
<h2><a href="index.php3?topic=TradeShow&story=12">Opening Event Well Attended</a><br></h2>
<p>Ticket sales to the Trade Show opening event were
up 15% from last year's show.</p>
<hr><p><img align=left src=http://www.163design.net/p/b/"/images/tradelogo.gif"></p>
<h2><a href="index.php3?topic=TradeShow&story=5">Trade Show Opens</a><br></h2>
<p>The Fourth Annual Trade Show opened 10/11/2000 to an enthusiastic reception
from attendees.</p>



单击此处查看 index.php3的源代码。在开始下一部分之前您可能希望查看整组源代码。毕竟代码的大小还不到3K!
编辑页 "author.php3"