Nasıl bir tablo sorgu bir CSV almak için bir sitede bir indirme düğmesi koymak?

3 Cevap php

Nasıl bir tablo sorgu bir CSV almak için bir sitede bir indirme düğmesi koymak?

Şu anda sever HD CSV dosyası yapmak için "SELECT INTO Dosyası" SELECT * kullanarak ve dışında gayet am ...

Ben şimdi benim gibi CSV oluşturmak istiyor, ama onlar İndir tıkladıklarında "OUTFILE" müşteri bilgisayara kaydedilmesini istiyorum.

<?php
// Create new file name for file to be created 
$csvfilename = "/dropbox/consolodated-" . date("Y-M-d_H-i-s") . ".csv";


mysql_query ("SELECT * INTO OUTFILE '$csvfilename' FIELDS TERMINATED BY ',' FROM people ");
?>

<H2>Done - File created - Now download it from FTP site.</H2>

Teşekkürler Yardım - Merry Christmas

3 Cevap

Buna bir çözüm olabilir ki:

  • Öncelikle sunucuya csv dosyayı kaydedin.
  • o yol var olsun
  • ve nihayet indirmek için, örneğin yolunda bir çapa etiketi oluşturun:

_

 <a href="pathtoyourcsvfile.csv">Download</a>

Dosya (ama değil yol!) Indirmek için dosyanın içeren gizli bir alan içerir sonunda bir POST form ekleyin. Sonra değişken okumak ve indirmek için dosyayı sunmak için sayfa o mesaj var. Sorgu tamamlanıncaya kadar form görünür olmadığı kadar çıktı tamponlama sağlamak ve bazen floş unutmayın.

Basit, burada bir örnek parçacık:

$csv_filename = "/dropbox/consolodated-" . date("Y-M-d_H-i-s") . ".csv";

Download($csv_filename);

Ve burada yükleme fonksiyonu:

function Download($path, $speed = null)
{
    if (is_file($path) === true)
    {
    	set_time_limit(0);

    	while (ob_get_level() > 0)
    	{
    		ob_end_clean();
    	}

    	$size = sprintf('%u', filesize($path));
    	$speed = (is_null($speed) === true) ? $size : intval($speed) * 1024;

    	header('Expires: 0');
    	header('Pragma: public');
    	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    	header('Content-Type: application/octet-stream');
    	header('Content-Length: ' . $size);
    	header('Content-Disposition: attachment; filename="' . basename($path) . '"');
    	header('Content-Transfer-Encoding: binary');

    	for ($i = 0; $i <= $size; $i = $i + $speed)
    	{
    		echo file_get_contents($path, false, null, $i, $speed);

    		flush();
    		sleep(1);
    	}

    	exit();
    }

    return false;
}

Merry Xmas to you too! =)