当前位置: 代码迷 >> MySQL >> 一步一步教你用PHP+MySql筹建网站 No.2 图片显示和Page页面
  详细解决方案

一步一步教你用PHP+MySql筹建网站 No.2 图片显示和Page页面

热度:123   发布时间:2016-05-05 17:05:21.0
一步一步教你用PHP+MySql搭建网站 No.2 图片显示和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操作的。

上一篇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行

显示故事的主题内容。

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

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

  相关解决方案