PHP例解,第2部分 深入研究Webzine编辑和发送

作为构建动态网页的一种语言,PHP 提供了一种简化的方法来构造复杂而功能强大的与 Web 相关的程序。 Erik 用一个原始的、现实世界的网站示例逐步说明了 PHP 的基本原理。本系列文章(共两篇)的第 2 部分介绍发送模块如何向读者呈现 一个故事菜单,并说明编辑模块如何使作者能将故事提交给 Webzine。

简介

如果您是初次接触PHP,您可能会惊喜地发现在实践中它是多么易于使用。本文旨在使您对 PHP的工作方式留下一个好的印象; 随后您就可以确定它是否适合您。

在本文的 第 1 部分,我介绍了Webzine 这个简单 PHP 应用程序的发送部分。尽管只有大约 3K的代码,但它包含了许多功能。您已试用了这个应用程序,并开始研究它的后台工作方式。我说明了应用程序如何向用户显示类别菜单并根据选择显示故事。我还使读者对PHP应用程序的工作方式以及它们从调用页接收参数的方式有了一定的了解。

故事菜单

本文是第 2部分,您首先会了解到发送模块是如何将故事菜单呈现给读者的,然后还会快速查看一下使作者能向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(例如 "/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");
}

时间: 2024-09-24 00:56:57

PHP例解,第2部分 深入研究Webzine编辑和发送的相关文章

PHP例解,第1部分 轻松的Webzine编辑和发送

作为构建动态网页的一种语言,PHP 提供了一种简化的方法来构造复杂而功能强大的与 Web 相关的程序.Erik 用一个原始的.现实世界的网站示例逐步说明了 PHP 的基本原理.本系列文章分为两部分,第 1 部分介绍了 PHP 的基本概念,并分析了一个应用程序示例,Webzine.Webzine 包括内容提供者可输入文章文本的一个编辑页,以及用来将该内容展示给全世界的一个前端. 如果您是初次接触PHP,您可能会惊喜地发现在实践中它是多么易于使用.本文旨在使您对 PHP的工作方式留下一个好的印象:

socket编程:SO_REUSEADDR例解

socket编程:SO_REUSEADDR例解                                              kevintz 2000-6-19      网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用.而且很多网友在编写网络程序时也会遇到这个问题.所以特意写了这么一篇文章,希望能够解答一些人的疑难.     其实这个问题在Richard Stevens的<Unix网络编程指南>卷一里有很详细的解答(中文版P166-168页).这里

JBuilder2005+JBoss-4.0.2RC1+J2SDK1.5+Log4j 开发Session Bean例解(1)

session 作者:Junsan Jin 日期:2005-3-30 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第一部分:准备工作 工具准备: J2SDK1.5.JBuilder2005和JBoss-4.0.2RC1安装文件,Log4j的jar库包在JBuilder和JBoss中都有,可以直接用,也可以去网上下载(都去网上搜索下载吧,这里就不给下载链接了,因为这些东西经常变动).  工具安装: J2SDK和JBu

JBuilder2005+JBoss-4.0.2RC1+J2SDK1.5+Log4j 开发Session Bean例解(2)

session 作者:Junsan Jin 日期:2005-3-30 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第二部分:配置Log4j Log4j主要是针对java的日志文件产生管理包,这里使用logging-log4j-1.2.9.解压logging-log4j-1.2.9的压缩包,任意路径即可,这里是D:\logging-log4j-1.2.9. 先在JBuilder中建立工程,然后引入log4j库文件. 

例解 autoconf 和 automake 生成 Makefile 文件

本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Configure.in 的方法及其规则. 2 评论: 杨 小华, Linux 内核开发工程师, 自由撰稿人 2006 年 9 月 21 日 内容 引子 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make

Jsdk5.0中新增枚举enum类型使用例解

js 作者:Junsan Jin 日期:2005-03-25 邮箱:junsan21@126.com ; junnef21@sohu.com Jsdk5.0中新增了很多的特性,如泛型.增强的循环.改进的装.拆箱.静态引入等,大大增强了java语言的易用性. 我现在正在做一个从com+(dcom)平台到j2ee平台移植的项目,中间有很多枚举类型的定义,以前做起来要引入第三方类库,或者自己写类库,或者干脆定义成静态变量使用,很不方便,而且可能会产生很多问题.Jsdk5.0的发布正好解决了这些问题.

JBuilder2005+JBoss-4.0.2RC1+J2SDK1.5+Log4j 开发Session Bean例解(3)

session 作者:Junsan Jin 日期:2005-3-30 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第三部分:开发Session Bean  新建EJB模块: 选择菜单:New〉Enterprise〉EJB〉EJB Designer,弹出对话框中选择New,选择Create empty EJB Module,点击next,填入名称Trader,一路OK即可.  设计EJB: 1.新建session b

JBuilder2005+JBoss-4.0.2RC1+J2SDK1.5+Log4j 开发Session Bean例解(4)

session 作者:Junsan Jin 日期:2005-3-30 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第四部分:测试Session bean 在前面的三个部分已经完整地讲述了一个Session Bean的建立过程.下面来建立测试工程.   添加测试类: 在右边的树型菜单中选中com.inspiresky.trader右键 〉new 〉package,在对话框的输入框最后添加user,新建com.insp

Photoshop精彩例解:立体光影魔术[光与影]2

好了,试验结束.我们能把简单的黑白渐变变成了火焰渐变.那光影呢?我们刚刚说到光影的层次,而这个操作,就是为了让我们更容易的控制光的层次.也就是说,我们用不着考虑多种颜色的光的混合是怎样的,我们只要使用黑白来作出变化,然后再用渐变映射去替换每个不同的灰度即可.手工绘制的方法很好,但我们需要的是使用ps技巧,控制性更强的做法. 有了光影层次的解决办法还不行,光迹就要靠自己画了.用笔画是个不错的选择,刚刚也看到了,在黑色背景上以白色画,配合渐变映射,怎么画都是漂亮的光迹.看看下图. 用鼠标乱画,效果虽