Web表单与会话技术_用户信息编辑

1、创建用户信息表,添加测试数据

create table `userinfo`(
	`id` int unsigned primary key auto_increment,
	`nickname` varchar(10) not null,
	`gender` enum('男','女') not null,
	`email` varchar(40) not null,
	`qq` varchar(20) not null,
	`url` varchar(200) not null,
	`city` varchar(10) not null,
	`skill` text not null,
	`description` text not null
)charset=utf8;

insert into `userinfo` values
(1,'小袁','男','51547630@qq.com','51547630','https://blog.csdn.net','郑州','HTML,PHP','“三万岁!”');

2、编写用户信息编辑页面(edit_html.php)j,将用户信息展示到表单中

<html>
<head>
    <meta charset="utf-8">
    <title>用户信息编辑</title>
</head>
<body>
<form method="post">
    <table>
        <tr><th>昵称</th><td><input type="text" name="nickname" value="<?php echo $data['nickname']; ?>"/></td></tr>
        <tr><th>性别</th><td><input type="radio" name="gender" value="男" <?php if($data['gender']=='男') echo 'checked'; ?>/>男
                <input type="radio" name="gender" value="女" <?php if($data['gender']=='女') echo 'checked'; ?>/>女</td></tr>
        <tr><th>邮箱</th><td><input type="text" name="email" value="<?php echo $data['email']; ?>"/></td></tr>
        <tr><th>QQ号</th><td><input type="text" name="qq" value="<?php echo $data['qq']; ?>"/></td></tr>
        <tr><th>个人主页</th><td><input type="text" name="url" value="<?php echo $data['url']; ?>"/></td></tr>
        <tr><th>所在城市</th><td><select name="city"><option value="未选择">未选择</option>
                <?php foreach($city as $v): ?>
                    <option value="<?php echo $v ?>" <?php if($data['city']==$v) echo 'selected'; ?> ><?php echo $v; ?></option>
                <?php endforeach; ?>
                </select></td></tr>
        <tr><th>语言技能</th><td><?php foreach($skill as $v): ?>
                <input type="checkbox" name="skill[]" value="<?php echo $v ?>" <?php if(in_array($v,$data['skill'])) echo 'checked'; ?>/><?php echo $v; ?>
                <?php endforeach; ?>
            </td></tr>
        <tr><th>自我介绍</th><td><textarea name="description"/><?php echo $data['description']; ?></textarea></td></tr>
        <tr><td colspan="2">
            <input type="submit" value="保存资料"/>
            <input type="reset" value="重新填写"/>
        </td></tr>
    </table>
</form>
</body>
</html>

3、实现用户信息编辑功能(edit_html.php),将编辑后的用户信息保存到数据库中

<?php
header('Content-Type:text/html; charset=utf-8');
require '../chapter3/public_function.php';
//连接数据库,设置字符集,选择数据库
dbInt();

//定义数组$city保存预设的城市下拉列表
$city=array('北京','上海','广州','深圳','其他');
//定义数组$skill保存预设的语言技能复选框
$skill=array('HTML','PHP','Python','NLP');
//假设当前登录用户的id为1
$id=1;
//判断是否有表单数据提交
if(!empty($_POST)){
    //指定需要接收的表单数据
    $fields=array('nickname','gender','email','qq','url','city','skill','description');
    foreach($fields as $v){
        //$save_dats保存$_POST中的指定字段数据,不存在的字段填充空字符串
        $save_data[$v]=isset($_POST[$v])?$_POST[$v]:'';
    }
    //单选按钮处理radio
    if($save_data['gender']!='男' && $save_data['gender']!='女'){
        die('保存失败:未选择性别。');
    }
    //下拉菜单处理select
    if($save_data['city']!='未选择' && !in_array($save_data['city'],$city)){
        die('保存失败:您填写的城市不在允许的城市列表中。');
    }
    //复选框处理checkbox
    if(is_array($save_data['skill'])){
        //只取出合法的数组元素
        $save_data['skill']=array_intersect($skill,$save_data['skill']);
        //将数组转化为用“,”分隔的字符串
        //Array ([0] => HTML[1] => PHP[3] => NLP ) 到'HTML,PHP,NLP'
        $save_data['skill']=implode(',',$save_data['skill']);
    }else{
        $save_data['skill']='';
    }
    //通过循环数组自动拼接SQL语句,保存到数据库中
    $sql="update `userinfo` set ";
    foreach($save_data as $k=>$v){
        $sql .="`$k`='".mysql_real_escape_string($v)."',";
    }
    //rtrim($sql,',')去除$sql中的最后一个逗号
    $sql=rtrim($sql,',')." where id=$id";
    $res=query($sql);
    //输出执行结果和调试信息
    echo $res ? "保存成功:$sql" : "保存失败:$sql<br>".mysql_error();
}
//根据指定id查询用户信息
$sql="select `nickname`,`gender`,`email`,`qq`,`url`,`city`,`skill`,`description` from `userinfo` where `id`=$id";
$res=query($sql);
//$data保存查询到的用户信息
$data=mysql_fetch_assoc($res);
//将skill字段通过“,”分隔符转换为数组
$data['skill']=explode(',',$data['skill']);

//加载视图文件
require './edit_html.php';

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值