您当前的位置: 站长圈 > 后端教程

php的增删改查(三)——更新数据(改)

来源:|1 作者:adminroy 点击: 0

今天要学习的是php的增删改查中的更新数据,我们还是先来理一下头绪。首先你更新数据必然是原来就有这么一条数据,这条数据从哪里来的,我怎么就知道我修改的就是这条数据呢?还是一步步来实现吧。

让我们回到上一篇查询数据时埋下的一个伏笔处,当我们查询出所有的数据并且一条条的显示在页面上以后,每一条数据后面都有一个“修改”和“删除”链接,如果我们可以点哪条数据的“修改”就修改哪条数据不就可以实现我们的想法了吗?

那每一个“修改”又怎么会知道自己是属于哪一条数据的呢?这就要用到它们的id了,因为id这个字段是自动增长的,又是主键,不会重复,每一条数据的id都是唯一的,我们在查询数据的时候也已经查出了每一条数据的id,所以我们把“修改”这个超链接的链接地址改为:

现在你把鼠标放在每一个“修改”上经过,然后看下面的状态栏,是不是可以看见随着鼠标移动到每一个“修改”链接上,它的id都是对应自己的序号的呢,如图:

update.php?id=这个链接地址的意思就是,当我们点击每一个“修改”链接的时候,都会跳转到update.php这个页面,并且传递一个相对应的每一条数据的id值给它。

那么我们还等什么呢,赶紧创建一个update.php页面来接住它传过来的值,并且根据这个值来做更新数据的处理吧。

试想一下,当你平时在后台修改一篇文章时,点了修改按钮后首先出来的是什么?是不是这篇文章的原信息?先看见原来每个字段都是什么,然后才能修改更新啊。所以处理修改的页面其实有2件事情要做,第一件事是根据接收到的id把那条数据查询出来显示在页面(这和之前的显示数据的主页有点类似),第二件事是提交了修改的表单以后就更新了这条数据(这也有点类似于我们的添加数据的页面)。

首先做第一件事,显示数据到页面。有了之前的经验,这个功能的实现就显得相对简单了,看代码:

include("conn.php");
$id=$_GET['id'];
$sql="select * from news where id='$id'";
$query=mysql_query($sql);
$row=mysql_fetch_array($query);
 

分析:与主页查询的不同之处

1. $id=$_GET['id']获取主页传过来的id值。虽说和主页一样都是查询数据,可是不同的是,主页是列出所有的数据,而修改页面仅仅需要列出一条数据,而这条数据是根据点了主页的修改链接而传过来的id决定的,所以我们可以先用$_GET['id']来获取这个id,这个括号里的id就是之前update.php?id=这个问号后面的参数名

2.然后就是写查询语句然后执行它,注意:查询语句的条件就是where id='$id'

3. 接着还是用$row=mysql_fetch_array($query)来获取这一条数据,这是一个数组,与主页不同的是这里只有一条数据,不需要循环。

4.把获取的各个字段的值放入html的相应位置,这里和主页不同的是,主页查询出数据以后是为了显示的,而修改页面除了显示还需要为等一下更新做准备,所以它的各个字段值是显示在表单项里的,如图


 

好了,显示数据做完了,我们仿佛是等着吃面包的狼,终于等到要真正处理更新数据的事了。翠花,上代码:

if(isset($_POST["Submit"])){
         $title = $_POST['title'];
    $befrom = $_POST['befrom'];
    $newstext = $_POST['newstext'];
         $newsid=$_POST["newsid"];
         $updatesql="update news set title='".$title."',befrom='".$befrom."',newstext='".$newstext."' where id=".$newsid;
         mysql_query($updatesql);
         if(mysql_affected_rows()<0){
           echo "<script language='javascript'>alert('更新失败');window.history.go(-1)</script>";
         }else{
           echo "<script language='javascript'>alert('更新成功');window.location='index.php'</script>";
         }
} 

分析:修改数据和添加数据相同的是它们都是用户通过提交表单来完成的,所以都需要获取表单项的值,都需要在点击提交按钮后执行一系列操作。要特别指出的有几点:

1.更新数据操作是需要一个条件的,这个条件在这里就是需要获取这条数据的id,因为我们要更新的就是当前这条数据。但是刚刚我们在主页通过GET方法接收的id已经在接收完成后没有了,但是我们现在又需要再次用到它,那怎么办呢?很简单,做第一步查询数据的时候我们不是通过接收到的id查询出了这条数据的所有字段的值了吗,当然也包括它的id咯,但是我们又不需要在页面显示出来,而且提交表单的时候又要让我们可以获取到它,所以这里可以用一个表单的“隐藏域”来存放这个值,这个隐藏域你可以放在表单的任何地方,所以在表单代码里加上,然后同样是用$newsid=$_POST["newsid"]来获取它。

2.更新的sql语句格式是update 表名 set 字段名=字段值 where 条件,多个字段用逗号分隔。如果你想改新闻发布的时间,也可以在sql语句里加上newtime字段的值为now(),这个不是在表单项里提交的。

其它就和添加数据页面差不多了,这里就不重复说明了,不清楚的朋友可以看“php的增删改查(一)——添加数据(增)”。

好,我测试成功了,你呢?

下一章我们来一起学习php的增删改查的最后一个操作——删除数据。