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').' '; $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').' - '.$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').' [<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); } } } ?>