Frage

Angenommen, ich habe eine Abfrage in einer Variablen namens $query gespeichert.Ich möchte auf der Ergebnisseite einen kleinen Hyperlink namens „Als CSV exportieren“ erstellen.Wie mache ich das?

War es hilfreich?

Lösung

$query = "SELECT * FROM table_name";

$export = mysql_query ($query ) or die ( "Sql error : " . mysql_error( ) );

$fields = mysql_num_fields ( $export );

for ( $i = 0; $i < $fields; $i++ )
{
    $header .= mysql_field_name( $export , $i ) . "\t";
}

while( $row = mysql_fetch_row( $export ) )
{
    $line = '';
    foreach( $row as $value )
    {                                            
        if ( ( !isset( $value ) ) || ( $value == "" ) )
        {
            $value = "\t";
        }
        else
        {
            $value = str_replace( '"' , '""' , $value );
            $value = '"' . $value . '"' . "\t";
        }
        $line .= $value;
    }
    $data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );

if ( $data == "" )
{
    $data = "\n(0) Records Found!\n";                        
}

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";

Andere Tipps

ehm?

<a href="yourexport.php" title="export as csv">Export as CSV</a>

, und wenn Sie auf der Suche nach Skript Weicht kann dies tun:

$myArray = array ();

$fp = fopen('export.csv', 'w');

foreach ($myArray as $line) {
    fputcsv($fp, split(',', $line));
}

fclose($fp);

CSV = durch Kommas getrennte Werte = Trennen Sie Ihre Werte durch Kommas

Sie müssen Ihr Ergebnis Zeile für Zeile, getrennt durch Komma (,), wiedergeben/ausdrucken.

Ich gehe davon aus, dass Ihre $query die Ergebnismenge Ihrer Abfrage ist, bei der es sich um ein assoziatives Array handelt:

while($query = mysql_fetch_assoc($rs)) {
  // loop till the end of records
  echo $query["field1"] . "," . $query["field2"] . "," . $query["field3"] . "\r\n";
}

wobei $rs das Ressourcenhandle ist.

Damit der Browser ein Download-Feld öffnet, müssen Sie den Header am Anfang der Datei setzen (vorausgesetzt, Ihr Dateiname lautet export.csv):

header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.csv");

Das ist es!

p.s.Diese Methode hinterlässt keine physische Datei auf dem Server.Wenn Sie beabsichtigen, eine Datei auf dem Server zu generieren, verwenden Sie die herkömmlichen Funktionen fopen und fwrite.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top