2017-08-07 5 views
0

Vous essayez de créer un fichier csv avec une exportation à partir de notre base de données. C'est le code im using:Impression de PHP au navigateur au lieu du fichier CSV

if(isset($_POST["Export"])){ 

    header('Content-Type: text/csv; charset=utf-8'); 
    header('Content-Disposition: attachment; filename=data.csv'); 
    $output = fopen("php://output", "w"); 
    fputcsv($output, array('ID', 'Name', 'Email', 'Phone')); 
    $query = "SELECT userID, name, email, phone from user ORDER BY userID DESC"; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     fputcsv($output, $row); 
    } 
    fclose($output); 

Quand je clique sur le bouton d'exportation, il charge cette page de PHP avec les résultats corrects dans le navigateur. Cependant, je ne peux pas obtenir les résultats à stocker dans un fichier. Toute aide serait appréciée.

+0

Ces en-têtes sont exactement comment je crée des téléchargements CSV (sans l'utf-8 cependant, mais cela ne devrait pas poser de problème). Problèmes possibles: Vérifiez d'abord que les en-têtes sont envoyés au navigateur (F12 puis onglet Réseau), la sortie possible (non désirée) avant que vous définissiez les en-têtes les cassera (cela déclenche également un avertissement dans votre error_log). 2ème: essayez de citer le nom de fichier 'filename =" data.csv "', juste pour être sûr, 3ème: essayez un autre navigateur pour vérifier que ce n'est pas un bug de navigateur (le vôtre ne serait pas le premier) –

+0

Hey @PetervanderWal, Merci pour la réponse. 1. Je vois l'en-tête correct avec toutes les données de base de données dans l'aperçu. 2. J'ai essayé de citer le nom de fichier, et rien, malheureusement. 3. Essayé dans Chrome et Firefox – matture

Répondre

0

Essayez d'utiliser l'un de ces types de contenu:

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Type: application/octet-stream'); 
+0

Maintenant son ouverture juste à une page vierge de PHP (où il y avait la bonne sortie avant). Cela pourrait-il être un problème d'autorisations? – matture

+0

Ceci va stocker le fichier côté serveur. En lisant correctement la question, Matture essaye de créer un lien "Download CSV". –

+0

C'est correct @PetervanderWal. Je voudrais télécharger le côté client du fichier. – matture

-1

Essayez de retirer la ligne fclose($output);.

0

Essayez d'envoyer header("Content-Type: application/force-download"); juste avant la sortie de votre fichier.