function doEditField() { $fid = (int) $_POST['fid']; $mid = (int) $_POST['mid']; $name = dhtmlspecialchars($_POST['name']); $field = dhtmlspecialchars($_POST['field']); $ofield = dhtmlspecialchars($_POST['ofield']); if (empty($field)) { include iPATH . 'include/cn.class.php'; $field = CN::pinyin($name); } $type = $_POST['type']; $show = $_POST['show']; $default = dhtmlspecialchars($_POST['default']); $validate = $_POST['validate']; $description = dhtmlspecialchars($_POST['description']); $option = addslashes(serialize($_POST['option'])); $hidden = isset($_POST['hidden']) ? 1 : 0; !preg_match("/[a-zA-Z]/", $field[0]) && javascript::alert('字段只能以英文字母开头'); !preg_match("/[a-zA-Z0-9_\\-~]/", $field) && javascript::alert('字段只能由英文字母或数字组成'); model::isDefField($field) && javascript::alert('您所填写的字段是默认字段!请重新填写.'); $model = model::data($mid); $oFieldA = explode(',', $model['field']); $sql = "ALTER TABLE `#iCMS@__" . model::tbn($model['table']) . "`"; if ($fid) { iCMS_DB::getValue("SELECT `id` FROM `#iCMS@__field` where `field` = '{$field}' and `mid`='{$mid}' and `id`!='{$fid}'") && javascript::alert('该字段已经存在!请检查是否重复'); iCMS_DB::query("UPDATE `#iCMS@__field` SET `name` = '{$name}', `field` = '{$field}', `mid` = '{$mid}', `type` = '{$type}',`show` = '{$show}', `default` = '{$default}', `validate` = '{$validate}', `hidden` = '{$hidden}', `description` = '{$description}', `option` = '{$option}' WHERE `id` = '{$fid}';"); $sql .= " CHANGE COLUMN `{$ofield}` `{$field}`"; if ($field != $ofield) { $fKey = array_search($ofield, $oFieldA); unset($oFieldA[$fKey]); } } else { iCMS_DB::getValue("SELECT `id` FROM `#iCMS@__field` where `field` = '{$field}' and `mid`='{$mid}'") && javascript::alert('该字段已经存在!请检查是否重复'); iCMS_DB::query("INSERT INTO `#iCMS@__field` (`name`, `field`, `mid`, `type`,`show`, `default`, `validate`, `hidden`, `description`, `option`) VALUES ('{$name}', '{$field}', '{$mid}', '{$type}', '{$show}', '{$default}', '{$validate}', '{$hidden}', '{$description}', '{$option}');"); $sql .= " ADD COLUMN `{$field}`"; //新增 $col = iCMS_DB::getCol("describe `#iCMS@__" . model::tbn($model['table']) . "`"); $AfterSql = ' after `' . end($col) . '`'; } $SqlType = model::SqlType($type, $default); iCMS_DB::query($sql . $SqlType . $AfterSql); if ($field != $ofield) { array_push($oFieldA, $field); $mField = implode(',', array_unique($oFieldA)); iCMS_DB::query("update `#iCMS@__model` SET `field`='{$mField}' where id='{$mid}'"); } model::cache(); javascript::dialog('字段添加完成!<br />10秒后返回字段管理', "url:" . __SELF__ . "?mo=models&do=managefield&id=" . $mid); }