2011-05-18 1 views
0

donc, permettez-moi d'abord, avant de commencer à fournir d'autres suggestions sur la façon d'exporter simplement une table complète dans un fichier CSV, ce n'est pas ce que je veux faire (mon code démo en ce moment suggère cela, mais je ne fais que tester l'ensemble du téléchargement via le navigateur shabaz).Problème avec CSV MIME Type ne pas télécharger via le navigateur

Je veux réellement construire mon contenu à exporter à partir de plusieurs tables. Néanmoins, j'essaie simplement de faire en sorte que l'exportation et le téléchargement via le navigateur fonctionnent maintenant.

J'ai reçu ce code d'un exemple en ligne et actuellement ce qui se passe c'est simplement d'imprimer les données dans mon navigateur.

ici est mon code je teste:

$result = mysql_query("SELECT * FROM results_tb") or die(mysql_error()); 

    // I hard-code the column names so I can capitalize, add spaces, etc. 
    $fields = '"User ID","Test_id","score %","Time taken"'."\n"; 

    // Iterate through the rows of data 
    while ($row = mysql_fetch_assoc($result)) 
    { 
     //echo $row['user_id']; 
     $fields .= '"'.$row['user_id'].'","'.$row['test_id'].'","'.$row['score'].'","'.$row['time_elapsed'].'"'."\n"; 
    } 

    // Set our headers 
    header('Content-type: text/csv'); 
    // To display data in-browser, change the header below to: 
    // header("Content-Disposition: inline"); 
    header("Content-Disposition: attachment; filename=event_registrations.csv"); 

    // Output our data 
    echo $fields; 

Je suppose cet exemple est un pantalon, alors quelqu'un pourrait me expliquer comment faire cela?

merci beaucoup: D

ma réponse d'en-tête pris avec Firebug-Lite:

Date Wed, 18 May 2011 14:15:18 GMT 
X-Powered-By PHP/5.1.6 
Content-disposition attachment;filename=MyVerySpecial.csv 
Connection close 
Content-Length 992 
Server Apache/2.2.3 (Red Hat) 
Content-Type text/csv 
+0

Toute modification si vous modifiez le type de contenu en application/flux-octet? Si c'est le cas, votre navigateur veut gérer tous les types text/* et ignore la disposition. – Mel

+0

salut merci, malheureusement, je reçois la même chose. – buymypies

Répondre

0

Je pense que vous avez display_errors sur OFF, et vous fournir en sortie quelque chose avant ces header() appels sont fabriqué. Cela causerait le comportement que vous voyez.

Tout d'abord, modifiez votre fichier php.ini et assurez-vous que display_errors est allumé et que vous avez les rapports d'erreurs dans votre script PHP (par exemple error_reporting(E_ALL);). Maintenant, vous aurez probablement une erreur sur votre écran. Quelque chose le long des lignes de:

Cannot send header information. Output already started by XXX.php (line YYY). 

Ce qui est probablement se produire est que vous envoyez accidentellement un espace ou un saut de ligne avant que vous envoyez les header() commandes, et vous supprimer l'erreur. Lorsque vous envoyez quelque chose au navigateur avant ces appels header(), ils seront ignorés. Ainsi, le navigateur affiche simplement ce que vous envoyez au lieu de laisser l'utilisateur le télécharger.

Si vous utilisez Firefox, vous pouvez également utiliser l'extension Firebug pour vérifier les en-têtes de réponse HTTP de votre téléchargement.

+0

ok, donc j'ai essayé de régler les erreurs d'affichage. ne pas avoir d'erreur J'ai modifié mon message pour inclure l'en-tête de réponse HTTP. – buymypies

Questions connexes