Cara menggunakan php to csv

By On Tuesday, October 25th, 2022 Categories : Tanya Jawab

Cara menggunakan php to csv – Hi teman teman semua, Makasih banyak sudah mau datang di halaman blog TrendWisata ini. Saat ini, kami dari web site trendwisata.com ingin memberikan tanya jawab yang cool tentang Cara menggunakan php to csv. Kami persilakan sobat menonton setelah ini:


Saya punya data di database MySQL. Saya mengirimkan URL kepada pengguna untuk mengeluarkan data mereka sebagai file CSV.

Saya memiliki e-mail tautan, permintaan MySQL, dll. Tertutup.

Bagaimana saya, ketika mereka mengklik tautan, memiliki pop-up
untuk mengunduh CVS dengan catatan dari MySQL?

Saya memiliki semua informasi untuk mendapatkan catatan. Saya hanya tidak melihat bagaimana membuat PHP membuat file CSV dan membiarkan mereka mengunduh file dengan ekstensi .csv.

Jawaban:


Mencoba:

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

echo "record1,record2,record3\n";
die;

dll

Sunting: Berikut cuplikan kode yang saya gunakan untuk menyandikan bidang CSV secara opsional:

function maybeEncodeCSVField($string) 
    if(strpos($string, ',') !== false 





header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");

function outputCSV($data) 
  $output = fopen("php://output", "wb");
  foreach ($data as $row)
    fputcsv($output, $row); // here you can change delimiter/enclosure
  fclose($output);


outputCSV(array(
  array("name 1", "age 1", "city 1"),
  array("name 2", "age 2", "city 2"),
  array("name 3", "age 3", "city 3")
));

php: // output
fputcsv







Ini adalah versi perbaikan fungsi dari php.net yang diposting oleh @Andrew.

function download_csv_results($results, $name = NULL)

    if( ! $name)
    
        $name = md5(uniqid() . microtime(TRUE) . mt_rand()). '.csv';
    

    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename=". $name);
    header("Pragma: no-cache');
    header("Expires: 0");

    $outstream = fopen("php://output", "wb");

    foreach($results as $result)
    
        fputcsv($outstream, $result);
    

    fclose($outstream);

Sangat mudah digunakan dan bekerja sangat baik dengan set hasil MySQL (i) / PDO.

download_csv_results($results, 'your_name_here.csv');

Ingat untuk exit()setelah menelepon ini jika Anda selesai dengan halaman.







Selain semua yang sudah dikatakan, Anda mungkin perlu menambahkan:

header("Content-Transfer-Encoding: UTF-8");

Ini sangat berguna saat
menangani file dengan banyak bahasa di dalamnya, seperti nama orang, atau kota.


Utasnya agak tua, saya tahu, tetapi untuk referensi di masa depan dan untuk noobs seperti saya:

Semua orang di sini menjelaskan cara membuat CSV, tetapi kehilangan bagian dasar dari pertanyaan: cara menautkan. Untuk menautkan unduhan file CSV, Anda cukup menautkan file .php, yang pada gilirannya merespons sebagai file .csv. Header PHP
melakukan itu. Ini memungkinkan hal-hal keren, seperti menambahkan variabel ke querystring dan menyesuaikan output:

<a href="my_csv_creator.php?user=23&amp;othervariable=true">Get CSV</a>

my_csv_creator.php dapat bekerja dengan variabel yang diberikan dalam querystring dan misalnya menggunakan kueri basis data yang berbeda atau yang disesuaikan, mengubah kolom CSV, mempersonalisasikan nama file dan sebagainya, misalnya:

User_John_Doe_10_Dec_11.csv




Buat file Anda lalu kembalikan
referensi ke sana dengan tajuk yang benar untuk memicu Save As – edit yang berikut ini sesuai kebutuhan. Masukkan data CSV Anda ke $ csvdata.

$fname = 'myCSV.csv';
$fp = fopen($fname,'wb');
fwrite($fp,$csvdata);
fclose($fp);

header('Content-type: application/csv');
header("Content-Disposition: inline; filename=".$fname);
readfile($fname);


Berikut adalah contoh kerja lengkap menggunakan PDO dan termasuk tajuk kolom:

$query = $pdo->prepare('SELECT * FROM test WHERE id=?');
$query->execute(array($id));    
$results = $query->fetchAll(PDO::FETCH_ASSOC);
download_csv_results($results, 'test.csv'); 
exit();


function download_csv_results($results, $name)
            
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename=". $name);
    header("Pragma: no-cache');
    header("Expires: 0");

    $outstream = fopen("php://output", "wb");    
    fputcsv($outstream, array_keys($results[0]));

    foreach($results as $result)
    
        fputcsv($outstream, $result);
    

    fclose($outstream);


Pertama-tama buat data sebagai String dengan koma sebagai pembatas (dipisahkan dengan “,”). Sesuatu seperti
ini

$CSV_string="No,Date,Email,Sender Name,Sender Email \n"; //making string, So "\n" is used for newLine

$rand = rand(1,50); //Make a random int number between 1 to 50.
$file ="export/export".$rand.".csv"; //For avoiding cache in the client and on the server 
                                     //side it is recommended that the file name be different.

file_put_contents($file,$CSV_string);

/* Or try this code if $CSV_string is an array
    fh =fopen($file, 'w');
    fputcsv($fh , $CSV_string , ","  , "\n" ); // "," is delimiter // "\n" is new line.
    fclose($fh);
*/

Hei ini bekerja dengan sangat baik …. !!!! Terima kasih Peter Mortensen dan Connor Burton

<?php
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

ini_set('display_errors',1);
$private=1;
error_reporting(E_ALL ^ E_NOTICE);

mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());

$start = $_GET["start"];
$end = $_GET["end"];

$query = "SELECT * FROM customers WHERE created>='$start 00:00:00'  AND created<='$end 23:59:59'   ORDER BY id";
$select_c = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_array($select_c, MYSQL_ASSOC))

    $result.="$row['email'],";
    $result.="\n";
    echo $result;

?>



Metode sederhana –

$data = array (
    'aaa,bbb,ccc,dddd',
    '123,456,789',
    '"aaa","bbb"');

$fp = fopen('data.csv', 'wb');
foreach($data as $line)
    $val = explode(",",$line);
    fputcsv($fp, $val);

fclose($fp);

Jadi setiap baris $dataarray akan menuju ke baris baru dari file CSV yang baru Anda buat. Ini hanya berfungsi untuk PHP 5 dan yang lebih baru.


Anda cukup menulis data Anda ke CSV menggunakan fungsi fputcsv . mari kita lihat contoh di bawah ini. Tulis larik daftar ke file CSV

$list[] = array("Cars", "Planes", "Ships");
$list[] = array("Car's2", "Planes2", "Ships2");
//define headers for CSV 
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=file_name.csv');
//write data into CSV
$fp = fopen('php://output', 'wb');
//convert data to UTF-8 
fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
foreach ($list as $line) 
    fputcsv($fp, $line);

fclose($fp);

Cara termudah adalah dengan menggunakan
kelas CSV khusus seperti ini:

$csv = new csv();
$csv->load_data(array(
    array('name'=>'John', 'age'=>35),
    array('name'=>'Adrian', 'age'=>23), 
    array('name'=>'William', 'age'=>57) 
));
$csv->send_file('age.csv'); 

Dari pada:

$query = "SELECT * FROM customers WHERE created>='$start 00:00:00'  AND created<='$end 23:59:59'   ORDER BY id";
$select_c = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($select_c, MYSQL_ASSOC))

    $result.="$row['email'],";
    $result.="\n";
    echo $result;

