IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] exportation php vers csv


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 109
    Points : 64
    Points
    64
    Par défaut [SQL] exportation php vers csv
    Bonjour

    j essaie de faire une exportation de ma base vers un fichier csv

    j ai tout un programme d'affichage de formulaires et des données extraites et en bas de page je dois mettre mon lien exporter vers excel
    j ai ecris le script de lecture de mes données puis je place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $fp = fopen("table.csv","w+");
    fseek($fp,0); // 4.On se place en début de fichier
    fputs($fp,$contenu); // 5.On écrit dans le fichier 
    fclose($fp);
    quand j affiche le contenu il est bon
    je place donc mon header en tete de page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Content-Type: application/msexcel");   
    header("Content-disposition: filename=table.csv");
    dans ce cas le fichier excel contient le contenu de la page et non pas le contenu des données

    Qui peut m'aider

    Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    c'est moi qui avait posté précedemment sur l'export csv.
    Je ne comprends pas ton probleme
    dans ce cas le fichier excel contient le contenu de la page et non pas le contenu des données
    1. Comment fais-tu pour sélectionner tes données a écrire dans le fichier ?
    2. Pour répondre à ta question sur le téléchargement du fichier, il suffit de faire un lien "en dur" sur ta page vers le fichier table.csv

    Exemple : page export.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?
    function Export_Excel()
    {
    require "ton_fichier_de_config.php";
     
    // on se connecte à MySQL 
    $db = mysql_connect($cfgHote, $cfgUser, $cfgPass) or die ("Impossible de se connecter : " . mysql_error());
     
    // on sélectionne la base 
    mysql_select_db($cfgBase,$db);
     
    // on crée la requete SQL et on l'envoie 
     
    $sql = "SELECT * FROM ta table";
     
    // on envoie la requete 
    $req = mysql_query($sql, $db) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on dit au navigateur qu'on va travailler dans un fichier csv
     
    header("Content-Type: application/msexcel");
    header("Content-disposition: filename=table.csv");
     
    // on récupère les intitulés de colonne
    if (mysql_num_rows($req) != 0) {
    $fields = mysql_num_fields($req);
    $i = 0;
    while ($i < $fields) {
    $intitules .= mysql_field_name($req, $i).";";
    $i++;
    }
    $intitules .= "\n";
     
    //On récupère les données de la table   
    while ($data = mysql_fetch_array($req, MYSQL_BOTH)) 
    {   
    foreach($data as $value) 
    {   
    $contenu .= $value.";";   
    }   
    $contenu .="\n";   
    }
    $contenu = $intitules.$contenu;
     
    // On cree le fichier
    $fp = fopen("table.csv","w+");
    fseek($fp,0); // On se place en début de fichier
    fputs($fp,$contenu); // On écrit dans le fichier 
    fclose($fp);
    }
     
    // on ferme la connexion à mysql 
    mysql_close($db);
    return(0);
    }
    ?>
    <html>
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
    		<title>Ma page export</title>
    	</head>
    <body>
    <? $recup = Export_Excel(); ?><br />
    <a href="table.csv" target="_blank">Exporter en excel</a>
    </body>
    </html>
    Ca t'aide ?

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 109
    Points : 64
    Points
    64
    Par défaut exportation csv
    Merci pour ta reponse rapide
    je pense que j ai compris de ou vient mon pb
    je teste cet am
    je te dis quoi

    Mille fois merci

  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 109
    Points : 64
    Points
    64
    Par défaut
    J avais bien ecrit ma fonction, mais avant cette fonction j ai deja des affichages dans la page, et j ai le message
    Warning: Cannot modify header information - headers already sent by
    je ne vois pas ou placer le paragraphe header

    merci

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    mais avant cette fonction j ai deja des affichages dans la page
    je ne comprends pas ? tu affiches des résultats de requête dans ta page ? si oui tu fais "echo" je présume ? ou est le probleme ?

  6. #6
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 109
    Points : 64
    Points
    64
    Par défaut
    Dans une page php qui contient d'autres choses , entêtes formulaires etc. j'inclus cettte page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <?php
     
    $pointeur_requete_clients=requete_query("select * from ".$prefix."abonnes ORDER BY abo_email");
    // on compte les resultas
    $num_retour_clients = nombre_lig_query($pointeur_requete_clients);
    //entete
    $contenu= "cliensts; a lu la NL;\n";
     
    $news_recherchee=1;
    // je recherche les infos de la liste choisie
    $pointeur_requete_log=requete_query('select * from '.$prefix.'log WHERE liste_id='.$news_recherchee.'');	
    $date_log=risul_query($pointeur_requete_log,0,'log_date');
    //echo 'date_log'.$date_log;
    //$date_reg=convert_time('M Y H:i', $date_reg);
    //echo '--'.$date_log.'<br>';
    //echo date('d m Y H:i',$date_log); 
    while($data_clients = mysql_fetch_assoc($pointeur_requete_clients)) 
    { 
    	// on affiche les informations de l'enregistrement en cours 
    	//echo $data_clients['abo_email'].' '.$data_clients['abo_id'].'<br>'; 
    	$pointeur_requete_visites_2=requete_query('select * from '.$prefix.'visites WHERE client ="'.$data_clients['abo_email'].'" & news ='.$news_recherchee.'');	
    	// recherche de la date d enregistrement de l'abonné	
    	$pointeur_requete_abo_2=requete_query('select register_date from '.$prefix.'abo_liste WHERE abo_id ='.$data_clients['abo_id'].'');
    	$num_retour_visites2 = nombre_lig_query($pointeur_requete_visites_2);
    	if ($num_retour_visites2>0)
    	{
    		// il y a des visite pour le client
     
    		$date_reg=risul_query($pointeur_requete_abo_2,0,'register_date');
    		//echo 'datereg'.$date_reg;
    		//$date_reg=convert_time('M Y H:i', $date_reg);
    		//echo '--'.$date_reg.'<br>';
     
    		if ($date_reg>$date_log)
    			{
    			// si la date enregistrement sup à la date de l envoi  le client n'a pas pu se conneceter
    			$contenu=$contenu.$data_clients['abo_email'].';pas inscrit lors envoi de la NL;\n ';
    			}
    			else
    			{
    				$contenu=$contenu. $data_clients['abo_email'].';a visité le site;\n';
    			}
    			 //echo 'date abonne'.date('d m Y H:i',$date_reg); 
    	}
     
    }
    Export_Excel($contenu); 
     
    function Export_Excel($contenu)
    {
     
     
    header("Content-Type: application/msexcel");
    header("Content-disposition: filename=table.csv");
     
     
    // On cree le fichier
    $fp = fopen("table.csv","w+");
    fseek($fp,0); // On se place en début de fichier
    fputs($fp,$contenu); // On écrit dans le fichier 
    fclose($fp);
     
     
    return(0);
    }
     
     
    ?>
    d
    mais là j'ai me message
    Warning: Cannot modify header information - headers already sent by
    je ne sais pas où mettre ce header.

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    A vue de nez : fais une fonction affichage ET une fonction export, et appelle les 2 fonctions dans ta page.

  8. #8
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 109
    Points : 64
    Points
    64
    Par défaut
    je vais essayer
    je te dis quoi
    Merci

  9. #9
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 109
    Points : 64
    Points
    64
    Par défaut resolu par "contournement"
    Bonjour
    N'ayant pas trouvé de solution acceptable meme en utilisant les @ob_flush()...
    j ai créé un lien vers une page exterieure (target).
    Dans cette page l utilisateur a la fonction ouvrir enregistrer
    et ca marche

    Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Excel] Exporter un tableau PHP vers CSV ou XLS
    Par mariafan dans le forum Bibliothèques et frameworks
    Réponses: 20
    Dernier message: 28/10/2011, 11h53
  2. Exporter ListView vers CSV
    Par Zhamy dans le forum C#
    Réponses: 4
    Dernier message: 22/10/2011, 23h19
  3. [MySQL] Exporter table vers csv via PhpMyAdmin
    Par mikael2235 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/06/2010, 20h47
  4. [ODBC] export php vers Excel probleme de colonne
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/02/2009, 12h06
  5. Export oracle vers csv
    Par MikeM dans le forum SQL
    Réponses: 5
    Dernier message: 11/02/2008, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo