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 :

Export CSV Séparateur


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut Export CSV Séparateur
    Bonjour,
    Je souhaite faire une exportation excel des utilisateurs en fonction d'une date de debut et une date de fin.
    Je récupère bien toutes mes données, sauf que elles sont sur une seule ligne, séparées par des points virgules (que j'ai pris de soin de changer dans la fonction fputscv)
    Les données sont affichées tel ceci :


    Nom : Capture.PNG
Affichages : 460
Taille : 7,6 Ko


    Et voici le code (Qui n'est pas le miens) :

    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
    $connect =  new pdo("mysql:host=localhost;dbname=blbl;port=3306;charset=utf8" , 'blbl' , 'blbl');
     
    $start_date_error = '';
    $end_date_error = '';
     
    if(isset($_POST["export"]))
    {
     if(empty($_POST["start_date"]))
     {
      $start_date_error = '<label class="text-danger">Start Date is required</label>';
     }
     else if(empty($_POST["end_date"]))
     {
      $end_date_error = '<label class="text-danger">End Date is required</label>';
     }
     else
     {
      $file_name = 'Order Data.csv';
      header("Content-Description: File Transfer");
      header("Content-Disposition: attachment; filename=$file_name");
      header("Content-Type: application/csv;");
     
      $file = fopen('php://output', 'w');
     
      $header = array("entry_id", "genre_personne", "nom_personne", "prenom_personne", "age_personne" , "email_personne" , "adresse_personne" , "codep_personne" , "ville_personne" , "pays_personne" , "centre_emetteur" , "centre_emetteur_region" , "licence" , "vie_associative" , "type"  , "date_current");
     
      fputcsv($file, $header, ";");
     
      $query = "
      SELECT entry_id,genre_personne,nom_personne,prenom_personne,age_personne,telephone_personne,email_personne,adresse_personne,codep_personne,ville_personne,pays_personne,centre_emetteur,centre_emetteur_region,licence,vie_associative,type,date_current FROM personnes
      WHERE date_current >= '".$_POST["start_date"]."' 
      AND date_current <= '".$_POST["end_date"]."' 
      ORDER BY date_current DESC
      ";
      $statement = $connect->prepare($query);
      $statement->execute();
      $result = $statement->fetchAll();
      foreach($result as $row)
      {
       $data = array();
       $data[] = $row["entry_id"];
       $data[] = $row["genre_personne"];
       $data[] = $row["nom_personne"];
       $data[] = $row["prenom_personne"];
       $data[] = $row["age_personne"];
       $data[] = $row["email_personne"];
       $data[] = $row["adresse_personne"];
       $data[] = $row["codep_personne"];
       $data[] = $row["ville_personne"];
       $data[] = $row["pays_personne"];
       $data[] = $row["centre_emetteur"];
       $data[] = $row["centre_emetteur_region"];
       $data[] = $row["licence"];
       $data[] = $row["vie_associative"];
       $data[] = $row["type"];
       $data[] = $row["date_current"];
     
       fputcsv($file, $data, ";");
      }
      fclose($file);
      exit;
     }
    }
     
    $query = "
    SELECT entry_id,genre_personne,nom_personne,prenom_personne,age_personne,telephone_personne,email_personne,adresse_personne,codep_personne,ville_personne,pays_personne,centre_emetteur,centre_emetteur_region,licence,vie_associative,type,date_current FROM personnes
    ORDER BY date_current DESC;
    ";
     
    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    Je vous remercie de votre aide !

    EDIT : Je sais qu'il y a la solution de convertir, mais j'aimerais que ça le fasse automatiquement pour mes clients

  2. #2
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Salut,

    Le séparateur ne serait pas plutôt la virgule plutôt que le point virgule?

  3. #3
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    Déjà essayé cela ne change rien

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    si tu récupères tout sur une seule ligne, c'est que le caractère de fin de ligne n'est pas reconnu.
    essaie avec ceci avant le traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('auto_detect_line_endings', true);
    Dans ton code, tu n'as pas besoin de préparer tes requêtes dans la mesure où tu injecte les valeurs directement dans le sql.
    Par ailleurs, tu devrais vérifier que tu as bien reçu des dates valides avant de les passer au sql.

  5. #5
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Salut,
    Dans ton code, tu n'as pas besoin de préparer tes requêtes dans la mesure où tu injecte les valeurs directement dans le sql.
    Par ailleurs, tu devrais vérifier que tu as bien reçu des dates valides avant de les passer au sql.
    Merci pour les conseils ! Cela ne marche melheuresement toujours pas.

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Je pense que cela fonctionne, ouvre le csv avec notepad++ et vérifie.

Discussions similaires

  1. [AC-2013] Erreur de séparateurs lors d'export CSV
    Par ClémentJard1 dans le forum Access
    Réponses: 1
    Dernier message: 25/04/2019, 14h39
  2. [Toutes versions] Export csv ou txt avec largeur fixe et séparateur point virgule
    Par shizzle971 dans le forum Excel
    Réponses: 1
    Dernier message: 07/05/2014, 20h56
  3. [DisplayTag] Modifier le séparateur lors de l'export CSV
    Par ahlem83 dans le forum Taglibs
    Réponses: 2
    Dernier message: 21/10/2011, 16h18
  4. [E-02] Choisir le séparateur dans un export CSV
    Par Antoun dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2008, 14h32
  5. Export CSV de champs qui contiennent des ";"
    Par boteha dans le forum Outils
    Réponses: 4
    Dernier message: 19/09/2005, 19h05

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