2012-09-13 41 views
6

Soy nuevo en PHP. Estaba creando un script que debería crear un archivo csv con algunos datos de mi base de datos y guardarlo en un directorio en mi servidor.Crear archivo CSV usando PHP y guardarlo en el directorio

De alguna manera lo hice pero este archivo siempre está descargando. No quiero que se descargue. Debería simplemente guardar en un directorio.

Aquí está el código completo para su ayuda.

Por favor, ayúdenme en esto.

<?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

entonces no se hacen eco de ella, lo escriben en un archivo y eliminar el encabezado() –

+1

¿por qué no usar esto ['fputcsv'] (http://php.net/manual/en/function.fputcsv.php)? –

+0

Sí. Funcionó ahora. Muchas gracias a todos. Funcionó increíble. – user1667374

Respuesta

7
  1. Si no desea descargar los resultados, deshacerse de las cabeceras.

  2. Después de esta línea:

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

    Añadir:

    $fd = fopen ($csv_filename, "w"); 
    
  3. En lugar de:

    echo $fileContent; 
    

    Uso

    fputs($fd, $fileContent); 
    
  4. No se olvide de cerrar su archivo

    fclose($fd); 
    
+0

Eso es impresionante Hernan. Pero el archivo está guardando en el directorio, así como la descarga. Quiero que se guarde solo. Por favor, ayuda – user1667374

+0

¿Cómo puedo guardar este epay * .csv en un directorio diferente? – user1667374

+0

$ directory = "/ tmp /"; // O el directorio que desea $ fd = fopen ($ directory. $ Cvs_filename, "w"); –

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

Esto fue demasiado simple y funcionó para mí. – Neo

5

Usted puede utilizar el siguiente código:

$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'; 
Cuestiones relacionadas