接着上一章节的看,我们现在的程序有了第一个主页面,但是我们会发现几个问题,一个是主页上的图片没法显示,二是点击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操作的。
上一篇blog里面有讲解过,我们只需要改变中间的显示内容,所以在第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行
显示故事的主题内容。
好了,这样我们就能看到界面上的图片,然后也能点击主界面上的大部分按钮了。
下一章节我们来进行用户登录,然后新增文章等操作。