2010-10-01 4 views
0

Je me sens comme si je fais une erreur simple mais je n'arrive pas à comprendre quoi.L'exportation de PHP vers le fichier Excel me donne le code source dans les colonnes

J'ai du code pour exporter une table mySQL vers un fichier Excel.

Cependant, lorsque je fais l'exportation, le code source HTML entier est exporté avec mes données. J'ouvre le fichier dans Excel et mes données de table dedans mais il y a aussi tout le HTML dedans.

Qu'est-ce qui pourrait entraîner l'exportation de tout le code source avec les données?

Je dois mentionner que j'utilise ce code dans le cadre d'un plugin Wordpress que j'écris. Quand je teste l'exportation en dehors de wordpress, ça marche bien. Mais quand j'essaie d'exporter à partir d'une page d'administration Wordpress, j'obtiens tout le code source HTML supplémentaire.

+0

Y at-il un appel partout 'get_header()' dans votre script d'exportation, ou dans le thème/template utilisé? Je suis prêt à parier que le HTMl que vous êtes embarqué est l'échafaudage modèle. –

+0

Vous enregistrez essentiellement votre code HTML mais en donnant au fichier une extension de .xls? –

+0

@MarcB - En fait, je ne vois pas cette fonction exacte du côté admin mais j'imagine qu'il doit y avoir quelque chose de similaire. Comment puis-je examiner la question de l'échafaudage? Ou, que puis-je faire pour l'empêcher? Je n'ai jamais entendu parler de ça auparavant. – Stepppo

Répondre

1

Essayez ce code.

$host = 'localhost'; 
$user = 'mysqlUser'; 
$pass = 'myUserPass'; 
$db = 'myDatabase'; 
$table = 'products_info'; 
$file = 'export'; 

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error()); 

mysql_select_db($db) or die("Can not connect."); 


$res = mysql_query("SELECT * FROM $table"); 

// fetch a row and write the column names out to the file 
$row = mysql_fetch_assoc($res); 
$line = ""; 
$comma = ""; 
foreach($row as $name => $value) { 
    $line .= $comma . '"' . str_replace('"', '""', $name) . '"'; 
    $comma = ","; 
} 
$line .= "\n"; 
fputs($fp, $line); 

// remove the result pointer back to the start 
mysql_data_seek($res, 0); 

// and loop through the actual data 
while($row = mysql_fetch_assoc($res)) { 

    $line = ""; 
    $comma = ""; 
    foreach($row as $value) { 
     $line .= $comma . '"' . str_replace('"', '""', $value) . '"'; 
     $comma = ","; 


    } 
    $line .= "\n"; 
    fputs($fp, $line); 

} 

fclose($fp); 
header('Content-type: application/csv'); 
header('Content-Disposition: attachment; filename="export.csv"'); 
readfile('export.csv'); 

Merci,

Kanji

Questions connexes