离线下载
PDF版 ePub版

kaka · 更新于 2017-10-24 06:00:25

图片显示和 Page 页面

接着上一章节的看,我们现在的程序有了第一个主页面,但是我们会发现几个问题,一个是主页上的图片没法显示,二是点击 read more ... 之后的链接没有内容。

这两个页面的入口分别是下图里面的两个框出来的内容。

我们先来看图片显示的页面;

Resize_image.php

我们注意到其实这个链接的完整 URL 是: resize_image.php?image=...&max_width=...&max_height=...; 也就是说这个链接有 3 个参数: image 是图片的名称,max_width 和 height 分别对应图片的宽和高。 那么我们在这个页面我们该如何处理呢?

这是 resize_image.php 的完整代码,将原始的图片大小根据我们页面输入的 width 和 height 来进行压缩或者放大,然后重新生成一张新的图片,用于显示在页面上。

接下来我们来看 page.php 页面

page.php

因为点击 page 页面其实相当于打开了 3 个不同类型的 blog 内容的详细页面,所以我们肯定是需要到数据库里面进行 select 操作的。

上一篇里面有讲解过,我们只需要改变中间的显示内容,所以在第 10 行和第 47 行,我们分别引入了 header.php 和 footer.php ,中间的内容我们通过数据库查询以后再显示出来。

我们展示 page 页面的时候,可能有时候是用户点击了某一条 story,这时候参数里面会有 story,传入的是故事的 id;或者可能是某一类的只有 page 字段,所以根据参数中有没有 story,我们来决定我们的 select 该怎么写。

但是无论如何,我们最后得到的都是这样的表结构:

我们再来回顾下 stories 表的建立过程:

注意看到 id 字段不仅仅是 primary key,而且它还是 auto_increment 属性,在 MySQL 里面,auto_increment 就是自增字段,每次插入数据时,会自动查询当前序列的最大值,然后加 1,

大家看我的 stories 表中存的所有内容,1-7 都是我们通过教材手动 insert 进去的,然后会发现接下来就是 11 了,而并没有 8,9 和 10 ,是因为我在开发过程中进行了插入和删除操作,我把 id 为 8,9,10 的记录删除了,所以在表中没有显示,但是即便这时候你的表里面最大的 id 是 7,他的记录也会插进去 11,也就是说这个自增的序列是独立于当前的表的,和 oracle 的自增序列一样,但是我不太清楚 mysql 里面的自增序列和 oracle 有哪些区别。

oracle 中的自增序列的建立方法是:

CREATE SEQUENCE "SEQ_ID" MINVALUE 1 MAXVALUE 999999999999 INCREMENT BY 1 START WITH 1 CACHE 10 NOORDER NOCYCLE;  

然后使用的时候就直接 insert .... values(seq_id.nextval)就相当与插入了下一个自增序列的下一个值,所以在 oracle 里面可以有好几个自增序列,但是不太清楚 MySQL 里面自增序列这块是怎样的,目测是只有一个公用的自增序列。

好了我们回归正题,在 while 循环体内,我们能看到每个故事是由 4 部分组成的,

27 行:

显示每篇 story 的 headline,

29-35 行:

根据存储的 picture 名称来显示出图片,使用的方法仍然是我们上面提到的 resize_image.php

36-41 行:

这里我们需要用到 db_fns.php 中的新的函数:

把下面的函数添加进 db_fns.php 中,这个函数很简单,就是把当前 sotry 的 writer 信息找到。

然后显示文章修改的时间:

这里在数据库里面存储的是 10 位的时间戳形式的,显示的时候 根据格式做一下转换就好了:

date('M d, H: i', $story['modified']);  

44 行

显示故事的主题内容。

好了,这样我们就能看到界面上的图片,然后也能点击主界面上的大部分按钮了。

下一章节我们来进行用户登录,然后新增文章等操作。

本文由 kaka 创作,采用 知识共享署名-相同方式 3.0 (CC协议)中国大陆许可协议 进行许可。 转载、引用前需联系作者,并署名作者且注明文章出处。

上一篇: 主页&数据库... 下一篇: 管理页面