PDA

View Full Version : خروجی اکسل و پشتیبان گیری از بانک



rash44
چهارشنبه 02 بهمن 1387, 15:51 عصر
با سلام
من 3 تا سوال دارم
من از دیتا بیس 1 لیست اطلاعات رو بیرون می کشم . الان می خوام این لیست رو بصورت 1 فایل اکسل ذخیره کنم . مثلا اگه کاربر روی 1 دکمه کلیک کرد فایل گزارش از بانک اطلاعاتی تهیه بشه و کاربر بتونه save کنه . 1 کد هم در این مورد توی سایت پیدا کردم اما جواب نداد )اطلاعات رو توی مرورگر نشون میداد و فایل اکسل رو تهیه نمی کرد)
کد :

<?
require_once('data.php');
$link = db_connect();
$result=mysql_query("select * from db");
//*********************************************
function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
//*********************************************
function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}
//*********************************************
function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}
//*********************************************
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
//*********************************************
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: backup/force-download");
header("Content-Type: backup/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=list.xls ");
header("Content-Transfer-Encoding: binary ");
xlsBOF();
//*********************************************
xlsWriteLabel(0,0,"LIST");
//*********************************************
// Make column labels. (at line 3)
xlsWriteLabel(2,1,"User Name");
xlsWriteLabel(2,2,"First Name");
xlsWriteLabel(2,3,"Last Name");
xlsWriteLabel(2,4,"AGE");
xlsWriteLabel(2,5,"SEX");
xlsWriteLabel(2,6,"PASSWORD");
xlsWriteLabel(2,7,"TEL");
xlsWriteLabel(2,8,"COUNTRY");
xlsWriteLabel(2,9,"E-mail");
xlsWriteLabel(2,10,"City");
$xlsRow = 3;
//*********************************************
while($row=mysql_fetch_array($result))
{
xlsWriteLabel($xlsRow,1,$row['userName']);
xlsWriteLabel($xlsRow,2,$row['name']);
xlsWriteLabel($xlsRow,3,$row['family']);
xlsWriteLabel($xlsRow,4,$row['age']);
xlsWriteLabel($xlsRow,5,$row['sex']);
xlsWriteLabel($xlsRow,6,$row['passwod']);
xlsWriteLabel($xlsRow,7,$row['tel']);
xlsWriteLabel($xlsRow,8,$row['country']);
xlsWriteLabel($xlsRow,9,$row['mail']);
xlsWriteLabel($xlsRow,10,$row['city']);
$xlsRow++;
}
xlsEOF();
exit();
?>



سوال دوم :
می خوام توی قسمت مدیریت سایت 1 قسمت به عنوان پشتیبان گیری و بازگردانی بانک اطلاعاتی داشته باشم . مثل برنامه php my admin . 1 کد هم توی همین وب سایت پیدا کردم و کار هم کرد اما اطلاعات رو توی مرورگر نشون میداد و بصورت فایل ZIP یا SQL خروجی نمیده .
کد :

<?php
@set_time_limit(600);

$strNoTablesFound = "No tables found in database.";
$strHost = "Host";
$strDatabase = "Database ";
$strTableStructure = "Table structure for table";
$strDumpingData = "Dumping data for table";
$strError = "Error";
$strSQLQuery = "SQL-query";
$strMySQLSaid = "MySQL said: ";
$strBack = "Back";
$strFileName = "Save Database";
$strName = "Database saved";
$strDone = "On";
$strat = "at";
$strby = "by";
$date_jour = date ("m-d-Y");

header("Content-disposition: filename=$strFileName $dbname $date_jour.sql");
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");

$crlf = "\n";
// doing some DOS-CRLF magic...
$client = $_SERVER["HTTP_USER_AGENT"];
if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
{
$os = $regs[1];
// this looks better under WinX
if (eregi("Win",$os))
$crlf="\r\n";
}

