|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
怎么配置呢 ,问最好的老实百度,问啥都有答案。所以用好搜索引擎是学好的令1个关键,程序会出各样的问题,没有1个人可能会碰到所有的问题,所有就可以问百度这个大家精华的集合了。web 接上一篇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"
对编纂页的剖析不会像对发送模块的剖析那样具体,由于它对照长,并且咱们已会商了很多根基概念。
为了扼要申明一个 PHP 函数的根基布局,让咱们看一下编纂模块中的complain函数。这是一个复杂的函数,但它是一个很好的入门级资料。
清单 4. 一个 PHP 函数示例
//告诉用户输出成绩。
function complain($problem) {
global $status;
if ($status != "") $status = $status . "<br>\n";
$status = $status . $problem;
}
您可以在代码中的任何中央挪用这个函数。例如,complain("The URL is too long."); 吸收全局变量 $status并将这个新的毛病动静追加到其尾部,假如 $status不为空,则在毛病动静前添加一个换行符。
Prepend
prepend函数是编纂模块中最主要的函数之一。它在文件的首行添加一个新条目。上面,我利用它将作者的新提交添加到主题菜单文件的开首。
清单 5. prepend 函数
//在一个现有文件的开首添加一行新内容。
function prepend($file,$string) {
// 有待改善 ― 利用数据库进步这个算法的可伸缩性。
// 今朝限制为 100 个故事。
if (file_exists($file)) {
$filetext = file($file);
$lines = count($filetext);
} else {
$lines = 0;
}
if ($lines > 100) $lines = 100;
$handle = fopen($file,"w");
fputs ($handle, "$string\n");
for ($i=0; $i<$lines; $i++)
fputs ($handle, $filetext[$i]);
fclose ($handle);
}
假如文件存在,全部注释将存入 $filetext数组中。然后统计出行数。假如文件不存在,则以为它有零行。长度限制为100 行(实践上是 101 行,由于第一行是在入手下手计数之前添加的)。文件翻开,法式起首将以后的字符串写入文件中,然后再将残剩的行(最多100 行)写入文件中。这 100 行今后的任何内容将被抛弃。
这个函数依附于 PHP
内建的几个主要的文件处置函数。下表申明了每一个函数所停止的操作。
函数 申明
file_exists(string) 将字符串作为文件名,假如文件名以后存在,则前往 true。
file(string) 将字符串作为文件名,用一个数组前往文件的注释,每行分离对应一个数组元素。
请注重,行终止字符将位于数组中每行的尾部。
count(array) 前往数组中的元素个数。
fopen(string, mode) 字符串是一个文件名,形式是一个字符串,例如 "w" 暗示写入,"r"暗示读取。
翻开文件,并前往一个句柄。
fputs(handle, string) 将字符串写入指定的输入文件中。必需指定一个文件句柄,
而不克不及以字符串模式指定文件名。
fclose(handle) 封闭文件,终止输入。
Save
save函数将作者的输出写入一个文件中。因这个函数太长,
在此我不克不及逐行剖析它,但我会强调几个风趣的语句。
$entry = "$storynum^$storytitle^$storyimg^$synopsis";
下面的这个语句将$storynum、$storytitle、$storyimg和 $synopsis 变量毗连起来,并用脱字符号作为分隔符。
内嵌的变量替换使它比显式毗连更轻易且更风趣。
prepend("Main.txt",$entry);
$topicfile = "$subject.txt";
prepend($topicfile,$entry);
$entry变量的值被添加到主故事菜单文件和主题特定的故事菜单文件中。所以,假如变量$subject 等于 "Politics",它就被添加到文件"Politics.txt" 中。
PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算 一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。 |
|