最近做一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添加修改会员信息时,信息丢失的更多相关文章

  1. 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白

    这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ...

  2. JS动态添加Easyui的HTML时样式丢失

    解决办法: $.parser.parse($("#creatLi").html(<li>xxxxxx</li>)); ------------------- ...

  3. JavaWeb_day03_员工信息添加修改删除

    day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...

  4. cmd中mysql主键id自增,在添加信息时发生错误,再次成功添加时,id已经跳过错误的信息继续自增。

    id 自增,在往这个表里添加信息时 发生错误,再次添加 id数值已经跳过之前

  5. 帝国cms插件 解决后台修改信息时内容关键字不替换的问题

    很多站长是不是发现了帝国cms增加信息时,是有关键词替换的,这样是有利于网站优化排名. 但是在后台格式化数据之后,再去进行修改之后,对不起,内容关键字就实效了. 针对这一问题,解决方案如下: 找到 / ...

  6. Sql Server之使用T_SQL创建,修改,查看数据库信息

    一.使用Transact_SQL创建数据库 Transact_SQL语法如下:  create database database_name   [ on     [primary]  [<fi ...

  7. MySQL修改表字段相关信息

    昨天收获颇多,首先回顾一下有关mysql的内容. 我在查询表信息时,出现了 empty set 0.00 sec 的错误,我很奇怪,仔细检查发现原来是表字段名称写错了, 于是我想修改字段名称,经过查询 ...

  8. 利用神器BTrace 追踪线上 Spring Boot应用运行时信息

    概述 生产环境中的服务可能会出现各种问题,但总不能让服务下线来专门排查错误,这时候最好有一些手段来获取程序运行时信息,比如 接口方法参数/返回值.外部调用情况 以及 函数执行时间等信息以便定位问题.传 ...

  9. RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

随机推荐

  1. 【Sass初级】嵌套选择器规则

    在CSS中,我们都知道所有代码都在一个“根级别”的选择器中,每个CSS的样式声明都写嵌套的话,那意客味需要写很多的代码. 今天我要带领大家进入到Sass的最基本原则中.这就是所谓的“基础规则(Ince ...

  2. C# 字符串string

    一.引言 在 C# 中,字符串是System.String类的一个引用类型.但与其他引用类型不同的是,C#将字符串视为一个基本类型,它可以申请为一个常量,也可以直接给它赋值. string关键字是Sy ...

  3. python进阶01 面向对象、类、实例、属性封装、实例方法

    python进阶01 面向对象.类.实例.属性封装.实例方法 一.面向对象 1.什么是对象 #一切皆对象,可以简单地将“对象”理解为“某个东西” #“对象”之所以称之为对象,是因为它具有属于它自己的“ ...

  4. [Android]Android开发艺术探索第13章笔记

    13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢? 利用Thread类的setDefaultUn ...

  5. java join 方法的使用

    在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束.这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据 ...

  6. Java基础:(二)String字符串

    一.String概述 String被声明为final,因为它不可被继承. 内部使用char数组存储数据,该数组被声明为final,这意味着value数组初始化之后就不能再引用其他数组.并且String ...

  7. POJA Star not a Tree?(模拟退火)

    题意 题目链接 给出$n$个点,求出一个点使得到各个点的距离之和最小,距离为欧几里得距离 Sol 模拟退火真是玄学,我退了一上午,最后把exp函数去了就A了. 后来改了改,发现是大小符号的问题.. 但 ...

  8. linux配置tomcat已service方式启动

    1. 在/etc/init.d目录下新建文件,命名为tomcat2. 对tomcat文件进行编辑,执行 # cd /etc/init.d/ # vi tomcat 将下面代码粘上去 注意:下面代码ja ...

  9. log4cxx安装使用

    log4cxx安装使用 log4cxx现在是apache的一个项目,用来记录日志.看名字就知道,是给c++使用的. 环境(在以下2个环境中进行验证测试): gcc (Ubuntu 4.8.4-2ubu ...

  10. Azure 镜像市场支持一键部署到云

    本视频教程介绍了Azure 镜像市场和一键部署到云. Azure 镜像市场(AMP)由世纪互联运营,是一个联机应用程序和服务市场,它通过独立软件服务商(ISV)能够成为 Azure 客户(Custom ...