rash44
چهارشنبه 02 بهمن 1387, 16: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++;
}
}
?>
من 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++;
}
}
?>