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 :

Exporter des tableaux vers excel


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut Exporter des tableaux vers excel
    Bonjour a tous,

    Je vous explique mon problème : Je voudrais qu'à partir de plusieurs IHM, je puisse exporter leur contenu de l'onglet selectionné dans un fichier excel ( les différents onglets dans le meme fichier ) . On va dire que je veux télécharger les différents affichés sur l image.

    Nom : Capture.PNG
Affichages : 444
Taille : 10,0 Ko

    J'ai créé ma page html, avec un tableau qui contient des données mais cela sert juste d'information , car je ne veux pas télécharger ce tableau je veux télécharger les onglets dans l'image au dessus.
    Donc les différents onglets, ont des adresses différentes car ils ne sont pas tous stockés au même endroit.

    Nom : Capture1.PNG
Affichages : 374
Taille : 113,1 Ko

    Donc je ne sais pas quoi utiliser pour faire ceci , si vous avez des solutions je suis à l'écoute de toute proposition

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,

    vous pouvez créer le fichier Excel (avec PHPExcel) à partir des données où qu'elles soient (base de données, fichiers, etc.) tant que le serveur y a accès. Les afficher n'est pas un pré-requis.
    Christophe

    Pensez à mettre quand c'est le cas.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Bonjour ,

    J'ai utiliser donc du PHP pour réaliser cela, voici mon fichier 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
    <?php
    //header('Content-type: text/csv;');
    //header('Content-Disposition: attachment; filename="Export tuto.csv"');
    //mysqli_connect("10.53.211.36","generation","steria");
    //die();
    date_default_timezone_set("Europe/Paris");
    $date = date("Y-m-d",strtotime("-1 day"))." 18:00:00";
    echo $date;
    die();
     
    try{
    	$PDO = new PDO('mysql:host=XX:XX:xx.XX;dbname=blabla','login','mdp');
    	$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
    	$PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);
    }catch(PDOException $e) {
     
    	echo 'Connexion impossible';
    }
    $req = $PDO->prepare('SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter');
    $req->execute();
    $data = $req->fetchAll();
    require 'class.csv.php';
    CSV::export($datas,'Export tuto');
    ?>
    Ensuite j'ai mon fichier class.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
    <?php
    class CSV{
     
    	static function export($datas,$filename){
    		header('Content-Type: text/csv;');
    		header('Content-Disposition: attachment; filename="'.filename.'.csv"');
    		$i = 0;
    		foreach($datas as $v){
    			if($i==0) {
    				echo '"'.implode('";"',array_keys($v)).'"'."\n";
     
    				echo '"'.implode('";"',$v).'"'."\n";
    				$i++;
    			}
    		}
    	}
     
     
    ?>
    Mais j'ai un problème car mon fichier du coup il m'affiche que la date. Alors que moi je veux qu'il m'affiche etat_fin en fonction de la date ?
    Si vous avez une solution n'hésitez pas

    Merci

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    moi je veux qu'il m'affiche etat_fin en fonction de la date ?
    Tu n'es pas sur de ce que tu veux ?

    Ta requête n'est pas finie, il manque la condition dans la requête et et le paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $PDO->prepare('SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter = ?');
    $req->execute(array($date));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Si je suis sur de ce que je veux, je voulais mettre un point .

    Merci pour ton aide , mais du coup moi je veux afficher etat_fin depuis hier 18h00 . Donc je sais pas trop quoi rajouter dans mon WHERE .

    J'ai mit sa pour qu'il m envoie etat_fin par rapport aux dates du 24 , de 18h00 à 07h00 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $PDO->prepare('SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter BETWEEN '2016-11-24 18:00:00' AND '2016-11-25 07:00:00'');

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Ca serait bien de tester le code que vous postez et indiquer le problème. Je pense que cela ne peut par fonctionner car il y a des problèmes d'apostrophes. Pour les dates vous devriez regarder STR_TO_DATE.
    Jeter un œil sur le tutoriel PDO pour comprendre les requêtes préparées ne serait pas inutile non plus.
    Christophe

    Pensez à mettre quand c'est le cas.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    J'ai réussi à résoudre l'erreur que j'avais .
    Merci
    Images attachées Images attachées  

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Avec une requête préparée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $PDO->prepare('SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter BETWEEN ? AND ?');
    $req->execute(array('2016-11-24 18:00:00', '2016-11-25 07:00:00'));
    Attention à l'instruction BETWEEN et à savoir si les bornes sont incluses ou non dans la sélection (personnellement, je ne me rappelle jamais )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    J'ai mit sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $PDO->prepare("SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter BETWEEN '2016-11-24 18:00:00' AND '2016-11-25 07:00:00'");
    $req->execute(array($date));
    Mais le problème c'est que quand sa me télécharge le fichier excel , dedans il y a pas ma requête .

    Nom : Capture.PNG
Affichages : 406
Taille : 34,7 Ko

    Alors que j'ai tester ma requete dans ma base et sa affiche sa :

    Nom : Capture1.PNG
Affichages : 346
Taille : 10,4 Ko

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Et pourquoi n'avez-vous pas mis ce qu'a écrit Celira ? (qui est juste contrairement à votre code)
    Christophe

    Pensez à mettre quand c'est le cas.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé de mettre ce qu'elle m'a dit mais sa ne marchait pas. Mais finalement j'avais oublié un $filename dans mon code.

    Mais du coup maintenant je télécharge le bon fichier mais cela m'affiche juste la et toujours pas la requete
    Nom : Capture.PNG
Affichages : 380
Taille : 2,0 Ko

    Merci pour vos réponses

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Que contient $data ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    var_dump($data);
    ?>
    Christophe

    Pensez à mettre quand c'est le cas.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Christophe P. Voir le message
    Que contient $data ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    var_dump($data);
    ?>
    Mon $data contient cela : $data = $req->fetchAll(); => donc normalement ma requête sql
    Voici mon code 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
    <?php
    //header('Content-type: text/csv;');
    //header('Content-Disposition: attachment; filename="Export tuto.csv"');
    //mysqli_connect("10.53.211.36","generation","steria");
    //die();
    date_default_timezone_set("Europe/Paris");
    $date = date("Y-m-d",strtotime("-1 day"))." 18:00:00";
    echo $date;
     
     
    try{
    	$PDO = new PDO('mysql:host=10.53.211.36;dbname=maincourante','generation','steria');
    	$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
    	$PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
    }catch(PDOException $e) {
     
    	echo 'Connexion impossible';
    }
    $req = $PDO->prepare("SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter BETWEEN '2016-11-24 18:00:00' AND '2016-11-25 07:00:00'");
    $req->execute(array($date));
    $data = $req->fetchAll();
    require 'class.csv.php';
    CSV::export($data,'Export tuto');
    ?>


    Ensuite j'ai un autre code class.csv.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
    <?php
    class CSV{
     
    	static function export($datas,$filename){
    		header('Content-Type: text/csv;');
    		header('Content-Disposition: attachment; filename="'.$filename.'.csv"');
    		$i = 0;
    		foreach($datas as $v){
    			if($i==0) {
    				echo '"'.implode('";"',array_keys($v)).'"'."\n";
     
    			}
     
    				echo '"'.implode('";"',$v).'"'."\n";
    				$i++;
    			}
    		}
    	}
     
     
    ?>

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Pour debugger on regarde aussi le contenu des variables, le code ne suffit pas toujours, et le "normalement" est toujours à vérifier.
    Christophe

    Pensez à mettre quand c'est le cas.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé de débugger mais je vois pas du tout où est mon erreur

  16. #16
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $PDO->prepare("SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter BETWEEN '2016-11-24 18:00:00' AND '2016-11-25 07:00:00'");
    $req->execute(array($date));
    Là tu donnes une valeur de paramètres à l'exécution alors qu'il n'y a aucun paramètre dans la requête. je ne suis pas sûre que ça soit une bonne idée...

    Donc soit tu prends une syntaxe comme la mienne (avec des paramètres dans la requête et des valeurs passées à l'exécution), soit tu gardes ta requête et tu ne passes aucun paramètre à l'exécution.

    Pour débugguer, je te conseille de désactiver la génération du fichier jusqu'à ce que tu arrives à afficher tes données correcte dans ta page. Tu peux faire ça en commentant les deux headers dans ta fonction export.
    Sinon, tous les messages d'erreur vont tenter de s'afficher dans ton fichier CSV et c'est très casse-pied à lire.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Donc du coup si je garde ma requête je dois sa comme ça non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $PDO->prepare("SELECT etat_fin as Statut,nomconsigne as PPE FROM main_interv WHERE date_inter BETWEEN '2016-11-24 18:00:00' AND '2016-11-25 07:00:00'");
    $req->execute();

  18. #18
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par Pierre855 Voir le message
    J'ai essayé de débugger mais je vois pas du tout où est mon erreur
    Comme je l'ai écrit précédemment, "Mon $data contient [...] normalement ma requête sql" n'est pas suffisant. Que contient-il vraiment ?
    Christophe

    Pensez à mettre quand c'est le cas.

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    J'ai trouver le problème, en fait la date que j'avais mis dans mon where n'existait pas du il me renvoyait rien .

    Merci pour votre aide

    Sauf que maintenant que je sais que ma requête fonctionne , moi je voudrais pouvoir exécuter ma requête chaque jour par rapport à la date du jour de la veille donc je ne pourrais plus mettre en "dur" la date dans where , et c'est la qu'interviens cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    date_default_timezone_set("Europe/Paris");
    $date = date("Y-m-d",strtotime("-1 day"))." 18:00:00";
    echo $date;

    Mais du coup je sais pas comment faire après ... est ce que je dois faire un boucle while ?

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Bonjour ,

    Quelqu'un à une solution pour mon problème de date ?

    Merci d'avance pour vos conseils

Discussions similaires

  1. exporter des données vers excel
    Par joe370 dans le forum VBA Access
    Réponses: 6
    Dernier message: 28/06/2007, 13h16
  2. [Tableaux] Exporter des données vers Excel
    Par SkyBack dans le forum Langage
    Réponses: 4
    Dernier message: 29/01/2007, 16h55
  3. exporter des données vers Excel
    Par vautour29 dans le forum Access
    Réponses: 10
    Dernier message: 12/12/2006, 17h15
  4. [En cours]Exporter des données vers Excel
    Par Muhad'hib dans le forum Contribuez
    Réponses: 2
    Dernier message: 12/01/2006, 14h25
  5. exporter des données vers EXCEL!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/11/2005, 15h13

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