function my_handler($sql_insert)
{
global $crlf;
echo "$sql_insert;$crlf";
}
// Get the content of $table as a series of INSERT statements.
// After every row, a custom callback function $handler gets called.
// $handler must accept one parameter ($sql_insert);
function get_table_content($db, $table, $handler)
{
$result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
$i = 0;
while($row = mysql_fetch_row($result))
{
// set_time_limit(60); // HaRa
$table_list = "(";
for($j=0; $j<mysql_num_fields($result);$j++)
$table_list .= mysql_field_name($result,$j).", ";
$table_list = substr($table_list,0,-2);
$table_list .= ")";
if(isset($GLOBALS["showcolumns"]))
$schema_insert = "INSERT INTO $table $table_list VALUES (";
else
$schema_insert = "INSERT INTO $table VALUES (";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= " NULL,";
elseif($row[$j] != "")
$schema_insert .= " '".addslashes($row[$j])."',";
else
$schema_insert .= " '',";
}
$schema_insert = ereg_replace(",$", "", $schema_insert);
$schema_insert .= ")";
$handler(trim($schema_insert));
$i++;
}
return (true);
}
// Return $table's CREATE definition
// Returns a string containing the CREATE statement on success
function get_table_def($db, $table, $crlf)
{
$schema_create = "";
//$schema_create .= "DROP TABLE IF EXISTS $table;$crlf";
$schema_create .= "CREATE TABLE $table ($crlf";
$result = mysql_db_query($db, "SHOW FIELDS FROM $table") or mysql_die();
while($row = mysql_fetch_array($result))
{
$schema_create .= " $row[Field] $row[Type]";
if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
$schema_create .= " DEFAULT '$row[Default]'";
if($row["Null"] != "YES")
$schema_create .= " NOT NULL";
if($row["Extra"] != "")
$schema_create .= " $row[Extra]";
$schema_create .= ",$crlf";
}
$schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
$result = mysql_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
while($row = mysql_fetch_array($result))
{
$kname=$row['Key_name'];
if(($kname != "PRIMARY") && ($row['Non_unique'] == 0))
$kname="UNIQUE|$kname";
if(!isset($index[$kname]))
$index[$kname] = array();
$index[$kname][] = $row['Column_name'];
}
while(list($x, $columns) = @each($index))
{
$schema_create .= ",$crlf";
if($x == "PRIMARY")
$schema_create .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
elseif (substr($x,0,6) == "UNIQUE")
$schema_create .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
else
$schema_create .= " KEY $x (" . implode($columns, ", ") . ")";
}
$schema_create .= "$crlf)";
return (stripslashes($schema_create));
}
function mysql_die($error = "")
{
echo "<b> $strError </b><p>";
if(isset($sql_query) && !empty($sql_query))
{
echo "$strSQLQuery: <pre>$sql_query</pre><p>";
}
if(empty($error))
echo $strMySQLSaid.mysql_error();
else
echo $strMySQLSaid.$error;
echo "<br><a href=\"javascript:history.go(-1)\">$strBack</a>";
exit;
}
$dbhost="localhost";
$dbuname="feeoffc_root";
$dbpass="";
$dbname="feeoffc_ebiz";
mysql_pconnect($dbhost, $dbuname, $dbpass);
@mysql_select_db("$dbname") or die ("Unable to select database");
$tables = mysql_list_tables($dbname);
$num_tables = @mysql_numrows($tables);
if($num_tables == 0)
{
echo $strNoTablesFound;
}
else
{
$i = 0;
$heure_jour = date ("H:i");
print "# ================================================== ======$crlf";
print "#$crlf";
print "# $strName : $dbname$crlf";
print "# $strDone $date_jour $strat $heure_jour $strby $name !$crlf";
print "#$crlf";
print "# ================================================== ======$crlf";
print "$crlf";
while($i < $num_tables)
{
$table = mysql_tablename($tables, $i);
print $crlf;
print "# --------------------------------------------------------$crlf";
print "#$crlf";
print "# $strTableStructure '$table'$crlf";
print "#$crlf";
print $crlf;
echo get_table_def($dbname, $table, $crlf).";$crlf$crlf";
print "#$crlf";
print "# $strDumpingData '$table'$crlf";
print "#$crlf";
print $crlf;
get_table_content($dbname, $table, "my_handler");
$i++;
}
}
?>

