|
 
|
[最适合菜鸟]刚学PHP,做的最粗糙最简单的留言本[全程思考过程]
呵呵,学习PHP的时间,看我的注册时间吧.
不过,之前有过一点C++的基础,所以语法还是挺容易看懂的.
呵呵,看完的新手们可以接着看 http://www.phpchina.com/bbs/thread-32482-1-1.html
是在这篇帖子的基础上扩展的,我准备以此为基础,不停的完善这个程序,分享学习过程
但是就是看 MYSQL语法啊,对于SQL,我一点概念都没有,后来找了很多资料,才终于知道了基本概念
就是,数据库->表->字段->行; (呵呵,也许有的人认为很简单,但是这花了我两天的时间才领悟的,本人比较笨,呵呵)
然后,知道了数据库的概念之后,我就想应该可以弄个留言本玩玩了吧.
但是,由于除了写echo之外,从来没有写过PHP代码,所以,基本上这个粗糙的留言本都是翻资料,在论坛找资料所得
如果是高手的话,就不用看了吧,因为这确实比较简单的,
如果你还是刚入门,就可以看看,因为我把思路都放在注释里面了.
下面,就看我这个最最简单的留言本吧.呵呵
首先,是数据库的结构,既然是最粗糙的留言本,就只需要这几个字段:
- ID(我看到别人一般都有,也就加了,是自动增长的)
- name 就是留言者的名称
- content 留言内容
- ltime 留言的时间
其中,name和content是需要留言的人自己写的,其他是自动生成的.
现在我把建立表的语句放上来:- create table if not exists my_liuyan #这里是建立一个表
- ( lid int not null auto_increment primary key, #建立一个lid,自动增加,主键
- name varchar(30) not null, #建立了一个名字
- content blob not null, #建立了内容字段,类型为 blob ,是查资料的,虽然对blob还不了解
- ltime varchar(30) not null #建立了存贮发言时间的字段,本来类型是定义成 datetime 的,但是我要存贮的是07年8月4日04:05:36
- #这种形式的,所以就把 datatime 改成了 varchar(30) 了
- );
复制代码 一开始写这个SQL语句的时候,都犯了很多错误,比如 create ,我就写成了 creat ,呵呵,毕竟一开始写,我知道这是一个过程.
然后把上面这段放在 phpmyadmin 里面运行,就建立这个表(当然,在此之前弄错了好多);
然后,我就开始写全局变量的文件:
首先,是config.inc 这个配置文件代码:- <?php
- //全局变量
- $DBHOST = 'localhost'; //数据库服务器地址,我是在本地的
- $DBUSER = 'root'; //数据库用户
- $DBPWD = ' '; //数据库密码,我这里就不写了,呵呵
- $DBNAME = 'myliuyan'; //这是我在phpmyadmin里面建立的一个数据库,里面来放我刚刚建立的一个表
- ?>
复制代码 然后,就是开始写 index.htm 这个静态页面了.也贴出代码:(这里我只把 body这个标签里面的代码贴出来)- <body>
- <form action="jieshou.php" method="POST"> <!--这里表示接受这个表单数据的文件地址:jieshou.php,方法是post--!>
- 姓名:<input type="text" name="user_name"/><br/> <!--定义接受姓名的变量为user_name--!>
- 信息内容:<br/>
- <textarea name="user_content" cols="40" rows="8"></textarea> <!--定义接受内容的变量为user_content--!>
- <br/>
- <input type="submit" name="btn_ok" value="提交"/> <!--定义一个提交按钮,这里我定义了一个变量,但是后面没有用,因为我看资料,有的资料定义了这个变量,我想是以后有用的吧--!>
- </form>
- </body>
复制代码 呵呵,是不是很简陋的页面啊,先不管,看看能不能成功再说.
然后,要写 jieshou.php 这个文件了,这个文件的任务就是把留言的信息提交到数据库中去,贴代码:- <?php
- //使用接受一下参数,看看对不对(这是一开始还没有链接数据库的时候,我做的测试)
- $user_name = $_POST['user_name']; //得到用户名
- //echo $user_name; //这是刚开始我做的看能不能得到在index.htm中的数据写的语句
- $user_content = $_POST['user_content']; //得到留言内容
- /////////////////////////////////////////////
- //这里,我要说一下上面两个语句,也就是我得到index.htm中的语句
- //之前,资料中是用 $HTTP_GET_VARS得到数据的
- // 然而,我看到很多人用 $_POST,所以,在论坛找到了资料
- //一个是PHP4.3之前的用法,一个是4.3之后的版本
- ///////////////////////////////////////////////////////////////////////////
- $creat_time = date(y.'年'.m.'月'.d.'日'.h.':'.i.':'.s); //得到提交留言日期
- ////////// 同时,上面这个函数 datedate(y.'年'.m.'月'.d.'日'.h.':'.i.':'.s) 也是查资料的,得到的是 07年08月04日12:03:36这样的形式.
- //链接数据库
- include_once('config.inc'); //引入数据库参数 ,把刚刚那个文件的变量引入进来了.
- $con = mysql_connect($DBHOST,$DBUSER,$DBPWD); //这个函数是链接到数据库的函数
- //if($content) echo '数据库链接成功'; //这个也是测试数据库链接的情况
- mysql_select_db($DBNAME,$con); //这个是选择数据库,前几次因为忘了选择数据库,所以总是插入失败
-
- //if($close) echo '数据库关闭成功'; //同样,这个也是测试数据库的关闭成功情况,后来也是忘了把这句注释
- //掉,弄得插入失败
- $query = "INSERT INTO my_liuyan (name,content,ltime)";
- $query.= "VALUES('$user_name','$user_content','$creat_time')"; //这两行是数据库查询语句,不过还没有实行,
- echo $query; //输出查询语句,看看有没有语法错误
- $reslt = mysql_query($query); //这个函数是查询函数,这一句才是插入数据的命令
- if($reslt) echo '数据库插入成功'; //看看数据插入成功否
- $close = mysql_close($con); //关闭数据库
- ?>
复制代码 然后,测试后,成功的写入信息到数据库了,但是,我在phpmyadmin中看BLOB数据的时候,看不到,请问怎么看BLOB数据?
然后,就是查看留言内容的页面了,其实就是一个查询数据库的页面,代码贴上:- <?php
- //////////////////测试查询数据库
- include_once('config.inc'); //引入文件
- $con = mysql_connect($DBHOST,$DBUSER,$DBPWD); //链接数据库
- mysql_select_db($DBNAME,$con); //选择数据库
- $query = "select * from my_liuyan"; //设置查询的语句
- $reslt = mysql_query($query); //实施查询命令
- //if($query) echo '查询成功<br/>';//测试查询成功否
- while ($row = mysql_fetch_row($reslt)) //把结果返回到 $row 数组中
- {
- echo 'ID: '.$row[0].'<br/>';
- echo 'name: '.$row[1].'<br/> ';
- echo 'content: '.$row[2].' <br/> ';
- echo 'time: '.$row[3].' <br/> ';
- echo '<hr/>';
- } //这段while语句就 把查询到的语句输出出来
- mysql_close($con); //关闭数据库
- ?>
复制代码 好了,这就是昨天晚上花了3个小时做出来的,
其中,自己范了很多错误,是学到在看书时没有意识到的错误.
虽然程序很简陋,也没有设计到分页查询,但是,这毕竟是自己的第一个有功能的程序了
呵呵,所以就厚着脸皮发出来,
然后自己再把程序不断完善,在这个过程学到更多的知识和技巧.
对于高手来说,这个应该是最基本的代码了,所以,如果大家有什么建议的话,也可以说出来,
帮助我们这些菜鸟成长吧.:loveliness:
顺便问一下:加入字段(也就是列),应该用什么语句?
[ 本帖最后由 njuptsoz 于 2007-8-10 17:05 编辑 ] |
|