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 :

Convertir résultat timestamp bdd avant envoi dans fichier csv


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut Convertir résultat timestamp bdd avant envoi dans fichier csv
    Bonjour,

    J'ai un script pour exporter mes résultats mysql en fichier .csv. Je ne sais pas comment convertir mon timestamp pour qu'il s'affiche au format heure minute année dans mon fichier .csv.
    Pouvez-vous m'aider ? Merci beaucoup ;-)

    Voici mon code :

    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
     
    // Connexion à la base des données  
    include('connect.php');
     
     
    //Premiere ligne = nom des champs (si on en a besoin)
    $csv_output = "email;nombre;timestamp;code_emailing";
    $csv_output .= "\n";
     
     
    if(isset($_GET['page'])){
    		$id = $_GET['page'];
     
                    $query = "SELECT tbl_emails.code_emailing,email,nombre, timestamp 
    			      FROM tbl_emails, emailing
    			      WHERE tbl_emails.code_emailing = emailing.code_emailing  AND id=$id"; 
     
            $result = mysql_query($query) or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
     
            //Boucle sur les resultats
            while($row = mysql_fetch_array($result)) {
     
                    $csv_output .= "$row[email];$row[nombre];$row[timestamp];$row[code_emailing];\n ";
            }
     
            header("Content-type: application/vnd.ms-excel");
            header("Content-disposition: attachment; filename=Expedition_". date("Ymd").".csv");
    		//header("Content-Disposition: attachment; filename=$filename"); 
            header("Content-Type: text/csv; charset=utf-8");
            print $csv_output;
            exit;
    }
     
     
    // fonction pour entourer une valeur avec des guillemets et contrer les injections sql
    // la connexion avec mysql_connect doit être faite avant d'utiliser cette fonction
    function myQuote($value) {
            return "'" . mysql_real_escape_string($value) . "'";
    }

  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
    Points : 44 155
    Points
    44 155
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Merci Sabotage pour ta réponse ;-)

    Est-ce qu'il faudrait que je m'approche de ç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
     
            //Boucle sur les resultats
            while($row = mysql_fetch_array($result)) {
    				$date = strtotime($row[timestamp]);
    				$date = date('l jS \of F Y h:i:s A');
                                    $csv_output .= "$row[email];$row[nombre];$date;$row[code_emailing];\n ";
            }
     
            header("Content-type: application/vnd.ms-excel");
            header("Content-disposition: attachment; filename=Expedition_". date("Ymd").".csv");
            header("Content-Type: text/csv; charset=utf-8");
    	print $csv_output;
            exit;
    }

  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
    Ce code ne fonctionne pas ?

    N'oublie pas les apostrophes sur les index des tes tableaux :
    Sinon si ta colonne est un DATETIME et non un TIMESTAMP, tu peux aussi utiliser les fonctions mysql de temps.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Merci pour ton aide
    Ca fonctionne très bien, j'ai fait des tests et adapté selon ce que je devais faire.
    Bonne journée

  6. #6
    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
    Ma remarque valait pour tous les index :
    Sinon
    - on ne met pas directement dans une requête des données venant de l'utilisateur
    - tu as la même chose lignes 16-17 et 25-26
    - la fonction strtotime sert à transformer une date Y-m-d en timestamp UNIX, donc ce que tu essaies de faire n'est toujours pas clair. Dans ta table, quel est le type de la colonne et que contient-il ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    A pardon, nos messages se sont croisés, je me suis rendue compte de mes erreurs, testé de nouveau mon code et ça fonctionne.

    Dans ma table, la colonne est timestamp en int, elle contient le timestamp sous cette forme 1421079806.

    Que veut-tu dire par "on ne met pas directement dans une requête des données venant de l'utilisateur" ?

    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
     
    $query = "SELECT tbl_emails.code_emailing,email,nombre,timestamp 
    				  FROM tbl_emails, emailing
    				  WHERE tbl_emails.code_emailing = emailing.code_emailing  AND id=$id"; 
     
     
            $result = mysql_query($query) or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
     
            //Boucle sur les resultats
            while($row = mysql_fetch_array($result)) {
    				$email=str_replace(' ','',$row['email']);
     
     					if  ($row['timestamp'] == 0)  
    						{ 
    							//if ($_POST['site3_concert'] == '')  				
    							$row['timestamp'] = "NULL";
    						} 
    						else { 
    				 				$date_visite = strtotime($row['timestamp']);
    								$date_visite = date("Y-m-d H:i:s", $row['timestamp']); 
    				 			  } 
     
                    $csv_output .= "$email;$row[nombre];$date_visite;$row[code_emailing]\n ";
            }
     
            header("Content-type: application/vnd.ms-excel");
            header("Content-disposition: attachment; filename=Expedition_". date("Ymd").".csv");
            header("Content-Type: text/csv; charset=utf-8");
    		print $csv_output;
            exit;
    }

Discussions similaires

  1. [IP-2007] Tester BDD avant envoi de formulaire
    Par saxophtrion dans le forum InfoPath
    Réponses: 2
    Dernier message: 24/04/2012, 10h48
  2. Script Connexion base mssql,résultat dans fichier csv
    Par guigui69 dans le forum VBScript
    Réponses: 1
    Dernier message: 09/06/2011, 18h04
  3. Réponses: 1
    Dernier message: 01/06/2006, 09h11
  4. traitement des données avant envoie dans MySQL
    Par italiasky dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 07/02/2006, 22h50
  5. Sauvegarde de données dans fichier csv
    Par issou dans le forum C
    Réponses: 1
    Dernier message: 22/12/2005, 08h36

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