yaqubian
پنج شنبه 03 بهمن 1387, 08:19 صبح
دوست عزیز
هر دو تا سئوال شما قبلا بحث شده. یه جستجو بفرمایید.
موفق باشید

rash44
پنج شنبه 03 بهمن 1387, 20:56 عصر
سلام
مرسی که جواب دادین
اینم کد :

<?php
@set_time_limit(600);

$strNoTablesFound = "No tables found in database.";
$strHost = "Host";
$strDatabase = "Database ";
$strTableStructure = "Table structure for table";
$strDumpingData = "Dumping data for table";
$strError = "Error";
$strSQLQuery = "SQL-query";
$strMySQLSaid = "MySQL said: ";
$strBack = "Back";
$strFileName = "Save Database";
$strName = "Database saved";
$strDone = "On";
$strat = "at";
$strby = "by";
$date_jour = date ("m-d-Y");

header("Content-disposition: filename=$strFileName $dbname $date_jour.sql");
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");

$crlf = "\n";
// doing some DOS-CRLF magic...
$client = $_SERVER["HTTP_USER_AGENT"];
if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
{
$os = $regs[1];
// this looks better under WinX
if (eregi("Win",$os))
$crlf="\r\n";
}

function my_handler($sql_insert)
{
global $crlf;
echo "$sql_insert;$crlf";
}
// Get the content of $table as a series of INSERT statements.
// After every row, a custom callback function $handler gets called.
// $handler must accept one parameter ($sql_insert);
function get_table_content($db, $table, $handler)
{
$result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
$i = 0;
while($row = mysql_fetch_row($result))
{
// set_time_limit(60); // HaRa
$table_list = "(";
for($j=0; $j<mysql_num_fields($result);$j++)
$table_list .= mysql_field_name($result,$j).", ";
$table_list = substr($table_list,0,-2);
$table_list .= ")";
if(isset($GLOBALS["showcolumns"]))
$schema_insert = "INSERT INTO $table $table_list VALUES (";
else
$schema_insert = "INSERT INTO $table VALUES (";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= " NULL,";
elseif($row[$j] != "")
$schema_insert .= " '".addslashes($row[$j])."',";
else
$schema_insert .= " '',";
}
$schema_insert = ereg_replace(",$", "", $schema_insert);
$schema_insert .= ")";
$handler(trim($schema_insert));
$i++;
}
return (true);
}
// Return $table's CREATE definition
// Returns a string containing the CREATE statement on success
function get_table_def($db, $table, $crlf)
{
$schema_create = "";
//$schema_create .= "DROP TABLE IF EXISTS $table;$crlf";
$schema_create .= "CREATE TABLE $table ($crlf";
$result = mysql_db_query($db, "SHOW FIELDS FROM $table") or mysql_die();
while($row = mysql_fetch_array($result))
{
$schema_create .= " $row[Field] $row[Type]";
if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
$schema_create .= " DEFAULT '$row[Default]'";
if($row["Null"] != "YES")
$schema_create .= " NOT NULL";
if($row["Extra"] != "")
$schema_create .= " $row[Extra]";
$schema_create .= ",$crlf";
}
$schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
$result = mysql_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
while($row = mysql_fetch_array($result))
{
$kname=$row['Key_name'];
if(($kname != "PRIMARY") && ($row['Non_unique'] == 0))
$kname="UNIQUE|$kname";
if(!isset($index[$kname]))
$index[$kname] = array();
$index[$kname][] = $row['Column_name'];
}
while(list($x, $columns) = @each($index))
{
$schema_create .= ",$crlf";
if($x == "PRIMARY")
$schema_create .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
elseif (substr($x,0,6) == "UNIQUE")
$schema_create .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
else
$schema_create .= " KEY $x (" . implode($columns, ", ") . ")";
}
$schema_create .= "$crlf)";
return (stripslashes($schema_create));
}
function mysql_die($error = "")
{
echo "<b> $strError </b><p>";
if(isset($sql_query) && !empty($sql_query))
{
echo "$strSQLQuery: <pre>$sql_query</pre><p>";
}
if(empty($error))
echo $strMySQLSaid.mysql_error();
else
echo $strMySQLSaid.$error;
echo "<br><a href=\"javascript:history.go(-1)\">$strBack</a>";
exit;
}
$dbhost="localhost";
$dbuname="root";
$dbpass="";
$dbname="test";
mysql_pconnect($dbhost, $dbuname, $dbpass);
@mysql_select_db("$dbname") or die ("Unable to select database");
$tables = mysql_list_tables($dbname);
$num_tables = @mysql_numrows($tables);
if($num_tables == 0)
{
echo $strNoTablesFound;
}
else
{
$i = 0;
$heure_jour = date ("H:i");
print "# ================================================== ======$crlf";
print "#$crlf";
print "# $strName : $dbname$crlf";
print "# $strDone $date_jour $strat $heure_jour $strby $name !$crlf";
print "#$crlf";
print "# ================================================== ======$crlf";
print "$crlf";
while($i < $num_tables)
{
$table = mysql_tablename($tables, $i);
print $crlf;
print "# --------------------------------------------------------$crlf";
print "#$crlf";
print "# $strTableStructure '$table'$crlf";
print "#$crlf";
print $crlf;
echo get_table_def($dbname, $table, $crlf).";$crlf$crlf";
print "#$crlf";
print "# $strDumpingData '$table'$crlf";
print "#$crlf";
print $crlf;
get_table_content($dbname, $table, "my_handler");
$i++;
}
}
?>


