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 :

requête sql vers excel en php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut requête sql vers excel en php
    Bonjour,


    j'ai cherché un peu partout. j'ai trouvé un script qui me permet à partir d'une requete sql de généré un fichier excel avec les données concerner.

    Mon problème est le suivant :
    - j'arrive à généré le fichier excel mais il me dit " impossible de lire le fichier"


    Si quelqu'un à une idée , je suis preneuse Smile

    Voici le code pour génér mon fichier excel :

    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
     
    <?php
      //header("Content-Type: application/vnd.ms-excel");
      header("Content-Type: application/csv-tab-delimited-table");
      header("Expires: 0");
      header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
      header("content-disposition: attachment;filename=listing_client.csv");
      $text = "<table border=1>";
      $text .= "<tr>
      <th><h3> NomSociete </th>
      <th><h3> Téléphone </th>
      <th><h3> Login </th>
      <th><h3> Mot de Passe </th></tr>";
      $con = connect( DB_SERVER , DB_USER, DB_PW, DB );
      $req_sql = " SELECT nomSociete, telFixe, login, mdp FROM `interlocuteur` WHERE 1 ;";
      $sql = @odbc_exec($con, $req_sql); 
      //echo "test odbc_exec".@odbc_exec($req_sql);
      $color = "#c0ffe0";
        while(odbc_fetch_row($sql)){
        if($color=="#e0ffff"){$color = "#c0ffe0";}else{$color = "#e0ffff";}
     
          $text .= "<TR>";
          $text .= "<TD><h5>".odbc_result($sql, 1)."</TD>";
          $text .= "<TD><h5>".odbc_result($sql, 2)."</TD>";
          $text .= "<TD><h5>".odbc_result($sql, 3)."</TD>";
          $text .= "<TD><h5>".odbc_result($sql, 4)."</TD>";
          $text .= "</TR>";
     
      }
      $text .="</table>";
      echo $text;
    ?>
    Merci d'avance

    jenny

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,

    tu passes ton fichier en code html en espérant que excel va faire des miracles et reconnaitre les balises <td> pour des virgules.

    Il est plus simple de lui fournir un véritable fichier csv avec les formules qui vont bien.

    J'avais fais une classe permettant de générer au format cvs.

    Code PHP : 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
     
    class FichierExcel {
     
    private 
        $csv = Null;
        /**
         * Cette ligne permet de créer les colonnes du fichers Excel
         * Cette fonction est totalement faculative, on peut faire la même chose avec la
         * fonction insertion, c'est juste une clarté pour moi
         */
        function Colonne($file) {
     
            $this->csv.=$file."\n";
            return $this->csv;
     
        }
     
        /**
         * Insertion des lignes dans le fichiers Excel, il faut introduire les données sous formes de chaines
         * de caractaire.
         * Attention a séparé avec une virgule.
         */
        function Insertion($file){
     
            $this->csv.=$file."\n";
            return $this->csv;
        }
     
        /**
         * fonction de sortie du fichier avec un nom spécifique.
         *
         */
        function output($NomFichier){
     
            //header("Content-type: application/vnd.ms-excel");
            header("Content-disposition: attachment; filename=$NomFichier.csv");
            print $this->csv;
            exit;
     
        }
    }

    ce qui avec ton bout de code donneras quelque chose comme ça
    Code PHP : 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
     
     
    <?php
     
    include('ClassFichierExcel.php');
     
    $fichier = new FicheExcel();
     
    $fichier->Colonne("NomSociete;Téléphone;Login;Mot de passe");
     
    $con = connect( DB_SERVER , DB_USER, DB_PW, DB );
      $req_sql = " SELECT nomSociete, telFixe, login, mdp FROM `interlocuteur` WHERE 1 ;";
      $sql = @odbc_exec($con, $req_sql);
     
        while(odbc_fetch_row($sql))
        {
        	$fichier->Insertion(odbc_result($sql, 1).";".odbc_result($sql, 2).";".odbc_result($sql, 3).";".odbc_result($sql, 4));
        }
    $fichier->output('NomDeMonFichier');
     
     
    ?>

    Tu remarqueras que j'utilise le point-virgule pour séparer, ce qui est bon pour OOo ou Excel2003.

    Pour les version inférieur il faut faire
    Excel >Menu>Donnée>Convertir>point-virgule

    Voila n'hésite pas pour plus d'info.

    MaitrePylos

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Tout d'abord merci de m'avoir répondu,

    Alors j'ai fait exactement ton code et il me met une erreur :


    Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /var/www/vhosts/ClassFichierExcel.php on line 5

    le ligne 5 représente la ligne où est écris "private"


    Si tu as une idée ?

    Merci

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,

    Tu utilises php 4.X je supose.

    Supprime le private et remplace par ceci.

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var $csv = Null;

    MaitrePylos

  5. #5
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    oki doki


    cette fois, j'ai celle ci comme erreur


    Fatal error: Call to undefined function: connect() in /var/www/vhosts/excel.php on line 25

    la ligne 25 correpond a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $con = connect( DB_SERVER , DB_USER, DB_PW, DB );
    Merci

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    C'est ta définition de connexion à ta base de donnée(donc rien à voir avec la classe).

    Donc dans ton cas il dit qu'il ne reconnais pas le connect.

    Alors les codes suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DB_SERVER , DB_USER, DB_PW, DB
    sont des "define" dans php, donc il sont définit dans un fichier quelque part il faut l'inclure.

    de plus pour odbc la commande est 'odbc_connect'.

    Soit tu inclus le fichier et tu auras ceci :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $con = odbc_connect( DB_SERVER , DB_USER, DB_PW, DB );
    ou alors
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $con = odbc_connect ( "localhost", "utilisateur", "password","laBase" )

  7. #7
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Maintenant il me dit qu'il ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Fatal error: Call to undefined function: odbc_connect()



    merci

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Met moi ta page complète.

    Qu'utilises-tu comme base de donnée?

  9. #9
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    bonjour,


    j'utilise mysql (phpmyadmin)

    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
     
    <?php
    header("Content-Type: application/csv-tab-delimited-table");
    include_once "../common/kernel/mysqldatabase.php";
    include('ClassFichierExcel.php');
    $fichier = new FichierExcel();
    $fichier->Colonne("NomSociete;Téléphone;Login;Mot de passe");
    $con = odbc_connect( DB_SERVER , DB_USER, DB_PW, DB );
    $req_sql = " SELECT nomSociete, telFixe, login, mdp FROM `interlocuteur` WHERE 1 ;";
    $sql = @odbc_exec($req_sql); 
    while(odbc_fetch_row($sql))
    {
    $fichier->Insertion(odbc_result($sql, 1).";".odbc_result($sql, 2).";".odbc_result($sql, 3).";".odbc_result($sql, 4));
    }
    $fichier->output("listing_client");
    ?>
    voilou

    merci


  10. #10
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Dis moi que tu utilise Une version Linux/Debian?

  11. #11
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Un linux c sur, une debian je sais pas , c'est le serveur du boulot

  12. #12
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    peux-tu me donner le fichier mysqldatabase.php en enlevant les infos sensible comme le mot de passe que tu remplaces par *******

  13. #13
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    en mysql si tout est bien installer le plus simple fais comme ceci,

    remplace ce qu'il faut dans le connect.

    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
     
    <?php
    //pas besoin se trouve dans la class ClassFichierExcel.php
    //header("Content-Type: application/csv-tab-delimited-table");
    //include_once "../common/kernel/mysqldatabase.php";
    include('ClassFichierExcel.php');
    $fichier = new FichierExcel();
    $fichier->Colonne("NomSociete;Téléphone;Login;Mot de passe");
    $con = mysql_connect("localhost","username","password","db");
    $req_sql = " SELECT nomSociete, telFixe, login, mdp FROM `interlocuteur` WHERE 1 ;";
    $sql = mysql_query($req_sql); 
    while($row =mysql_fetch_row($sql))
    {
    $fichier->Insertion("$row[O];$row[1];$row[2];$row[3]");
    }
    $fichier->output("listing_client");
    ?>

  14. #14
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    voici le code final :

    et ca marche !!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    include_once "header.php";
    header("Content-Type: application/vnd.ms-excel");
    header("content-disposition: attachment;filename=listing_client.csv");
    echo "NomSociete;Téléphone;Login;Mot de Passe\n";
    $req_sql = " SELECT nomSociete, telFixe, login, mdp FROM `interlocuteur`;";
    $sql = mysql_query($req_sql); 
    while($row =mysql_fetch_row($sql)){
          echo $row[0].";".$row[1].";".$row[2].";".$row[3].";\n";
    }
    ?>

    Merci pour tout

    PS: j'ai utiliser + - une autre méthode mais jte remercie pour tes renseignement, il m'ont fort aidé


  15. #15
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Content pour toi

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

Discussions similaires

  1. Variables dans requête SQL d'Excel vers base Access
    Par Banjalex dans le forum Excel
    Réponses: 2
    Dernier message: 20/03/2014, 16h53
  2. [Excel 2003-2007] requêtes SQL vers une base access depuis Excel
    Par .Spirit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/10/2010, 17h03
  3. Exporter une requête SQL vers excel
    Par Info_76 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2007, 09h09
  4. [Excel] Exportation d'une requête vers Excel via PHP
    Par Foudébois dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 17/05/2006, 16h46
  5. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 22h28

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