网站首页 > PHP教程> 文章内容

简单的php新闻发布系统教程

※发布时间:2020-10-29 17:01:39   ※发布作者:habao   ※出自何处: 

  简单的php新闻发布系统教程(第一版)第一讲:用 phpmyadmin 建立数据库首先建立一个数据库,名为 yayu 。在这个数据库下建立一个数据表,名为 news 。下面进入一个重点,那就是在表 news 下建立各个字段。

  那么,什么叫字段呢?通俗点,就是一类事物的总称。比如说,所有的新闻发表时间用一个名词来代表(从偶的经验来看,用 phpmyadmin 建立 字段可以用中文,但从习惯来说还是用英文,没办法,计算机美国最牛嘛)。偶们用“ time ”来表示。在字段 time 下可以有很多“发表时间”,那 么如何来区分这些时间呢,这个可以查询其它字段下的内容,比如偶们建立新闻的标题的字段为“ title ”, title 字段下的内容按照常理说来是 没有一样的。所以可以通过一个标题来查询这个发表时间。其实我们可以让每个 title 或 time 下的内容都对应一个编号,那就是字段——

  “ id ”:字段“ id ”是一个人们默认的首选字段,其它字段下的内容可以重复出现,但这个字段却是从 1 开始增大的阿拉伯数字。在设置这 个字段时,要设置主键、索引、唯一以及 auto-increment 。这个 auto-increment 就是自动增加的意思。当任一字段增加内容 时,这个字段就自动增加 1 ,也就是说,任一字段都对应一个唯一的 id ,比如 1 、 2 、 0 27 ……

  1. id :意义为每个新闻的编号,它是唯一的,类型为 tingint ,这个 tingint 类型无须指定长度,系统默为 4 ;在“额外”中选择 auto-increment ,并选择主键。

  2. author :意义为作者 (新闻发布人),设置类型为 varchar ,设置这个字段长度时,如果考虑作者均为中国人,则 8 个字节为上限( 4 个汉字),但如果考虑到作者 可能为外国人, 8 个字节显然太少了,对其它字段也存在同样的问题,在这里偶们把长度设置为 8 吧。

  2 . conten t 字段代表新闻内容,由于其容量可能会很大,因此采用 text 类型(最多支持 65535 字节)

  3 . title 字段设置为 primany key ,如果不会有一条以的新闻具有相同的发表时间, date 字段也可以作为? primany key ,这样今后对新闻的排序和检索会更加方便。

  4 . text 类型的字段虽然也属于一种字符类型,但其大小不能指定,如果设置长度,则系统会提示 SQL 语句出错。

  由于新闻不是所有人都能增加的,只能有管理员来做,所以现在我们再来建立数据表 users 来存放管理员们。

  偶们添加、取出、修改、删除新闻都必须首先做一件事,那就是连接主机,选择数据库,向数据库发出请求。否则一切都是纸上谈兵。下面介绍三个重要的 MySQL 语句,分别是: mysql_pconnect( ) (连接主机), mysql_select_db( ) (选择数据 库), mysql_query() (向数据库发出请求)。

  同功能的函数还有 mysql_connect( ) 。语法是一样的,区别在于前者一个长期连接,且无法使用 mysql_close() 函数关闭,而后者使用完后要用 mysql_close() 及时的关闭。对于一个网站来说,使用前者比后者好。这样可以减轻 MySQL 服务器处理连 接和关闭连接的负担。

  它的作用是选择一个数据库为当前数据库。以后的操作就都在这个数据库中进行了。这个函数如果执行成功,返回一个 true ,否则返回 lse 。

  了解了三个重要的函数后,偶们就可以对数据库发号施令了。那偶们用什么来发号施令呢?下面偶们再来看四个 MySQL 语句吧!

  它们分别是: insert (向数据库插入数据)、 delete (删除数据表中的数据)、 select (检索数据)、 update (更新数据)。

  语法A: insert into 数据表名(字段1,字段2,……) values(“ 字段1 d 的内容 ”,” 字段的2内容 ” …… )

  对A中,字段名可以省略,但后面的 values 部分的内容必须要和 phpmyadmin 中定义的字段顺序一样。

  如果没有“ where 指定地点”则表中所有数据都没了。“ limit 数字”可以告诉服务器可以删除的最大行数。

  值得注意的是,使用 update 语句时,要注意使用 where 字句,否则可能会导致大量的数据丢失。比如:

  再举一个正面的例子,记录管理员的表 users 中,如果有一个字段为 age ,用来存储用户的年龄,一年后,他们要增加一岁,可以使用以下的语句:

  整个算法是这样的:管理员在表单中填写新闻的内容,包括: title,author,source,content ,另外两个字段 ( id,time )的内容有服务器完成,当然也要自己写程序,只是不由自己手动而已。提交表单后,用 MySQL 语句将它们添加到数据库中。

  input 标签为单行文本框。偶们常用的属性有: name, type 。 name 属性指定了变量的名称,既这个名称代表 了这个 input 中的内容。 type 属性指定了 input 中内容的性质。如果 type=text ,则为 一般性的文字。如果 type=password ,则这个“ input ”中的内容在浏览器一律以黑点显示,这样可以在输入内容时不 会在无意中被他人见到而造成数据安全问题。

  在“ name=author ”中的 author 就代表了“ input ”中的内容。同样的,这个 author 也可以是 title 或者其他,值得注意的是,这个 author 和字段 author 是不一样的。偶在这个地方提到 两个非常相似的概念:字段 author 和变量 $author (的 ”author” 实际上就是 $ author ,因为它代表了 “ input ”中的内容)。虽然它们几乎是同名的,但可绝对不是一回事。 Author 是数据表 news 里的一个字段名, PHP 用它来有限定的访问 MySQL 中的数据,在程序中是不能用其它的字符替换的;而 $author 是本程序中用户自己设定的变量符号,其值由 “ input ”中对应元素的 name 属性得到。既然它只是变量符号,偶们就可以使用任意字段,只要与表单中对应元素的 name 属性一致就可。之所以选择用与字段名相同的字符,是因为这样偶们就不必再费力去多记一个变量名而已。

  当偶们填好这些内容后,只要提交就可以了,那么这一过程又是如何实现的呢? 下面偶们再来看以下的程序:

  HTML 中的表单( form )元素是专门负责也用户进行交互式操作的。当点击类型为 submit 的按钮时,表单中所有的元素都将以变量的形式提交给 action 所指的文件来处理。变量名由该元素的 name 属性来确定。在本程序中这个代码如下:

  在这个地方偶们把处理数据的程序还是放在同一页面( action=addnews.php ),在 method 属性中偶们令 method=post ,这里的 post 是值传递的方式。那现在偶们就在 action 指定的页面来讨论以下的程序:

  其中的 date( ) 函数用法请查看其他书籍。一共是 5 个字段,还有一个字段 id 因为偶们在“额外”中选择了 auto-increment ,所以的数据插入到数据库时, id 就自动加 1 了。

  当然在这个程序前,必须先连接好数据库,下面的所有与数据库连接的程序也是一样的,必须先连接还数据库。

  这里的算法是这样的:先在新闻首页上显示新闻的标题及其他附加内容(如发表时间),这可以用循环输出的办法输出所有的新闻的标题。要查看具体新闻的内容时,点击新闻标题的超级链接进入一个新的页面查看这条新闻。

  // 如果 url 中的参数不为一(不是第一页),就把当前页取值为 url 中获得的参数, $pre 为当前页减 1 , $next 为加 1

  对这段程序偶就不做详细的了。因为很麻烦,再说这和新闻程序的算法不是一回事,呵呵。在用的时候,偶们在输出的新闻标题后面这样写就可以了:

  这里的“ order by id desc ”意为驱除的记录是按编号由大到小的顺序输出的,换句话说就是新闻的输出总是新发表的在前面。 “ LIMIT $now,$recordnum ”了新闻输出的数目, id 的大小在 $now,$recordnum 之间,具体 $now,$recordnum 的数值请看的分页程序的(粗黑体字部分)。

  其中的“ href=index.php?id=.$rows[id]. ”就是第 $rows[id] 条新闻的具体地址了。从也可以看出显示具体新闻的程序也在 index.php 中了。当偶们点击这个超级链接时,此程序将参数传递给 PHP 文件中的同名变量。需要注意的是,你只能向动态页面传递参数,而不能传递给 .htm 结尾的静态页面。

  那这里所说的参数是指什么呢?的“ index.php?id=.$rows[id]. ”的“?”就是变量的开始,“ id ”则是变量名,“ .$rows[id]. ”就是变量的值了。如果还想向 PHP 文件传递更多的参数,可以用“ & ”隔开。例如:

  这里的 $_GET[id] 就是从浏览器地址栏中接受数据的方式。 isset( ) 是判断有无数据的函数。

  “ if(@$_GET[id]) ”中的“ @ ”意思是说函数返回出错提示。这样当程序出现异常时,不至于让普通用户看见那莫名其妙的出错信息。

  在这一部分,偶们来看看如何管理新闻程序只让管理员来操作。这包括让管理员注册(这个操作最好用 phpmyadmin 进行,毕竟不能随便让人当管理员嘛)、登陆、保存管理员的信息以便让系统识别他并让他对新闻进行操作、注销。

  这个程序分为两部分,前面是 MYSQL 部分,后面的是 HTML 部分(提交表单)。两部分连接起来的方式是在提交表单是在 input 标签设置 action=register.php 。把 MYSQL 放在前面是为了避免有的 PHP 函数不允许前面有 HTML 输出的缘故。

  // mysql_fetch_row() 函数把得到的所有数据存到一个数组中去,这个数组是以数字为

  { // mysql_fetch_assoc() 函数是把返回的数据以数组的方式保存,数组的下标与字段名 // 相对应

  Cookie 是 Web 服务器存储在客户端的小型数据包,当用户再次连接放置 Cookie 的 Web 服务器时, Web 服务器可以再次读出它防止在 Cookie 的数据,再通过 Cookie ,服务器可以将特定的信息放在访问者的机器上。

  偶们从程序中可以看见一个 Cookie 函数 setcookie() ,它用来存储用户的名字,语法为: setcookie( 自定义的用户名 , 用户的名字 );

  当偶们的一些客户端操作需要管理员执行时,偶们就要用到 Cookie 了。偶们使用 if(@$_COOKIE[username]) (这个得到数据的方式是不是和 POST 的很像呀)梦见杀人不见血

  

相关阅读
重庆学习网zslpsh,0755深圳房产人才招聘网,拾年网90后,anedc股票,最新电影下载淘娱淘乐,重庆中学生网高考,重庆中学生网高考,学习重庆方言网,重庆中学生学习方法,重庆俗语网,中学生网zslpsh,0755深圳交友网,重庆初中生,贵州重庆方言网,025新闻网,西南重庆方言歌曲,025南京交友网,重庆农家乐美女,观赏蟹种类zadull,云南重庆方言网,重庆中学学习网,028成都交友网,推广taoyutaol,西南四川方言网,观赏龟论坛zadull,四川重庆方言网,022天津交友网,重庆中学生网家长,鹦鹉鱼zadull,重庆俗语,电影淘娱淘乐,taoyutaole娱乐,华夏视讯网,0755深圳旅游招聘,昆明重庆方言网,淘娱淘乐影视,www.00game.net,观赏鱼zadul,重庆高考zslpsh,重庆中学生网高考,027房产招聘网,坝坝舞wagcw,西南重庆方言网,贵州重庆方言网,重庆言子儿网,热带鱼zadull,重庆高考zslpsh,0755深圳旅游招聘网,淘娱淘乐影视网,0571.361.cm,重庆方言学习网,028成都新闻,异形观赏鱼种类,影视网淘娱淘乐,最新电影下载淘娱淘乐,0773桂林论坛,拾年网80后动画片,观赏蟹论坛zadull,观赏龟繁殖教程,重庆一中zslpsh,重庆俗语网,广场舞wagcw,观赏虾的种类zadull,观赏鱼观赏虾观赏龟,西南方言网,观赏鱼之家论坛zadull,战争前线辅助00game,西南重庆方言小说,重庆中小学zslpsh,推广taoyutaol,战争前线论坛00game,0871交友网,025南京新闻网,重庆言子儿网站,娱乐taoyutaole,022天津交友网,025新闻网,重庆中学生网学习,022天津交友网,重庆方言歌网,www.120.cm健康网,anedc股票,重庆初中生