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 21/12/2010, 20h10   #1
Invité régulier
 
alain smo
Inscription : mai 2010
Messages : 31
Détails du profil
Informations personnelles :
Nom : alain smo

Informations forums :
Inscription : mai 2010
Messages : 31
Points : 7
Points : 7
Par défaut télécharger les .csv faits à partir des tables de la base mysql

Bonjour,
je sais télécharger une table de ma base mysql sous la forme d'un .csv avec le source ci-dessous.

je n'arrive pas à enchaîner plusieurs téléchargements (plusieurs tables)
dans l'exemple ci-dessous j'essaie d'enchainer le même traitement pour 2 tables.
Visiblement le deuxième traitement ne s'exécute pas
on n'obtient que le fichier repertoire.csv qui est d'ailleurs correct.

je ne comprends pas pourquoi le deuxième traitement ne se fait pas :

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 
<?php
 
 function exportMysqlToCsv($table,$filename = 'export.csv')
{
    $csv_terminated = "\n";
    $csv_separator = ";";
    $csv_enclosed = '"';
    $csv_escaped = "\\";
    $sql_query = "select * from $table";
 
    // Gets the data from the database
    $result = mysql_query($sql_query);
    $fields_cnt = mysql_num_fields($result);
 
 
    $schema_insert = '';
 
    for ($i = 0; $i < $fields_cnt; $i++)
    {
        $l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,
            stripslashes(mysql_field_name($result, $i))) . $csv_enclosed;
        $schema_insert .= $l;
        $schema_insert .= $csv_separator;
    } 
 
    $out = trim(substr($schema_insert, 0, -1));
    $out .= $csv_terminated;
 
    // Format the data
    while ($row = mysql_fetch_array($result))
    {
        $schema_insert = '';
        for ($j = 0; $j < $fields_cnt; $j++)
        {
            if ($row[$j] == '0' || $row[$j] != '')
            {
 
                if ($csv_enclosed == '')
                {
                    $schema_insert .= $row[$j];
                } else
                {
                    $schema_insert .= $csv_enclosed . 
					str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j]) . $csv_enclosed;
                }
            } else
            {
                $schema_insert .= '';
            }
 
            if ($j < $fields_cnt - 1)
            {
                $schema_insert .= $csv_separator;
            }
        } 
 
        $out .= $schema_insert;
        $out .= $csv_terminated;
    } 
 
	return $out;
}
 
 
session_start();
{
 //connexion à la base
$db = '*******'; // MYSQL database name
$user = "******";// Mysql Database user
$pass = "******";// Mysql Datbase password
$host = "********";// MYSQL database host adress
$link = mysql_connect($host,$user,$pass) or die("erreur de connexion au serveur");
 
mysql_select_db($db);
 
// 1er traitement =========================
$filename ='repertoire.csv';
$out = exportMysqlToCsv("repertoire",$filename);
    header("Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0");
    header("Content-Length: " . strlen($out));
 
	header("Content-Type: application/csv-tab-delimited-table"); 
	header("Content-disposition: filename=$filename");
 
    echo $out;
 
// 2ème traitement ===========================
$filename = 'enseignants.csv';
$out = exportMysqlToCsv("enseignants", $filename);
    header("Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0");
    header("Content-Length: " . strlen($out));
 
	header("Content-Type: application/csv-tab-delimited-table"); 
	header("Content-disposition: filename=$filename");
 
    echo $out;
}
 
?>
alainsm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 20h14   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Une requête HTTP ne peux retourner qu'un seul document.

Tu pourrais produire un zip contenant tous tes fichiers et le telecharger.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 20h29   #3
Invité régulier
 
alain smo
Inscription : mai 2010
Messages : 31
Détails du profil
Informations personnelles :
Nom : alain smo

Informations forums :
Inscription : mai 2010
Messages : 31
Points : 7
Points : 7
Citation:
Envoyé par sabotage Voir le message
Une requête HTTP ne peux retourner qu'un seul document.

Tu pourrais produire un zip contenant tous tes fichiers et le telecharger.


comment faire le zip ?

merci
alainsm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 19h08   #4
Membre du Club
 
Jean Frederic Nault
Inscription : juillet 2010
Messages : 61
Détails du profil
Informations personnelles :
Nom : Jean Frederic Nault

Informations forums :
Inscription : juillet 2010
Messages : 61
Points : 59
Points : 59
Tu peux le faire avec ziplib, un module souvent supporter,

tu peux valider si il est actif a l'aide de php_info()

Pour son utilisation, il y a bcp de sites traitant le sujet, je te laisse fouiller un peu
nault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 20h22   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
t'as les droits sur FILES ?
sinon pour creer du csv c'est avec fputcsv
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h13.


 
 
 
 
Partenaires

Hébergement Web