广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Linux操作系统中用PHP构建网站详解

    2018-05-07 10:24:35 次阅读 稿源:互联网
    零七广告

      如何架设一个新闻系统呢?一个完整的新闻系统不仅仅只包括供浏览的新闻界面,它还包括许多功能的控制和后台管理的强劲功能。那么这些功能内的子功能又如何调度分配呢?下面就来介绍一下各功能的调配控制。新闻系统的实现是简单的,但也可以说是非常复杂的。

      新闻系统可分为三大部分:管理员登入系统,新闻管理系统,用户浏览系统。整个过程是简单的:

      1、管理人员发布新闻-->数据库-->用户浏览新闻

      2、发现问题-->登入管理系统-->编辑修改新闻

      以上流程看似简单,但实现起来却并不是那么简单,这是个系统的开发,远比留言版的实现要复杂,但基本运作原理又与留言版相同。在新闻发布系统的重中之重又在于数据库的规划和管理系统的实现。

      现在来新闻都有些什么内容:新闻分类,信息本体。在数据库包函这两项内容于一个数据表内是可以实现的,但不经济,因此我们可用两个数据表来分别存储内容,一个专门存储新闻的分类,而另一个用来存储信息的本体。如何调用实现双表内容的共享呢?运用表关联来实现这个问题(这里并不介绍这方面的知识,读者可自行参考数据库相关的知识内容,靠自己努力得来的知识最有价值,不是吗?)

      下面要介绍的是管理功能的实现:

      1、首先是新闻的发布

      这是一系列的提交表单共同组成的,而这里又分两类,创建新闻分类和发布新闻;创建完新闻分类,然后再在各个分类中发布相关的新闻,很简单嘛!并不是这样的,想想所有的信息本体全都集中在一个数据表里,如何区分信息的分类,上面提到的表关联在这就非常重要了,当然也可不用这种方法,为每个分类创建一个独立的表也能解决问题,可是这样划算吗?维护性和可扩展性有如何呢?

      新闻分类和信息本体的相关调用引起了麻烦,对了,解决之道就是活用表关联。

      2、编辑,修改,删除的问题

      这是 php+mysql 知识的基本运用,实现这些功能并无困难,这里不作过多的介绍,只是要注意的是更改或删除一个分类时,该如何处理该分类下的信息本体呢?由于使用表关联,处理这些功能如同是在一个表内处理一般。

      3、多工处理

      但许多人在同时编辑一条新闻时会出现什么情况呢?情况就数据库只会存储最后编辑的内容,这种情况发生将意味着前面修改的人的辛苦白费了,多功处理就是解决这个问题的,采取的方法是先入为主的,即先进入编辑的拥有编辑权限,而后进入的只拥有浏览的权限直到编辑完成为止。这个功能很象 linux 的权限控制,不是吗?

      完成这个功能可用几种方法:1。用 cookie 来控制,2。在表内增加权控字段。当然用 cookie 更加简单些,cookie 实现的方法和流程是这样的:

      当有管理员进入编辑,设置 cookie ,编辑功能的程序段则判断 cookie 值,为空允许编辑,非空则拒绝编辑,退出编辑时则将 cookie 清空,如此循环往复;多工功能是个有效的功能,至少能减少时间上和人力上的浪费。

      新闻浏览功能的实现很简单,加上翻页功能(本站已经介绍过了),强大的新闻系统基本完成,似乎少了个很重要的功能,不错就是搜索引擎。能够拥有强大的搜索引擎是每个网站的心愿,而一个强大的搜索引擎的制作又是相当复杂和困难的,它涉及到效率,准确性和速度等诸多方面。

      这里介绍的搜索引擎不会涉及到这么深的研究,只是针对特定的内容进行精确的查询。一个功能复杂而强大的搜索引擎要用到很多的程序和数据库技巧,我们就先从简单的搜索引擎开始介绍。搜索引擎的工作状况是怎样的呢?它接收给出的关键字,然后在给出的范围内进行搜索,然后将搜索的结果返回。

      给出的关键字可能在信息内容的任何位置,引擎又是如何进行查找的呢?在这要用到如下的数据库语句:

         select * from table where (name like '%".$keyword."%');

      name 是查找的具体位置,一般放字段名,like '%".$keyword。"%' 是模式匹配,就是在内容中查找有无 $keyword。看个例子:

      在数据表 news 查找包含关键字 good 的所有标题:

         select * from news where (title like '%good%');

      这是个精确查找,能够在数据库内找出所有带 good 的 title 出来,还有一种模糊查找:

        select * from news where (title like '%good');

      这样也可查找出结果。

      假设 news 里包含 title(标题),message(内容),user(用户) 等的字段,上面的查找范围就太狭窄了,因为只对 title 进行了查找,要对其它内容进行查找又不想操作太复杂该如何处理呢?

      我们注意到在程序里任何变动的值都用变量来进行处理,在这这个方法一样行得通,可将想要搜索的范围作为变量进行传送,这样就有如下的数据库语法了:

        mysql_query("select * from news where ($name like '%".$keyword。"%'));

      $name 存放的就是传送过来的字段变量的值,而这种可变的值通过 html 的 select 下拉提交表单来完成。如果想要将搜索结果限制在一定的时间范围内又该如何实现呢?如想要查找 5 天之内的信息。还记得曾在 cookie 介绍中用到的数据库语法吗?

      对了,该联合的语法如下:

        mysql_query("select * from news where ($name like   '%".$keyword。"%') and time>date_sub('$time',interval 5 day)");  

      其中 $time 为查找的现在时间:$time=date('Y-m-d H:i:s'); time 是数据库存储信息时间的字段。现在将 $old 来代替 5:

        mysql_query("select * from news where ($name like   '%".$keyword。"%') and time>date_sub('$time',interval $old day)");  

      同样 $old 的值通过 select 提交表单将限定的不同时间提交过来,便完成了这个颇为强大的搜索引擎。一些更为强大的搜索引擎需要程序技巧上的配合,读者可通过以上的原理自行扩展试验。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告