Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2007, 11h26   #1
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 90
Points : 30
Points : 30
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 :
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 :
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
yveslens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 12h02   #2
Invité régulier
 
Inscription : février 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 13
Points : 6
Points : 6
Bonjour,
c'est moi qui avait posté précedemment sur l'export csv.
Je ne comprends pas ton probleme
Citation:
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 :
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 ?
bearwithnohead est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 12h16   #3
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 90
Points : 30
Points : 30
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
yveslens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 13h39   #4
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 90
Points : 30
Points : 30
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
yveslens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 15h18   #5
Invité régulier
 
Inscription : février 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 13
Points : 6
Points : 6
Citation:
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 ?
bearwithnohead est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 15h25   #6
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 90
Points : 30
Points : 30
Dans une page php qui contient d'autres choses , entêtes formulaires etc. j'inclus cettte page :

Code :
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
Citation:
Warning: Cannot modify header information - headers already sent by
je ne sais pas où mettre ce header.
yveslens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 15h50   #7
Invité régulier
 
Inscription : février 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 13
Points : 6
Points : 6
A vue de nez : fais une fonction affichage ET une fonction export, et appelle les 2 fonctions dans ta page.
bearwithnohead est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 15h54   #8
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 90
Points : 30
Points : 30
je vais essayer
je te dis quoi
Merci
yveslens est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2007, 07h06   #9
Nouveau Membre du Club
 
Inscription : août 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 90
Points : 30
Points : 30
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
yveslens est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h50.


 
 
 
 
Partenaires

Hébergement Web