[RESOLU] Export d'une table en fichier txt : affichage des colonnes et resultats

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Export d'une table en fichier txt : affichage des colonnes et resultats

Re: Export d'une table en fichier txt : affichage des colonnes et resultats

par Ryle » 19 oct. 2018, 16:34

Hello !

Tu utilises les fonctions de génération de fichier csv. Les fichiers csv sont des fichiers textes dans lesquelles les données d'un même enregistrement / une même lignée sont séparées par un caractère (généralement un ";") et les enregistrements sont quant à eux séparés par un retour à la ligne.

Si tu veux maîtriser pleinement la génération de ton fichier et choisir si tu mets des retours à la ligne pour windows (\r\n), pour linux (\n), pour un affichage web (<br>) tu peux utiliser la fonction fwrite() et insérer dans le fichier chaque valeur séparée par ce qui te convient le mieux :)

Re: Export d'une table en fichier txt : affichage des colonnes et resultats

par olill » 19 oct. 2018, 09:21

Apparemment pas faisable dans un fichier txt.. les retours a la ligne sont indiqués <br> ou \n\r.
Je les afficherai dans un premier temps en "textarea' qu'ils copieront dans un fichier txt

Re: Export d'une table en fichier txt : affichage des colonnes et resultats

par olill » 17 oct. 2018, 22:34

Merci mais je n'y ai pas trouvé un exemple qui fonctionne..

Explication ; Le fichier doit contenir chaque donnée (des chiffres) sur une ligne pour être exploité ensuite par un programme.
ex :
0
20
15
10
3
....

Re: Export d'une table en fichier txt : affichage des colonnes et resultats

par or 1 » 17 oct. 2018, 20:44

http://php.net/manual/fr/function.fputcsv.php
il y a donc la possibilité de changer le delimiter de ',' à ''.
ne pas mettre d'espace n'a du sens que si les données sont bien toutes sur 2 caractères, sinon, ce sera complétement inexploitable.

Export d'une table en fichier txt : affichage des colonnes et resultats

par olill » 17 oct. 2018, 20:31

Bonjour,

Grâce à ce code ci-dessous, je peux exporter un résultat de requête sur une base (en local pour le moment) dans un fichier texte, mais le souci est qu'il est présenté avec les noms des colonnes sur une ligne suivi des résultats , sans retour entre chaque donnée.
/* Attempt MySQL server connection. */  
$connection = mysqli_connect($database_server, $database_username, $database_password, $database_name);

// Check connection
if($connection === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

$query = "SELECT deg_0,deg_1,deg_2,deg_3,deg_4,deg_5,deg_6,deg_7,deg_8,deg_9,deg_10 FROM degree WHERE id = 1";
$result = mysqli_query($connection, $query);

$number_of_fields = mysqli_num_fields($result);
$headers = array();
for ($i = 0; $i < $number_of_fields; $i++) {
    $headers[] = mysqli_field_name($result , $i);
}
$fp = fopen('php://output', 'w');
if ($fp && $result) {
    header('Content-Type: text/txt');
    header('Content-Disposition: attachment; filename="export.txt"');
    header('Pragma: no-cache');
    header('Expires: 0');
    fputcsv($fp, $headers);
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
        fputcsv($fp, array_values($row));
    }
    die;
}

function mysqli_field_name($result, $field_offset)
{
    $properties = mysqli_fetch_field_direct($result, $field_offset);
    return is_object($properties) ? $properties->name : null;
}
Me retourne ceci :

Code : Tout sélectionner

deg_0,deg_1,deg_2,deg_3,deg_4,deg_5,deg_6,deg_7,deg_8,deg_9,deg_10 20,20,20,20,19,19,19,17,17,17,17
J'ai déjà essayé plusieurs changements de variables dans ce fichier, mais impossible de mettre quoi que ce soit dans le format que je souhaite.
En fait, j'aimerais retrouver les résultats ligne par ligne, sans virgule ni espace.

Comment faire ?
Un autre script plus simple disponible ?

Merci