PHP学习-网页通讯录(二)

上回增加了一个登录才允许查看管理的功能(管理员权限),但如果添加时把信息输错了,或者说变更了电话号码了,还是很不方便。所以这次在想做一个编辑功能来解决这个问题。这里参考了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>’;

}

}

?>

基本上,做了如上修改,编辑功能就搞定了。

最新演示版本(不保留历史版本,所有更新完的功能都将展示到这个地址上):

www.fishme.cn/show

用户名1    密码1

发表评论

您的电子邮箱地址不会被公开。