Menggunakan:

$query = "SELECT * FROM customers WHERE created>='$start 00:00:00'  AND created<='$end 23:59:59'   ORDER BY id";
$select_c = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($select_c, MYSQL_ASSOC))

    echo implode(",", $row)."\n";

Sudah solusi yang sangat bagus datang. Saya hanya memasukkan kode total
sehingga pemula mendapat bantuan total

<?php
extract($_GET); //you can send some parameter by query variable. I have sent table name in *table* variable

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$table.csv");
header("Pragma: no-cache");
header("Expires: 0");

require_once("includes/functions.php"); //necessary mysql connection functions here

//first of all I'll get the column name to put title of csv file.
$query = "SHOW columns FROM $table";
$headers = mysql_query($query) or die(mysql_error());
$csv_head = array();
while ($row = mysql_fetch_array($headers, MYSQL_ASSOC))

    $csv_head[] =  $row['Field'];

echo implode(",", $csv_head)."\n";

//now I'll bring the data.
$query = "SELECT * FROM $table";
$select_c = mysql_query($query) or die(mysql_error()); 

while ($row = mysql_fetch_array($select_c, MYSQL_ASSOC))

    foreach ($row as $key => $value)  strpos($value, '"') !== false 
    echo implode(",", $row)."\n";


?>

Saya telah menyimpan kode ini di csv-download.php

Sekarang lihat bagaimana saya menggunakan data ini untuk mengunduh file csv

<a href="csv-download.php?table=tbl_vfm"><img title="Download as Excel" src="images/Excel-logo.gif" alt="Download as Excel" /><a/>

Jadi ketika saya mengklik tautan itu mengunduh file tanpa membawa saya ke halaman csv-download.php di browser.


Untuk mengirimnya sebagai CSV dan memberikannya nama file, gunakan header ():

http://us2.php.net/header

header('Content-type: text/csv');
header('Content-disposition: attachment; filename="myfile.csv"');

Sejauh membuat CSV itu sendiri, Anda hanya akan mengulang set hasil, memformat output dan mengirimkannya, sama seperti Anda akan konten lainnya.


Menulis kode CSV Anda sendiri mungkin membuang-buang waktu Anda, cukup gunakan paket seperti league / csv – ini berkaitan dengan semua
hal yang sulit bagi Anda, dokumentasinya bagus dan sangat stabil / dapat diandalkan:

http://csv.thephpleague.com/

Anda harus menggunakan komposer. Jika Anda tidak tahu apa itu komposer, saya sangat menyarankan Anda melihatnya: https://getcomposer.org/


<?
    // Connect to database
    $result = mysql_query("select id
    from tablename
    where shid=3");
    list($DBshid) = mysql_fetch_row($result);

    /***********************************
    Write date to CSV file
    ***********************************/

    $_file = 'show.csv';
    $_fp = @fopen( $_file, 'wb' );

    $result = mysql_query("select name,compname,job_title,email_add,phone,url from UserTables where id=3");

    while (list( $Username, $Useremail_add, $Userphone, $Userurl) = mysql_fetch_row($result))
    
        $_csv_data = $Username.','.$Useremail_add.','.$Userphone.','.$Userurl . "\n";
        @fwrite( $_fp, $_csv_data);
    
    @fclose( $_fp );
?>

Bagaimana cara menulis dalam file CSV menggunakan skrip PHP? Sebenarnya saya juga mencari itu. Ini adalah jenis tugas yang mudah dengan PHP. fputs (handler, content) – fungsi ini bekerja secara efisien untuk saya. Pertama, Anda perlu membuka file di mana Anda perlu menulis konten menggunakan fopen ($ CSVFileName, ‘wb’).

$CSVFileName = test.csv”;
$fp = fopen($CSVFileName, wb’);

//Multiple iterations to append the data using function fputs()
foreach ($csv_post as $temp)

    $line = “”;
    $line .= Content 1 . $comma . $temp . $comma . Content 2 . $comma . 16/10/2012″.$comma;
    $line .= \n”;
    fputs($fp, $line);



Masukkan $outputvariabel data CSV dan gema dengan header yang benar

header("Content-type: application/download\r\n");
header("Content-disposition: filename=filename.csv\r\n\r\n");
header("Content-Transfer-Encoding: ASCII\r\n");
header("Content-length: ".strlen($output)."\r\n");
echo $output;
Cara menggunakan php to csv | admin | 4.5
shopee flash sale gratis ongkir
x