芽雨原创php新闻系统教程(第一版) 第三讲:新闻程序的算法(一) ------ 添加新闻
这个偶的个人主页是
http://yayu.512j.com/php/xwjc/03.htm
一。添加新闻
添加新闻既是向数据库添加新的数据。
整个算法是这样的:管理员在表单中填写新闻的内容,包括: title,author,source,content ,另外两个字段( id,time )的内容有服务器完成,当然也要自己写程序,只是不由自己手动而已。提交表单后,用 MySQL 语句将它们添加到数据库中。
下面简单介绍一下表单中 <input> 标签和 <textarea></textarea> 标签。
<input> 标签为单行文本框。偶们常用的属性有: name, type 。 name 属性指定了变量的名称,既这个名称代表了这个 <input> 中的内容。 type 属性指定了 <input> 中内容的性质。如果 type=text ,则为一般性的文字。如果 type=password ,则这个“ <input> ”中的内容在浏览器一律以黑点显示,这样可以在输入内容时不会在无意中被他人见到而造成数据安全问题。
<textarea></textarea> 标签为多行文本框,常用属性为 name 。
在本程序中此段程序如下所示:
<input name="author" type="text" size="40" maxlength="20">
在“ name="author" ”中的 "author" 就代表了“ <input> ”中的内容。同样的,这个 "author" 也可以是 "title" 或者其他,值得注意的是,这个 "author" 和字段 author 是不一样的。偶在这个地方提到两个非常相似的概念:字段 author 和变量 $author (上面的 ”author” 实际上就是 $ author ,因为它代表了“ <input> ”中的内容)。虽然它们几乎是同名的,但可绝对不是一回事。 Author 是数据表 news 里的一个字段名, PHP 用它来有限定的访问 MySQL 中的数据,在程序中是不能用其它的字符替换的;而 $author 是本程序中用户自己设定的变量符号,其值由“ <input> ”中对应元素的 name 属性得到。既然它只是变量符号,偶们就可以使用任意字段,只要保证与表单中对应元素的 name 属性一致就可。之所以选择用与字段名相同的字符,是因为这样偶们就不必再费力去多记一个变量名而已。
偶们再来看 <textarea></textarea> 标签中的内容:
<textarea name="content" cols="80" rows="15" wrap=" HYSICAL">
这个 <textarea></textarea> 中的内容是用来得到 content 字段内容的,因为此字段中的内容太多,所以只能用这个标签了。
当偶们填好这些内容后,只要提交就可以了,那么这一过程又是如何实现的呢? 下面偶们再来看以下的程序:
<input name="submit" type="submit" value=" 提交新闻 ">
<input type="reset" name=" reset" value=" 重写新闻 ">
这里的 type="submit"/ type="reset" 分别代表提交和重写新闻。 value 属性的内容在此按钮上显示出来。 name=" reset"/ name="submit" 中的含义和上面所说的是一样的。
HTML 中的表单( form )元素是专门负责也用户进行交互式操作的。当点击类型为 submit 的按钮时,表单中所有的元素都将以变量的形式提交给 action 所指的文件来处理。变量名由该元素的 name 属性来确定。在本程序中这个代码如下:
<form action=addnews.php method=post>
在这个地方偶们把处理数据的程序还是放在同一页面( action=addnews.php ),在 method 属性中偶们令 method=post ,这里的 post 是值传递的方式。那现在偶们就在 action 指定的页面来讨论以下的程序:
$author=$_POST["author"];
这里的 $author 是偶们自己定义的变量名, author 是在 <input> 标签中 name 属性中定义的名字。 POST 为 <form> 中 method 定义的值传递方式。通过这种值传递方式得到的数据,偶们一律用 $_POST[" "] 收取。
完整的这类程序如下所示:
if(@$_POST["submit"])
{
$author=$_POST["author"];
$department=$_POST["department"];
$title=$_POST["title"];
$content=parsecontent($_POST["content"]);
$date=date("y-m-d H:i");
mysql_query("INSERT INTO news(title,date,author,department,content) VALUES('$title','$date','$author','$department','$content')");
}
其中的 date( ) 函数用法请查看其他书籍。上面一共是 5 个字段,还有一个字段 id 因为偶们在“额外”中选择了 auto-increment ,所以上面的数据插入到数据库时, id 就自动加 1 了。
当然在这个程序前,必须先连接好数据库,下面的所有与数据库连接的程序也是一样的,必须先连接还数据库。 |