destoon添加修改会员信息时,信息丢失
最近做一destoon项目,因注册字段太多,分了几个步骤。分几个页面来修改公司信息。发现有时候修改时以前保存的字段莫名丢失.。
经查是 因为member.class.php add 和 edit时,set_member函数 初始化了一些字段,当提交的表单不含这些字段时,这些字段会初始化成空字符。所以保存后会丢失
解决方法
1、不使用$do->edit($post) 函数 自己重写保存程序
2、在表单里增加隐藏字段 把set_member里初始化过的字段一块提交
3、在调用$do->edit($post) 之前 赋值一编 例如 post["mail"]=$user['mail']
set_member里初始化的字段
$member['email']
$member['mail']
$member['msn']
$member['qq']
$member['postcode']
$member['ali']
$member['skype']
$member['address']
$member['mode']
$member['keyword'] = $member['company']; //把公司名做关键词
$member['homepage']
$member['capital']
$member['sound'] //默认成了0
如果是修改还初始化了
$member['banktype']
$member['keyword']
以下是对应解决代码 放到$do->edit($post)之前 下边是所有需要的字段,别忘了去除当前页面需要修改的,否则。。。
//解决代码开始
//判断了必填类型的
$post['truename'] = $user['truename'];
$post['groupid'] = $user['groupid']; //会员组
$post['passport'] = $user['passport']; //通行证,昵称?????
//set_member初始化的
$post['email']=$user['email'];
$post['mail'] =$user['mail'];
$post['msn']=$user['msn'];
$post['qq']=$user['qq'];
$post['postcode']=$user['postcode'];
$post['ali']=$user['ali'];
$post['skype']=$user['skype'];
$post['address'] =$user['address'];
//$post['mode']=$user['mode']; //mode 应该是string[] 与sell一样
if($user['mode']){
$post['mode']=explode(",",$user['mode']);
}
$post['keyword'] = $user['keyword'];
$post['homepage']=$user['homepage'];
$post['capital']=$user['capital'];
$post['sound']=$user['sound'];
$post['banktype']=$user['banktype'];
$post['keyword']=$user['keyword'];
$post['content']=$user['content']; //内容字段比较特殊,dt里内容字段时另表存放的 在前边需要给$user['content']赋值
//解决代码结束
前边处理$user['content'] 的代码
$content_table = content_table(4, $_userid, is_file(DT_CACHE.'/4.part'), $DT_PRE.'company_data'); //返回内容表 siyi_company_data
$t = $db->get_one("SELECT * FROM {$content_table} WHERE userid=$_userid");
if($t) {
$user['content'] = $content = $t['content']; //公司简介
} else {
$user['content'] = $content = '';
$db->query("REPLACE INTO {$content_table} (userid,content) VALUES ('$_userid','')");
}
function set_member($member) {
global $MOD;
$member['email'] = trim($member['email']);
$member['mail'] = isset($member['mail']) ? trim($member['mail']) : '';
is_email($member['mail']) or $member['mail'] = '';
$member['msn'] = isset($member['msn']) ? trim($member['msn']) : '';
is_email($member['msn']) or $member['msn'] = '';
$member['qq'] = isset($member['qq']) ? trim($member['qq']) : '';
is_numeric($member['qq']) or $member['qq'] = '';
$member['postcode'] = isset($member['postcode']) ? trim($member['postcode']) : '';
is_numeric($member['postcode']) or $member['postcode'] = '';
$member['ali'] = isset($member['ali']) ? trim($member['ali']) : '';
if(!$this->is_clean($member['ali'])) $member['ali'] = '';
$member['skype'] = isset($member['skype']) ? trim($member['skype']) : '';
if(!$this->is_clean($member['skype'])) $member['skype'] = '';
$member['address'] = isset($member['address']) ? trim($member['address']) : '';
if(!$this->is_clean($member['address'])) $member['address'] = '';
$member['mode'] = (isset($member['mode']) && is_array($member['mode']) && $member['mode']) ? implode(',', $member['mode']) : '';
$member['keyword'] = $member['company'];
$member['homepage'] = isset($member['homepage']) ? fix_link($member['homepage']) : '';
$member['capital'] = isset($member['capital']) ? dround($member['capital']) : '';
$member['sound'] = isset($member['sound']) ? intval($member['sound']) : 0;
if($this->userid) {
$member['banktype'] = $member['banktype'] ? 1 : 0;
$member['keyword'] = $member['company'].strip_tags(area_pos($member['areaid'], ',')).','.$member['business'].','.$member['sell'].','.$member['buy'].','.$member['mode'];
clear_upload($member['identity'].$member['thumb'].$member['content'], $this->userid);
$new = $member['content'];
if($member['thumb']) $new .= '<img src="'.$member['thumb'].'">';
$content_table = content_table(4, $this->userid, is_file(DT_CACHE.'/4.part'), $this->table_company_data);
$r = $this->db->get_one("SELECT content FROM {$content_table} WHERE userid=$this->userid");
$old = $r['content'];
$r = $this->get_one();
if($r['thumb']) $old .= '<img src="'.$r['thumb'].'">';
delete_diff($new, $old);
} else {
if($member['thumb']) clear_upload($member['thumb'].$member['content']);
}
$member['introduce'] = addslashes(get_intro($member['content'], $MOD['introduce_length']));
if(!defined('DT_ADMIN')) {
$content = $member['content'];
unset($member['content']);
$member = dhtmlspecialchars($member);
$member['content'] = dsafe($content);
}
if($MOD['introduce_clear'] || $MOD['introduce_save']) {
$member['content'] = stripslashes($member['content']);
$member['content'] = save_local($member['content']);
if($MOD['introduce_clear']) $member['content'] = clear_link($member['content']);
if($MOD['introduce_save']) $member['content'] = save_remote($member['content']);
$member['content'] = addslashes($member['content']);
}
if($member['catid']) {
$catids = explode(',', substr($member['catid'], 1, -1));
$cids = '';
foreach($catids as $catid) {
$C = get_cat($catid);
if($C) {
$catid = $C['parentid'] ? $C['arrparentid'].','.$catid : $catid;
$cids .= $catid.',';
}
}
$cids = array_unique(explode(',', substr(str_replace(',0,', ',', ','.$cids), 1, -1)));
$member['catids'] = ','.implode(',', $cids).',';
}
return $member;
}
destoon添加修改会员信息时,信息丢失的更多相关文章
- 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白
这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ...
- JS动态添加Easyui的HTML时样式丢失
解决办法: $.parser.parse($("#creatLi").html(<li>xxxxxx</li>)); ------------------- ...
- JavaWeb_day03_员工信息添加修改删除
day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...
- cmd中mysql主键id自增,在添加信息时发生错误,再次成功添加时,id已经跳过错误的信息继续自增。
id 自增,在往这个表里添加信息时 发生错误,再次添加 id数值已经跳过之前
- 帝国cms插件 解决后台修改信息时内容关键字不替换的问题
很多站长是不是发现了帝国cms增加信息时,是有关键词替换的,这样是有利于网站优化排名. 但是在后台格式化数据之后,再去进行修改之后,对不起,内容关键字就实效了. 针对这一问题,解决方案如下: 找到 / ...
- Sql Server之使用T_SQL创建,修改,查看数据库信息
一.使用Transact_SQL创建数据库 Transact_SQL语法如下: create database database_name [ on [primary] [<fi ...
- MySQL修改表字段相关信息
昨天收获颇多,首先回顾一下有关mysql的内容. 我在查询表信息时,出现了 empty set 0.00 sec 的错误,我很奇怪,仔细检查发现原来是表字段名称写错了, 于是我想修改字段名称,经过查询 ...
- 利用神器BTrace 追踪线上 Spring Boot应用运行时信息
概述 生产环境中的服务可能会出现各种问题,但总不能让服务下线来专门排查错误,这时候最好有一些手段来获取程序运行时信息,比如 接口方法参数/返回值.外部调用情况 以及 函数执行时间等信息以便定位问题.传 ...
- RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
随机推荐
- iOS文字转语音(语音朗读)
1.第一步导入framework 2.导入头文件 #import <AVFoundation/AVSpeechSynthesis.h> 3. 设置代理 并写下面方法 (注:代理方法用不到 ...
- 如何使用localStorage?
首先使用localStorage的时候,我们需要判断浏览器是否支持localStorage这个属性. if(!window.localStorage){ alert("浏览器支持locals ...
- JMeter(5) JMeter之BeanShell使用
BeanShell介绍 BeanShell是用Java写成的,一个小型的.免费的.可以下载的.嵌入式的Java源代码解释器,具有对象脚本语言特性.本篇只记录一下基本的使用.有以下五个组件: Beans ...
- Luogu P1333 瑞瑞的木棍 并查集&&字符串?
把每种颜色看成一个点,然后合并去判联通: 若联通,判一下是不是欧拉图或欧拉路... 还有,我的不是正解,要吸氧才能水过去...QAQ // luogu-judger-enable-o2 // luog ...
- hdu2466-Shell Pyramid
先预处理一下层和行所对应的数,然后二分三个答案,注意细节 #include<cstdio> #define inf 0x3f3f3f3f ; typedef __int64 LL; u ...
- python大战机器学习——聚类和EM算法
注:本文中涉及到的公式一律省略(公式不好敲出来),若想了解公式的具体实现,请参考原著. 1.基本概念 (1)聚类的思想: 将数据集划分为若干个不想交的子集(称为一个簇cluster),每个簇潜在地对应 ...
- 解决win10下python3和python2共存pip的问题
经过在查阅网友的各种经验,发现仍然解决不了问题,python2和python3在win10下的安装就不再演示了,直接在python的官网下载就好,我机器上使用的是python2.7.15和python ...
- MapReduce项目之气温统计
在本博文,我们要学习一个挖掘气象数据的程序.气象数据是通过分布在美国全国各地区的很多气象传感器每隔一小时进行收集,这些数据是半结构化数据且是按照记录方式存储的,因此非常适合使用 MapReduce 程 ...
- 在Eclipse下搭建Hadoop开发环境
在前面的博文中博主展示了如何在虚拟机中搭建Hadoop的单节点伪分布集群,今天给大家介绍一下如何在Eclipse环境中搭建Hadoop的管理和开发环境,话不多说,下面我们就进入正题吧! 1.JDK安装 ...
- Storm编程入门API系列之Storm的Topology的stream grouping
概念,见博客 Storm概念学习系列之stream grouping(流分组) Storm的stream grouping的Shuffle Grouping 它是随机分组,随机派发stream里面的t ...