www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/admina/dbdict.inc.php

    <?
(!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission');
aheader();
load_cache('dbfields');
if(empty($action)){
	$dbtable = empty($dbtable) ? $tblprefix.'archives' : $dbtable;
	if(!submitcheck('bdbdict')){
		$dbtables = array('' => lang('confirmselect table'));
		$query = $db->query("SHOW TABLES FROM $dbname");
		while($v = $db->fetch_row($query)) $dbtables[$v[0]] = $v[0];
		$filterbox = lang('choose table').'&nbsp; &nbsp;';
		$filterbox .= "<select style=\"vertical-align: middle;\" name=\"dbtable\" onchange=\"redirect('?entry=dbdict&dbtable=' + this.options[this.selectedIndex].value);\">";
		foreach($dbtables as $k => $v){
			$filterbox .= "<option value=\"$k\"".($dbtable == $k ? ' selected' : '').">$v</option>";
		}
		$filterbox .= "</select>";
		a_guide('dbfieldsremark');
		tabheader($filterbox);
		tabfooter();
	
		$tblfields = array();
		$PRI='';
		if($dbtable){
			$query = $db->query("SHOW FULL COLUMNS FROM $dbtable",'SILENT');
			while($row = $db->fetch_array($query)){
				$tblfields[$row['Field']] = strtolower($row['Type']);
				if('PRI'==$row['Key'])$PRI=$row['Field'];
			}
		}
		tabheader(lang('database field list').'&nbsp; -&nbsp; '.$dbtable,'dbdict',"?entry=dbdict&dbtable=$dbtable",5);
		trcategory(array(lang('sn'),lang('field cname'),lang('field type'),lang('content replace'),lang('field remark')));
		$i = 1;
		$ddtable = substr($dbtable,strlen($tblprefix));
		foreach($tblfields as $k => $v){
			$key = $ddtable.'_'.$k;
			echo "<tr>".
				"<td class=\"item1\" width=\"30\" align=\"center\">$i</td>\n".
				"<td class=\"item2\"><b>$k</b></td>\n".
				"<td class=\"item1\">$v</td>\n".
				"<td class=\"item2\" align=\"center\">".($k==$PRI?'':"<a href=\"?entry=dbdict&action=dbreplace&dbtable=$dbtable&dbfield=$k\">>>".lang('replace')."</a>")."</td>\n".
				"<td class=\"item1\"><input type=\"text\" size=\"100\" name=\"dbfieldsnew[$ddtable][$k]\" value=\"".(empty($dbfields[$key]) ? '' : mhtmlspecialchars($dbfields[$key]))."\"></td>\n".
				"</tr>";
			$i ++;
		}
		tabfooter('bdbdict',lang('modify'));
	}else{
		if(!empty($dbfieldsnew)){
			foreach($dbfieldsnew as $k => $v){
				if(!empty($v)){
					foreach($v as $k1 => $v1){
						if(empty($v1)){
							$db->query("DELETE FROM {$tblprefix}dbfields WHERE ddtable='$k' AND ddfield='$k1'");
						}else{
							if(!isset($dbfields[$k.'_'.$k1])){
								$db->query("INSERT INTO {$tblprefix}dbfields SET ddtable='$k',ddfield='$k1',ddcomment='$v1'");
							}else $db->query("UPDATE {$tblprefix}dbfields SET ddcomment='$v1' WHERE ddtable='$k' AND ddfield='$k1'");
						}
					}
				}
				
			}
		}
		updatecache('dbfields');
		amessage(lang('database field remark modify finish'),"?entry=dbdict&dbtable=$dbtable");

	}

}elseif($action == 'dbreplace'){
	if(empty($dbtable)) amessage(lang('confirmchoose table'));
	if(empty($dbfield)) amessage(lang('confirmchoose field'));
	if(!submitcheck('bdbreplace')){
		a_guide('dbreplace');
		$mode0arr = array(0 => lang('normal'),1 => lang('regular'));
		tabheader(lang('field content replace operate'),'dbreplace',"?entry=dbdict&action=$action&dbtable=$dbtable&dbfield=$dbfield",2);
		trbasic(lang('current table'),'',$dbtable,'');
		trbasic(lang('current field'),'',$dbfield,'');
		trbasic(lang('search mode').'&nbsp; [<a href="http://dev.mysql.com/doc/refman/5.1/zh/regexp.html" target="_blank">'.lang('regular help').'</a>]','mode',makeradio('mode',$mode0arr,0),'');
		trbasic(lang('search txt'),'rpstring','','textarea');
		trbasic(lang('replace txt'),'tostring','','textarea');
		trbasic(lang('WHERE plus condition string'),'where','','btext',lang('dont include WHERE'));
		tabfooter('bdbreplace',lang('start replace'));
	}else{
		if(!isset($mode)||!$rpstring||!$tostring)amessage(lang('search mode , search txt or replace txt notnull'),M_REFERER);
		$rs=$db->query("SHOW COLUMNS FROM $dbtable",'SILENT');
		unset($key);
		while($row=$db->fetch_array($rs))
			if('PRI'==$row['Key']){
				$key=$row['Field'];
				break;
			}
		if(1==$mode){
			if(!isset($key))amessage(lang('notablekey'),M_REFERER);
			if($dbfield == $key)amessage(lang('please dont dealtablekey'),M_REFERER);
			$rpstring=stripslashes($rpstring);
			$tostring=stripslashes($tostring);
			$where=$where?" and $where":'';
			$rs=$db->query("select `$key`,`$dbfield` from `$dbtable` where `$dbfield` REGEXP '".str_replace(array("\\","'"),array("\\\\","\\'"),$rpstring)."'$where");
			$count=$db->num_rows($rs);
			if(0==$count)amessage(lang('notablerecord'),M_REFERER);
			$replace=0;
			while($row=$db->fetch_array($rs))
				if($db->query("update `$dbtable` set `$dbfield` = '".addslashes(eregi_replace($rpstring,$tostring,$row[$dbfield]))."' where `$key` = '".addslashes($row[$key])."'")) $replace++;
			amessage(lang('find').$count.lang('sqlresult2 succeed replace').$replace.lang('sqlresult2'),M_REFERER);
		}else{
			if(isset($key)&&$dbfield == $key)amessage(lang('please dont dealtablekey'),M_REFERER);
			$where = $where ? " where $where" : '';
			$db->query("update `$dbtable` set `$dbfield`=replace(`$dbfield`,'$rpstring','$tostring')$where");
			amessage(lang('succeed replace').$db->affected_rows().lang('sqlresult2'),M_REFERER);
		}
	}
}


?>