通过清心醉

PHP实例-编写自己的PHP通讯录5-修改/删除联系人

修改/删除联系人,都是通过唯一ID来进行操作,为什么呢?

因为如果根据名字,可能会有相同,性别更不可能了.而ID是自增的唯一的.

在contacts.php输出文件里有了修改和删除的功能.

<a href=’modification.php?id=$row->id&names=$row->names&sex=$row->sex&phone=$row->phone&address=$row->address’>修改</a>/<a href=’delete.php?id=$row->id’>删除</a>

删除的话,根据ID就可以了,而修改的话,因为除了ID外的姓名/性别/电话/地址,都是可以修改的项目.所以都传递过去可以知道自己具体修改的是哪些.

先来看看删除:

<a href=’delete.php?id=$row->id’>删除</a>

当把id以GET的方式传递了之后

<?php

#delete.php
header(“Content-Type:text/html;charset=utf-8”);
//20141112
require_once(“inc.config.php”);
require_once (“config.php”);
$deluserid=@$_GET[“id”]; //获得要删除的ID
if (is_array($_GET)&&count($_GET)>0)//是否通过POST传值了
{
if(isset($_GET[“id”]))
{
$delusersql=”DELETE FROM contacts WHERE id = ‘$deluserid'”;
if(!mysql_query($delusersql,$con))
{
die(‘删除出错: ‘ .mysql_error());
}
echo “删除成功</br>”;
mysql_close($con);
echo “正在返回首页,请稍后…”;
echo “<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;
exit;
}
else{    echo “非法访问”;}
}
echo “非法访问”;
?>

MYSQL语句里根据传递的ID,删除ID列为GET传递的数据.

然后我们再来看看修改联系人

<?php
header(“Content-Type:text/html;charset=utf-8”);
//修改联系人代码
require_once(“inc.config.php”);
require_once (“config.php”);
$modificationid=@$_GET[“id”]; //获得要删除的ID
$modificationnames=@$_GET[“names”];
$modificationsex=@$_GET[“sex”];
$modificationphone=@$_GET[“phone”];
$modificationaddress=@$_GET[“address”];
if (is_array($_GET)&&count($_GET)>0)//是否通过GET传值了
{
if(isset($_GET[“id”]))//传递的值是否有ID.由于不增加代码繁琐,所以只验证ID
/*说明::
readonly元素:禁止用户修改,参与$_GET和$_POST传递参数
disabled元素:禁止用户修改,不参与$_GET和$_POST传递参数
由于需要通过ID来进行判断修改的MYSQL数据是哪一个
而前面增加数据的时候,是通过最大的ID+1的方式,就不会有重复.
如此一来,就必须要禁止掉用户进行ID的表单修改和允许传递参数.
$_GET获取的ID值,在通过$_POST传递到后面处理代码页面.
*/
{
echo ‘<form method=”post” action=”modificationsql.php”>’;
echo “</br></br></br></br>”;
echo “<table width=’400′ align=’center’>”;
echo “<tr>”;
echo “<td>编号</br><input readonly=’value’ name=’modification0′ type=’text’ size=’30’ maxlength=’500′ value=’$modificationid’></td>”;
echo “</tr>”;
echo “<tr>”;
echo “<td>名字</br>
<input name=’modification1′ type=’text’ size=’30’ maxlength=’500′ value=’$modificationnames’></td>”;
echo “</tr>”;
echo “<tr>”;
echo “<td>性别</br>
<input name=’modification2′ type=’radio’ size=’30’ maxlength=’30’ value=’男’>男”;
echo “<input name=’modification2′ type=’radio’ size=’30’ maxlength=’30’ value=’男’>女</td>”;
echo “</tr>”;
echo “<tr>”;
echo “<td>联系电话</br>
<input name=’modification3′ type=’text’ size=’30’ maxlength=’500′ value=’$modificationphone’></td>”;
echo “</tr>”;
echo “<tr>”;
echo “<td>联系地址</br>
<input name=’modification4′ type=’text’ size=’30’ maxlength=’500′ value=’$modificationaddress’></td>”;
echo “</tr>”;
echo “<tr>”;
echo “<td align=’center’><input type=’submit’ value=’修改’></td>”;
echo “</tr>”;
echo “</table>”;
}
else{    echo “非法访问”;}
}
else
{
echo “非法访问”;
}
?>

#首先对GET过来的变量进行输出处理,如果用户不去修改,则保存默认的数据,但ID限制了修改.

操作方法:

<?php
header(“Content-Type:text/html;charset=utf-8”);
//修改联系人代码
require_once(“inc.config.php”);
require_once (“config.php”);
$tempcationid=@$_POST[“modification0”];
$tempcationnames=@$_POST[“modification1”];
$tempcationsex=@$_POST[“modification2”];
$tempcationphone=@$_POST[“modification3”];
$tempcationaddress=@$_POST[“modification4”];
/*获取用户修改的数据*/
if (is_array($_POST)&&count($_POST)>0)//判断POST传值
{
if(isset($_POST[“modification0”])&&isset($_POST[“modification1”])&&isset($_POST[“modification2”])&&isset($_POST[“modification3”]))//判断要修改的数据是否全部传递
{
//进行名字,性别,电话,地址的修改,WHERE id=’$tempcationid’表示限制修改这个变量的参数ID
if(!eregi(“^[0-9]+$”,$tempcationphone))
{
echo “电话号码非数字”;
echo “<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;
exit;
}
$modificationinsql=”UPDATE contacts SET
names= ‘$tempcationnames’,
sex=’$tempcationsex’,
phone=’$tempcationphone’,
address=’$tempcationaddress’
WHERE id=’$tempcationid'”;
mysql_query($modificationinsql,$con);
echo “修改成功</br>”;
mysql_close($con);
echo “正在返回首页,请稍后…”;
echo “<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;
}
else{    echo “请完整填写数据!”;
echo “<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;
}
}
else
{
echo “非法访问”;
}

?>
由于contacts.php传递到表单的方式是GET的方式传递参数到modification.php,GET进行处理后,再以POST的方式传递到modificationsql.php中.

那是怎么知道我们修改的是哪一行的用户数据呢?

$modificationinsql=”UPDATE contacts SET
names= ‘$tempcationnames’,
sex=’$tempcationsex’,
phone=’$tempcationphone’,
address=’$tempcationaddress’
WHERE id=’$tempcationid'”;

前面的4行是要写入到哪一列的列名=$变量数据

最后一句:WHERE id=’$tempcationid'”; #//最后面的分号是语句上的

表示,只写入ID=$tempcationid的参数,$tempcationid的参数是从上一个modification.php页面POST过来的,modification.php里又是从contacts.php里的URL里以GET的方式传递过来的.在contacts.php里已经有?id=$row->id传递.

顺序来写吧:

contacts.php从URL里?id=$row->id以GET方式传递到modification.php表单;

modification.php表单通过input readonly元素限制修改,在以value=’$modificationid’的方式保留原ID参数以POST方式传递给modificationsql.php页面(注:$modificationid是$_GET[“id”]的一个变量)

然后modificationsql.php修改的时候,因为WHERE id=’$tempcationid'”来限制在某一行,就不会全部进行修改.到此,整个PHP+MYSQL基础通讯录就完成了.

 

 

 

关于作者

清心醉 administrator

发表评论

请输入验证码: