2012-09-13 16 views
6

में सहेजें, मैं PHP में नया हूं। मैं एक स्क्रिप्ट बना रहा था जो मेरे डेटाबेस से कुछ डेटा के साथ एक सीएसवी फ़ाइल बनाना चाहिए और इसे मेरे सर्वर पर एक निर्देशिका में सहेजना चाहिए।PHP का उपयोग करके सीएसवी फ़ाइल बनाएं और इसे

मैंने इसे किसी भी तरह से किया लेकिन यह फ़ाइल हमेशा डाउनलोड हो रही है। मैं इसे डाउनलोड नहीं करना चाहता हूं। यह सिर्फ एक निर्देशिका पर सहेजना चाहिए।

यहां आपकी सहायता के लिए पूर्ण कोड है।

कृपया इस पर मेरी सहायता करें।

<?php 
$MYSQL_HOST="localhost"; 
$MYSQL_USERNAME="root"; 
$MYSQL_PASSWORD=""; 
$MYSQL_DATABASE="paesana"; 
$MYSQL_TABLE="ds_orders"; 
mysql_connect("$MYSQL_HOST", "$MYSQL_USERNAME", "$MYSQL_PASSWORD") or die(mysql_error()); 
mysql_select_db("$MYSQL_DATABASE") or die(mysql_error($conn)); 


$filename="ePay"; 
$csv_filename = $filename."_".date("Y-m-d_H-i",time()).".csv"; 

header("Content-Type: application/vnd.ms-excel"); 

$today="2008-12-21"; 
$sql = "SELECT * FROM $MYSQL_TABLE where cDate='$today'"; 

$result=mysql_query($sql); 

if(mysql_num_rows($result)>0){ 

$fileContent="Beneficiary Name,Beneficiary Account No,Beneficiary Bank Code,Transaction Amount,Narration\n"; 
    while($data=mysql_fetch_array($result)) 
    { 
    $fileContent.= "".$data['customer_id'].",".$data['oNum'].","."$today".",".$data['cShipService']." ".$data['cShipMethod'].",".$data['cEmail'].",".$data['ccType'].",".$data['cShipInstruct'].",".$data['cShipFname']." ".$data['cShipLname']."\n"; 
} 


$fileContent=str_replace("\n\n","\n",$fileContent); 
    echo $fileContent; 
} 
header("content-disposition: attachment;filename=$csv_filename"); ?> 
+2

तो यह गूंज नहीं है, यह एक फ़ाइल पर लिखने और हेडर को हटाएं() –

+1

क्यों न केवल इस ['fputcsv'] (http://php.net/manual/en/function.fputcsv.php) का उपयोग करें? –

+0

हाँ। यह अब काम किया। सभी के लिए बहुत बहुत धन्यवाद। यह कमाल काम किया। – user1667374

उत्तर

7
  1. आप परिणाम डाउनलोड करने के लिए नहीं करना चाहते हैं, हेडर से छुटकारा पाने के।

  2. इस लाइन के बाद:

    $csv_filename = $filename."_".date("Y-m-d_H-i",time()).".csv"; 
    

    जोड़ें:

    $fd = fopen ($csv_filename, "w"); 
    
  3. बजाय:

    echo $fileContent; 
    

    उपयोग

    fputs($fd, $fileContent); 
    
  4. निम्नलिखित कोड

    fclose($fd); 
    
+0

भयानक हर्नन है। लेकिन फ़ाइल निर्देशिका में डाउनलोड करने के साथ ही डाउनलोड कर रही है। मैं इसे केवल सहेजना चाहता हूं। कृपया – user1667374

+0

सहायता करें मैं इस एपे * .csv को एक अलग निर्देशिका में कैसे सहेज सकता हूं? – user1667374

+0

$ निर्देशिका = "/ tmp /"; // या निर्देशिका जो आप चाहते हैं $ fd = fopen ($ निर्देशिका। $ Cvs_filename, "w"); लाइन पर ऐसी कोई फ़ाइल या /getdetails.php में निर्देशिका 16 चेतावनी:: –

2
Try... 
Simple way to create csv file. 
<?php 
mysql_connect('hostname', 'username', 'password'); 
mysql_select_db('dbname'); 
$qry = mysql_query("SELECT * FROM tablename"); 
$data = ""; 
while($row = mysql_fetch_array($qry)) { 
    $data .= $row['field1'].",".$row['field2'].",".$row['field3'].",".$row['field4']."\n"; 
} 
$file = 'file.csv'; 
chmod($file, 0777); 
file_put_contents($file, $data); 
?> 
+0

यह बहुत आसान तरीका था और मेरे लिए काम किया। – Neo

5

आप उपयोग कर सकते हैं मत भूलना बंद करने के लिए अपनी फ़ाइल:

$data_array = array (
      array ('1','2'), 
      array ('2','2'), 
      array ('3','6'), 
      array ('4','2'), 
      array ('6','5') 
     ); 

$csv = "col1,col2 \n";//Column headers 
foreach ($data_array as $record){ 
    $csv.= $record[0].','.$record[1]."\n"; //Append data to csv 
} 

$csv_handler = fopen ('csvfile.csv','w'); 
fwrite ($csv_handler,$csv); 
fclose ($csv_handler); 

echo 'Data saved to csvfile.csv'; 
संबंधित मुद्दे