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 :

télécharger les .csv faits à partir des tables de la base mysql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    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 : 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
    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;
    }
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Une requête HTTP ne peux retourner qu'un seul document.

    Tu pourrais produire un zip contenant tous tes fichiers et le telecharger.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Par défaut
    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

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Par défaut
    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

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    t'as les droits sur FILES ?
    sinon pour creer du csv c'est avec fputcsv

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/03/2012, 10h07
  2. Réponses: 1
    Dernier message: 11/08/2011, 12h05
  3. Réponses: 1
    Dernier message: 21/05/2009, 01h03
  4. Generer les .hbm a partir des classes
    Par you98 dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/08/2006, 17h44
  5. Réponses: 8
    Dernier message: 12/07/2006, 10h32

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