上回增加了一个登录才允许查看管理的功能(管理员权限),但如果添加时把信息输错了,或者说变更了电话号码了,还是很不方便。所以这次在想做一个编辑功能来解决这个问题。这里参考了Zimmerk的教程,但是可能由于Zimmerk接下来的教程完整度没有一开始高,而且我做的通讯录架构有些变化,基本上所有的代码已经无法直接使用了,很多地方重新调试了很久才调通。
首先在首页表格中添加编辑列,这个倒直接可以拿来用。在“index.php”页面表格代码中增加“管理”列,在表格代码最后一行加入
<th bgcolor=”#CCCCCC” scope=”col”>管理</th>
然后在循环中(自动生成表格的代码)加入
<td><a href=”Edit.php?id=<?php echo $row[0];?>” >编辑</a></td>
这里的“$row[0]”我理解成数据库中该条数据首列自动生成的数据,将其作为ID展示记录。在页面跳转及数据库更新处理时极为重要,调试过程中我一度因为没注意到这个ID导致更新数据库时失败。
接下来是对编辑页面的代码处理,使用Zimmerk说的直接在“input.php”页面上增加编辑代码的方法,一直没有尝试成功,可能是我之前在“input.php”页面加了一些不允许留空提交的逻辑判断导致。
于是我还是新建了一个“edit.php”页面来处理编辑相关代码。首先依然是调用“check.php”页面判断是否登录才允许进行操作。接下来获取当前页面的ID,并通过数据库查询语句把对应的数据查询并展示出来。其中锁定了“姓名”和“性别”列不允许修改,其他信息展示并允许修改。相关代码如下
<?php
$id = $_GET[‘id’]; //获取当前页面的id并定义为$id
$sql = “SELECT * FROM `txl_addrlist` WHERE Id=$id”; //查询数据库
require(‘conn.php’); //调用conn.php文件,执行数据库操作
$row = MySQL_fetch_row($result) //按列获取数据
?>
<form id=”form1″ name=”form1″ method=”post” action=”post-edit.php?id=<?php echo $id;?>” onsubmit=”test()”>
<table width=”400″ border=”1″ align=”center” bordercolor=”#DDDDDD”>
<tr>
<td width=”80″>姓名</td>
<td width=”320″>
<?php echo $row[1];?>
</td>
</tr>
<tr>
<td>性别</td>
<td><?php
//判断性别
if($row[2]==0)
{
$sex = ‘帅哥’;
}
else
{
$sex = ‘美女’;
}
?>
<?php echo $sex;?></td>
</tr>
<tr>
<td>手机</td>
<td><label>
<input name=”mobile” type=”text” id=”mobile” value=”<?php echo $row[3];?>”/>
</label></td>
</tr>
这个页面只管查询展示并且填写需要修改的信息,填写完需要修改的信息之后通过“action=”post-edit.php?id=<?php echo $id;?>”这段代码调用“post-edit.php”页面来更新数据库里对应的信息。
“post-edit.php”页面,同样先调用“check.php”做登录判断,然后获取当前页面ID、上一个页面传递过来的手机号码等信息,作为更新数据库指定数据的依据。指定数据更新代码参考如下
<?php
$id = $_GET[‘id’]; //获取当前页面的id并定义为$id
$mobile = $_POST[‘mobile’]; //获取上一个页面传送过来信息并定义
$address = $_POST[‘address’];
$note = $_POST[‘note’];
//判断提交信息不能为空值
if(empty($_POST[‘mobile’])){
echo ‘<p style=”text-align:center”>【手机】不能为空!点击 <a href=”javascript:history.back(-1);”>返回</a> 重试<p>’;
}
//需要执行的SQL语句(这里是更新数据功能)
/*$sql = “update `txl_addrlist` set
`mobile` = ‘$mobile’,
`address` = ‘$address’,
`note` = ‘$note’
WHERE Id = $id”;
//调用conn.php文件进行数据库操作
echo $sql;*/
else {
$sql = “update `txl_addrlist` set
`mobile` = ‘$mobile’,
`address` = ‘$address’,
`note` = ‘$note’
WHERE Id = $id”;
require ‘conn.php’; //将$sql交由conn.php处理了
//提示操作成功信息,注意:$result存在于conn.php文件中,被调用出来
if($result)
{
echo ‘<p style=”text-align:center”>恭喜,操作成功!<br /><a href=”index.php”>【返回通讯录首页】</a><p>’;
}
}
?>
基本上,做了如上修改,编辑功能就搞定了。
最新演示版本(不保留历史版本,所有更新完的功能都将展示到这个地址上):
用户名1 密码1