<!doctype HTML PUBLIC "-//W3C//DTD XHTML 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/ Xhtml1-transitional.dtd ">
<meta http-equiv= "Content-type" content= "text/html; Charset=utf-8 "/>
<link type= "text/css Tutorial" rel= "stylesheet" href= "Common/control.css" >
<script type= "text/web Effects" language= "JavaScript" src= "Common/admin.otable.js" ></script>
<script type= "Text/javascript" language= "JavaScript" src= "Common/include.func.js" ></script>
<title> Data Management </title>
<style type= "Text/css" >
span {padding-left:8px;}
</style>
<body class= "Contentbody" >
<div class= "Maindiv" >
<span class= "Ctitle" >esweb system data Management </span>
<ul class= "CMenu" >
<li><a href= "sql_backup.php" > Data backup </a></li>
<li><a href= "sql_restore.php" > Data restore </a></li>
<li><a href= "sql_optimize.php" > Data optimization </a>
</ul>
<div class= "Concontent" >
<?php
/*--------------Interface--------------*/if (!$_post[' act ') {/*----------------------*/
$MSGS []= "Server backup directory is $backup";
$MSGS []=] for larger data tables, it is strongly recommended to use a sub-volume backup ";
$MSGS []=] only choose to backup to the server in order to use the sub-volume backup function ";
Show_msg ($MSGS);
?>
<div class= "thead" ><span class= "left" > If Backup is required , restore or optimize <font color= "Red" > Large amount of Data </font>, it is recommended to use "<a href=" http://www.phome.net/ebak2010/"target=" _blank "> Empire Backup King 2010</a>" </span> <span class= "right" ></span></div>
<form name= "MyForm" method= "post" action= "sql_backup.php" >
<table cellpadding= "" cellspacing= "0" border= "0" width= "100%" class= "CTable" id= "otable" align= "Center" >
<tr>
<th colspan= "2" >esweb system data Backup </th>
</tr>
<tr>
<TD align= "Right" width= "$" > select Backup Method </td>
<td><input type= "Radio" name= "Bfzl" value= "Quanbubiao" checked= "checked"/> Back up all data
<input type= "Radio" name= "Bfzl" value= "Danbiao"/> Backup sheet data
<select name= "tablename" ><option value= "" > Please select </option>
<?php
$d->query ("Show Table status from $mysqldb");
while ($d->nextrecord ()) {
echo "<option value=". $d->f (' name '). "' > ". $d->f (' name ')." </option> ";}
?>
</select></td>
</tr>
<tr>
<TD align= "Right" > select target Location </td>
<td><input type= "Radio" name= "Weizhi" value= "Server" checked= "checked"/> Backup to Server
<input type= "Radio" name= "Weizhi" value= "LOCALPC"/> Backup to local </td>
</tr>
<tr>
<TD align= "Right" > Using split-volume backup </td>
<td><input type= "checkbox" Name= "Fenjuan" value= "yes" checked= "checked"/>
Sub-volume backup <input name= "filesize" type= "text" value= "1260" size= "ten" class= "Text2"/> k <span> (only select Backup to Server, To use the split-volume backup feature) </span></td>
</tr>
<tr>
<TD align= "Right" > Program Description </td>
<td>1. For larger data tables, it is highly recommended to use a split-volume backup.
<br>2. You can use the split-volume backup feature only if you choose to back up to the server.
</td>
</tr>
<tr>
<TD align= "center" colspan= "2" ><input type= "submit" id= "Act" name= "act" value= "Backup" class= "button"/> < Input type= "reset" value= "reset" class= "button"/></td>
</tr>
</table>
</form>
<?php/*-------------interface End-------------*/}/*---------------------------------*/
/*----*/else{/*--------------Main program-----------------------------------------*/
if ($_post[' Weizhi ']== "LOCALPC" &&$_post[' Fenjuan ']== ' yes ')
{$msgs []=] Only select Backup to server to use the sub-volume backup function ";
Show_msg ($MSGS); Pageend ();}
if ($_post[' Fenjuan ']== "yes" &&!$_post[' filesize '])
{$MSGS []=] You have selected the sub-volume backup function, but did not fill in the volume file size ";
Show_msg ($MSGS); Pageend ();}
if ($_post[' Weizhi ']== "Server" &&!writeable ($backup))
{$MSGS []= "Backup file directory ' $backup ' not writable, please modify directory Properties";
Show_msg ($MSGS); Pageend ();}
/*----------back up all Tables-------------*/if ($_post[' Bfzl ']== "Quanbubiao") {/*----*/
/*----Roll */if (!$_post[' Fenjuan ') {/*--------------------------------*/
if (! $tables = $d->query ("Show Table status from $mysqldb")
{$MSGS []= "Read database structure error"; show_msg ($MSGS); Pageend ();}
$sql = "";
while ($d->nextrecord ($tables))
{
$table = $d->f ("name");
$sql. =make_header ($table);
$d->query ("SELECT * from $table");
$num _fields= $d->nf ();
while ($d->nextrecord ())
{$sql. =make_record ($table, $num _fields);}
}
$filename =date ("Ymd", Time ()). " _all.sql ";
if ($_post[' Weizhi ']== "LOCALPC") down_file ($sql, $filename);
ElseIf ($_post[' Weizhi ']== "server")
{if (Write_file ($sql, $filename))
$MSGS []=] All data table data backup complete, generate backup file ' $backup/$filename ' ";
else $msgs []=] failed to back up all data tables ";
Show_msg ($MSGS);
Pageend ();
}
/*-----------------do not roll over */}/*-----------------------*/
/*-----------------Roll */else{/*-------------------------*/
if (!$_post[' filesize ')
{$msgs []=] Please fill in the size of the backup file, Show_msg ($msgs);p ageend ();}
if (! $tables = $d->query ("Show Table status from $mysqldb")
{$MSGS []= "Read database structure error"; show_msg ($MSGS); Pageend ();}
$sql = ""; $p = 1;
$filename =date ("Ymd", Time ()). " _all ";
while ($d->nextrecord ($tables))
{
$table = $d->f ("name");
$sql. =make_header ($table);
$d->query ("SELECT * from $table");
$num _fields= $d->nf ();
while ($d->nextrecord ())
{$sql. =make_record ($table, $num _fields);
if (strlen ($sql) >=$_post[' filesize ']*1000) {
$filename. = ("_v". $p. ". SQL ");
if (Write_file ($sql, $filename))
$MSGS []=] All data Sheets-volumes-". $p." -Data backup complete, generate backup file ' $backup/$filename ' ";
else $msgs []= "Backup Table-". $_post[' tablename '). " -Failure ";
$p + +;
$filename =date ("Ymd", Time ()). " _all ";
$sql = "";}
}
}
if ($sql! = "") {$filename. = ("_v". $p. ". SQL ");
if (Write_file ($sql, $filename))
$MSGS []=] All data Sheets-volumes-". $p." -Data backup complete, generate backup file ' $backup/$filename ' ";}
Show_msg ($MSGS);
/*---------------------*/}/* end of the volume--------------------------------------*/
/*--------Back up all tables end */}/*---------------------------------------------*/
/*--------Backup single table------*/elseif ($_post[' Bfzl ']== "Danbiao") {/*------------*/
if (!$_post[' tablename ')
{$msgs []=] Select the data table to be backed up, show_msg ($MSGS); Pageend ();}
/*--------Roll */if (!$_post[' Fenjuan ') {/*-------------------------------*/
$sql =make_header ($_post[' tablename ');
$d->query ("SELECT * from". $_post[' tablename ');
$num _fields= $d->nf ();
while ($d->nextrecord ())
{$sql. =make_record ($_post[' tablename '), $num _fields);}
$filename =date ("Ymd", Time ()). " _ ". $_post[' tablename ').". SQL ";
if ($_post[' Weizhi ']== "LOCALPC") down_file ($sql, $filename);
ElseIf ($_post[' Weizhi ']== "server")
{if (Write_file ($sql, $filename))
$MSGS []= "Table-". $_post[' tablename '). " -Data backup complete, generate backup file ' $backup/$filename ' ";
else $msgs []= "Backup Table-". $_post[' tablename '). " -Failure ";
Show_msg ($MSGS);
Pageend ();
}
/*----------------do not roll over */}/*------------------------------------*/
/*----------------Roll */else{/*--------------------------------------*/
if (!$_post[' filesize ')
{$msgs []=] Please fill in the size of the backup file, Show_msg ($msgs);p ageend ();}
$sql =make_header ($_post[' tablename '); $p = 1;
$filename =date ("Ymd", Time ()). " _ ". $_post[' tablename ');
$d->query ("SELECT * from". $_post[' tablename ');
$num _fields= $d->nf ();
while ($d->nextrecord ())
{
$sql. =make_record ($_post[' tablename '), $num _fields);
if (strlen ($sql) >=$_post[' filesize ']*1000) {
$filename. = ("_v". $p. ". SQL ");
if (Write_file ($sql, $filename))
$MSGS []= "Table-". $_post[' tablename '). " -Volume-". $p." -Data backup complete, generate backup file ' $backup/$filename ' ";
else $msgs []= "Backup Table-". $_post[' tablename '). " -Failure ";
$p + +;
$filename =date ("Ymd", Time ()). " _ ". $_post[' tablename ');
$sql = "";}
}
if ($sql! = "") {$filename. = ("_v". $p. ". SQL ");
if (Write_file ($sql, $filename))
$MSGS []= "Table-". $_post[' tablename '). " -Volume-". $p." -Data backup complete, generate backup file ' $backup/$filename ' ";}
Show_msg ($MSGS);
/*----------*/}/* end of the volume--------------------------------------------------*/
/*----------Backup single table End */}/*----------------------------------------------*/
/*---*/}/*-------------the end of the main program------------------------------------------*/
Function Write_file ($sql, $filename)
{
$re =true;
Global $backup;
if ([email protected] $fp =fopen ($backup. " /". $filename," w+ ") {$re =false; echo" failed to open target file ";}
if ([email protected] ($fp, $sql)) {$ Re=false; echo "Failed to write file";}
if ([email protected] ($fp)) {$re = False echo "Failed to close target file";}
return $re;
}
function Down_file ($sql, $filename)
{
Ob_end_clean ();
Header ("Content-encoding:none");
Header ("Content-type:". ( Strpos ($_server[' http_user_agent '), ' msie ')? ' Application/octetstream ': ' Application/octet-stream ');
Header ("Content-disposition:". ( Strpos ($_server[' http_user_agent '), ' msie ')? ' Inline; ': ' Attachment; ‘)." Filename= ". $filename);
Header ("Content-length:". strlen ($sql));
Header ("Pragma:no-cache");
Header ("expires:0");
Echo $sql;
$e =ob_get_contents ();
Ob_end_clean ();
}
function writeable ($dir)
{
if (!is_dir ($dir)) {
@mkdir ($dir, 0777);
}
if (Is_dir ($dir))
{
if ($fp = @fopen ("$dir/test.test", ' W '))
{
@fclose ($FP);
@unlink ("$dir/test.test");
$writeable = 1;
}
else {
$writeable = 0;
}
}
return $writeable;
}
function Make_header ($table)
{Global $d;
$sql = "DROP table if exists". $table. " n ";
$d->query ("show2881064151 CREATE TABLE". $table);
$d->nextrecord ();
$tmp =preg_replace ("/n/", "", $d->f ("CREATE TABLE"));
$sql. = $tmp. " n ";
return $sql;
}
function Make_record ($table, $num _fields)
{Global $d;
$comma = "";
$sql. = "INSERT into". $table. "VALUES (";
for ($i = 0; $i < $num _fields; $i + +)
{$sql. = ($comma. "". Mysql_escape_string ($d->record[$i]). "'"); $comma = ",";}
$sql. = ") n";
return $sql;
}
function Show_msg ($MSGS)
{
$title = "Hint:";
echo "<table width= ' 100% ' border= ' 0 ' cellpadding= ' 0 ' cellspacing= ' 0 ' >";
echo "<tr><td>". $title. " </td></tr> ";
echo "<tr><td><br><ul>";
while (list ($k, $v) =each ($MSGS))
{
echo "<li>". $v. " </li> ";
}
echo "</ul></td></tr></table>";
}
function Pageend ()
{
Exit ();
}
?>
</div><br/><br/>
</div>
</div>
</body>
Class db{
var $linkid;
var $sqlid;
var $record;
function db ($host = "", $username = "", $password = "", $database = "")
{
if (! $this->linkid) @ $this->linkid = mysql_connect ($host, $username, $password) or Die ("Connection server failed.");
@mysql_select_db ($database, $this->linkid) or Die ("Unable to open database");
return $this->linkid;}
function query ($sql)
{if ($this->sqlid=mysql_query ($sql, $this->linkid)) return $this->sqlid;
else {
$this->err_report ($sql, mysql_error);
return false;}
}
function nr ($sql _id= "")
{if (! $sql _id) $sql _id= $this->sqlid;
Return mysql_num_rows ($sql _id);}
function NF ($sql _id= "")
{if (! $sql _id) $sql _id= $this->sqlid;
Return Mysql_num_fields ($sql _id);}
function NextRecord ($sql _id= "")
{if (! $sql _id) $sql _id= $this->sqlid;
if ($this->record=mysql_fetch_array ($sql _id)) return $this->record;
else return false;
}
function f ($name)
{
if ($this->record[$name]) return $this->record[$name];
else return false;
}
function Close () {mysql_close ($this->linkid);}
function Lock ($tblname, $op = "Write")
{if (mysql_query ("Lock Tables". $tblname. " ". $op)) return true; else return false;}
function unlock ()
{if (mysql_query ("Unlock tables)") return true; else return false;}
function Ar () {
Return @mysql_affected_rows ($this->linkid);
}
function i_id () {
return mysql_insert_id ();
}
function Err_report ($sql, $err)
{
echo "MySQL query error <br>";
echo "query statement:" $sql. " <br> ";
echo "error message:" $ERR;
}
/**************************************** class End ***************************/
Global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb, $backup;
$mysqlhost = $mydbhost; Host Name
$mysqluser = $mydbuser; Login Name
$mysqlpwd = $MYDBPW; Password
$mysqldb = $mydbname; Name of database
$d =new db ($mysqlhost, $mysqluser, $mysqlpwd, $MYSQLDB);
$d->query ("Set names ' UTF8 '");
Data management You can use the split-volume backup feature only if you choose to back up to the server