いくつかの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
$ export_idをエコーしてループに入ることを確認できますか? forの引数を数えるのも良い考えではありません。 forループの前に$ count = count($ _ POST ['checkbox'])を設定すると、パフォーマンスが向上します。 – Robert
$ export_idをエコーしている - 部分的には、選択されているチェックボックスからIDが表示されていますが、それはなぜですか?しかし、それとは別に、例えばID 305を選択して「305」と表示された場合は、それは問題ありません。 – user990767