|
|
|
ถ้าทำการ Export ไฟล์เป็นนามสกุล .csv แบบกดปุ่มแล้วเด้งขึ้นมาให้ดาวโหลดเลย โดยที่ไม่ใช้ fopen มีวิธีไหมครับ |
|
|
|
|
|
|
|
คือต้องการ Export ไฟล์เป็นสกุล .csv ลองเอา code ในเว็บไปดัดแปลงแล้ว แต่ติดปัญหาอย่าง คือมันจะสร้างไฟล์ไว้ที่ root directory (เรียกถูกหรือเปล่าเนี่ย) เหมือนว่าเป็นคำสั่งของ fopen ใช่หรือเปล่าที่สร้าง ผมไม่อยากให้มันสร้างไฟล์ หรือถ้าสร้างแล้วลบออกหลังจากเขาดาวโหลดไฟล์ไปแล้วได้ไหม ใช้คำสั่งไหน (ถ้างงคำถามผมก็บอกนะ)
Code (PHP)
<? ob_start(); ?>
<html>
<head>
<title>Export</title>
</head>
<body>
<?php include('head.php'); ?>
<?php include('connect_db.php'); ?>
<form id="form1" name="form1" method="post" action="">
<?
$tablenames = $_GET["tablenames"];
$filName = ucfirst("$tablenames.csv");
$objWrite = fopen("$tablenames.csv", "w");
$strSQL = "SELECT * FROM $tablenames";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
fwrite($objWrite,"b1,b2,b3,EndtoEnd,Calcu,CATBFKT ,TT,Ticket,AMO,Zone,ActionTeam,SLA,b5,Starts,Restores ,Times,Delay,Total,Site,SitexTime,b6,Problem,Edit,More1 ,More2,Pass,Cause,Subcause,SANSA,SiteID,ATNT,TX ,faultclearance,Zone2,OFCCATBFKT\n");
while($objResult = mysql_fetch_array($objQuery)){
fwrite($objWrite,"\"$objResult[b1]\",\"$objResult[b2]\" ,\"$objResult[b3]\",\"$objResult[EndtoEnd]\",\"$objResult[Calcu]\" ,\"$objResult[CATBFKT]\",\"$objResult[TT]\",\"$objResult[Ticket]\", \"$objResult[AMO]\",\"$objResult[Zone]\",\"$objResult[ActionTeam]\" ,\"$objResult[SLA]\",\"$objResult[b5]\",\"$objResult[Starts]\" ,\"$objResult[Restores]\",\"$objResult[Times]\",\"$objResult[Delay]\" ,\"$objResult[Total]\",\"$objResult[Site]\",\"$objResult[SitexTime]\" ,\"$objResult[b6]\",\"$objResult[Problem]\",\"$objResult[Edit]\" ,\"$objResult[More1]\",\"$objResult[More2]\",\"$objResult[Pass]\" ,\"$objResult[Cause]\",\"$objResult[Subcause]\",\"$objResult[SANSA]\" ,\"$objResult[SiteID]\",\"$objResult[ATNT]\",\"$objResult[TX]\" ,\"$objResult[faultclearance]\",\"$objResult[Zone2]\",\"$objResult[OFCCATBFKT]\"\n");
}
fclose($objWrite);
header( "location: ".$filName."" );
echo '<META HTTP-EQUIV="Refresh" CONTENT="0;URL=data.php">';
?>
</form>
</body>
</html>
Tag : PHP, MySQL, HTML/CSS, JavaScript, jQuery, CakePHP
|
ประวัติการแก้ไข 2014-07-10 11:06:26 2014-07-10 11:06:52
|
|
|
|
|
Date :
2014-07-10 11:05:47 |
By :
nPointXer |
View :
1424 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
?>
ใช้แบบนี้ครับ
|
|
|
|
|
Date :
2014-07-10 13:54:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อีกตัวอย่างครับ
Code (PHP)
<?
php
$table = "filename.csv";
//Header
$csv = '"หัว 1","หัว 2"' . "\n";
//Rows
$csv .= '"Column 1 ข้อมูล","Column 2 ข้อมูล"' . "\n";
$csv .= '"Column 1 ข้อมูล","Column 2 ข้อมูล"' . "\n";
$csv .= '"Column 1 ข้อมูล","Column 2 ข้อมูล"' . "\n";
$csv .= '"Column 1 ข้อมูล","Column 2 ข้อมูล"' . "\n";
$csv .= '"Column 1 ข้อมูล","Column 2 ข้อมูล"' . "\n";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("ข้อมูล-Type: application/octet-stream");
header("ข้อมูล-Disposition: attachment; filename=\"$table\";" );
header("ข้อมูล-Transfer-Encoding: binary");
echo($csv);
?>
จะต้องไม่มีพวก <html><body> มาเกี่ยวข้อง
|
|
|
|
|
Date :
2014-07-10 14:20:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอได้แล้วครับ
ไม่ทราบว่าต้องใส่ <? ob_start(); ?> ด้านบนสุดด้วยหรือเปล่าครับ เพราะถ้าไม่ใส่มันไม่เด้งหน้าต่างดาวโหลดมาให้เลย ?
ขอบคุณครับ
|
|
|
|
|
Date :
2014-07-10 15:33:13 |
By :
nPointXer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าคุณทำแล้วไม่ได้อย่างตั้งใจเอาไว้ เอาโค๊ดที่คุณทำไม่ได้นั้นมาวางให้ดูครับ
แค่บอกทำตามคนอื่นแล้ว ยังไม่ได้ มันก็ไม่ได้อยู่นั่นแหล่ะครับ
ลองเอามาให้คนอื่นเขาดูให้เขาช่วยวิเคราะห์ดีกว่า ว่าคุณทำผิดอย่างไรดีกว่าครับ
คงไม่ได้คิดว่าโค๊ดตัวเองทำถูกแล้ว แต่มันดาวน์โหลดไม่ได้นะครับ
โค๊ดที่คุณ mr_win เอามาให้ดู นั่นครับยังไงก็โหลดได้ คุณลองก๊อปปี้ โดยไม่ต้องแก้ไขเลย
ยัดมันลงไปใน file อะไรก็ได้ นามสกุล php แล้วลองเรียกใช้ดู
|
|
|
|
|
Date :
2014-07-10 19:54:13 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|