بعد از اینکه از اطلاعات پشتیبان میگره
اطلاعات رو که توی دیتا بیسم بازگردانی کردم بجای حروف فارسی کلا علامت ؟ گذاشته بود
بعد از اینکه اطلاعات رو از بانک می کشم بیرون و توی برنامم نشون میدم بجای حروف فارسی علامت ؟ نشون میده
برنامم هم درسته و اگه با php my admin پشتیلان بگیرم این طور مشکلی پیش نمیاد
ممنون

yaqubian
جمعه 04 بهمن 1387, 18:10 عصر
دوست عزیز
لطفا بانکتون رو هم بذارید.
موفق باشید

rash44
جمعه 04 بهمن 1387, 18:36 عصر
دوست عزیز
لطفا بانکتون رو هم بذارید.
موفق باشید
سلام
با تشکر از شما

CREATE TABLE user (
userName varchar(50) NOT NULL,
password varchar(60) NOT NULL,
firstNameFa varchar(70) NOT NULL,
lastNameFa varchar(70) NOT NULL,
firstNameEn varchar(70) NOT NULL,
lastNameEn varchar(70) NOT NULL,
fatherName varchar(70) NOT NULL,
bDate bigint(10) NOT NULL,
shSh varchar(30) NOT NULL,
mahalSodur varchar(100) NOT NULL,
gender varchar(15),
job varchar(100),
grade varchar(40),
melliCode varchar(20) NOT NULL,
mobile varchar(22) NOT NULL,
phoneNo varchar(22) NOT NULL,
city varchar(50) NOT NULL,
address varchar(250) NOT NULL,
postalCode varchar(20),
email varchar(70) NOT NULL,
tariff varchar(40) NOT NULL,
modem varchar(40) NOT NULL,
cost varchar(30) NOT NULL,
phone4Connect varchar(20) NOT NULL,
status varchar(30) DEFAULT 'Wating' NOT NULL,
PRIMARY KEY (userName)
);