我有一張顯示一些mysql數據的表格,每個條目都有一個複選框來選擇單個條目,現在我希望能夠將這些選定條目導出到xml或txt文件中,我試過這個:將mysql導出到txt/xml文件並下載它
<?php
if ($_POST['exporttxt']) {
for ($i = 0; $i < count($_POST['checkbox']); $i++) {
$export_id = $checkbox[$i];
$sql = "SELECT * FROM table WHERE id='$export_id'";
$result = mysql_query($sql);
}
$output = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n";
if ($result->num_rows > 0) {
while ($myrow = $result->fetch_assoc())
{
$output .= "\t<row>\n";
foreach ($myrow as $_name => $_value)
{
$output .= "\t\t<$_name>$_value</$_name>\n";
}
$output .= "\t</row>\n";
}
}
$output .= "</root>";
}
header('content-type: text/xml');
header('content-disposition: attachment; filename=data_export.xml');
echo $output;
exit;
?>
但這並沒有工作,任何提示?
我已經改變了代碼一點,我現在用的這個
<?php
if ($_POST['exporttxt']) {
for($i=0;$i<count($_POST['checkbox']);$i++){
$export_id = $checkbox[$i];
$text = mysql_query("SELECT code FROM ticket WHERE id='$export_id'");
$text = mysql_fetch_assoc($text);
$text = $text["code"];
ob_end_flush();
header("Content-type: text/plain");
header("Content-disposition: attachment;filename=\"filename.txt\"");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: ".strlen($output).";\n");
echo($text);
}
}
?>
我現在得到我的屏幕上正確的輸出,但它不會給我下載的文件?
怎麼沒工作? – Repox 2011-12-15 21:11:29
你能迴應$ export_id以確保你進入循環。對於爭論中的計數也不是一個好主意。在for循環之前設置$ count = count($ _ POST ['checkbox']),您將獲得更好的性能。 – Robert 2011-12-15 21:13:42