[RESOLU] Mise en forme fichier CSV sur excel via PHP

Eléphanteau du PHP | 23 Messages

03 déc. 2013, 16:43

Donc j'ai bien modifier certaines info' :

<?php

$dsn = "mysql:dbname=(NomDeMaBaseDeDonnée);host=(L'IP de La base de donnée;" ; par contre je n'ai pas de port j'ai quand même demander à mon collègue il m'a répondu la même chose.

$database = new PDO( $dsn, 'root', null ); (rien toucher ici)

$fichier = "id; col1; col2 \n"; (rien toucher ici non plus)

$sql = "SELECT id, val, date FROM maTable" ; (rien toucher ici non plus)

foreach( $database-> query( $sql ) as $row ) (ici non plus)
{
$fichier .= implode( '; ', $row ).' \n' ; (ici non plus)
}

header( "Content-type: application/vnd.ms-excel" ); (ici non plus)
header( "Content-disposition: attachment; filename=(Nom de mon fichier).csv" );
print $fichier ;
exit ;

Eléphanteau du PHP | 23 Messages

03 déc. 2013, 16:47

Tu dois changer dans le script :

maBaseDeDonnees par le nom de la tienne.
dans l'objet PDO, remplacer 'root' et null par le bon login et mot de passe de la base de données.
dans la premier variable $fichier, tu dois donner les noms des différentes colonnes que tu veux récupérer dans ton fichier CSV.
changer la requête SQL dans la variable $sql en fonction de tes filtres souhaité.

Pour le reste rien ne changera.

Après si tu ne comprends pas, je te peux pas plus t'aider. Commence par le commencement pour te lancer dans la programmation PHP. Apprends ce qu'est une variable, un pointeur, une condition, une boucle, une fonction, un objet.. et tout le reste avant de ce lancer dans le développement de quelque chose ;)

Donc le port et l'ip je ne change pas ? et pour les colonnes je met en gros, à la place, les rubriques defillente ? car si c'est çà j'en ai 7 (critère)
ou bien c'est à la ligne sql

Oui t'inquiète pas ! :) j'ai des tones de bouquins à coter de moi ^^

Eléphanteau du PHP | 23 Messages

03 déc. 2013, 17:04

Donc j'ai bien fait comme tu à dit et je l'ai remplacer à la place de :
<?php

$file = 'Relevé heures intérimaires.csv';
header('Content-disposition: '.$file);
header('Content-type: application/octetstream');
header('Content-Type: text/csv');

header('Content-Disposition: attachment; filename="Relevé heures intérimaires.csv"');

readfile($file);

Mais la sa m'enmêne sur une nouvelle onglet mais c'est tout rien ne se passe.

Eléphanteau du PHP | 23 Messages

03 déc. 2013, 17:13

Donc voici ce que j'ai modifier :

<?php

<?php

$dsn = "mysql:dbname=maBaseDeDonnees;host=L'ip de la base de donée ;port=3306 (J'ai laisser avec et sans pour voir);" ;

$database = new PDO( $dsn, 'Administrateur', 'Le mot de passe' );

$fichier = "id;val;date\n"; (Là je ne sais pas trop quoi modifier, mes 7 filtres deffilent sont : Semaine/Année/Matricule/Secteur/Site/Fournisseur/Cloturer cette semaine.)

$sql = "SELECT * FROM maTable" ; La rien modifier

foreach( $database-> query( $sql ) as $row ) Non plus
{

$fichier .= implode( ';', $row )."\n" ; Non plus
}

header( "Content-type: application/vnd.ms-excel" ); Non plus
header( "Content-disposition: attachment; filename=Nom de mon fichier.csv" );
print $fichier ;
exit ;

Eléphant du PHP | 79 Messages

03 déc. 2013, 17:34

Ce qui est en rouge est a changer en fonction de tes configurations serveur et tes besoins de résultats SQL :

$dsn = "mysql:dbname=maBaseDeDonnees;host=127.0.0.1;port=3306;" ;

$database = new PDO( $dsn, 'root', 'mdp' );

$fichier = "id;col1;col2\n"; // libelle des colonnes de ton csv
$filtre = 'unFiltre' ;

$sql = "SELECT id,col1,col2 FROM maTable WHERE filtre = ?" ;
$req = $database-> prepare( $sql );
$req-> execute( array( $filtre ) );

foreach( $req-> fetchAll( PDO::FETCH_ASSOC ) as $row )
{
$fichier .= implode( ';', $row )."\n" ;
}

header( "Content-type: application/vnd.ms-excel" );
header( "Content-disposition: attachment; filename=fichier.csv" );
print $fichier ;
exit ;

Pourrais-tu indiquer quelle est ta requête SQL pour obtenir ton tableau CSV

Eléphanteau du PHP | 23 Messages

03 déc. 2013, 17:42

Tu peux détailler s'il te plais ? xD (désoler je suis pas doué)

Au passage je fait en plus des miennes tes lignes de commandes une par une et je suis plutôt bien partit je pense par contre je ne comprend pas quoi mettre précisement à la place de cette ligne :

$file = "id;val;date\n";

A la place de "id;val;date\n";

(j'ai renommer "Fichier" En "File" j'espère que çà ne change rien)

J'ai vue aussi que tu avait "éditer" plusieurs fois ton message avec les lignes de commandes que tu m'avais donné, et donc par apport a :
$sql = "SELECT id,col1,col2 FROM maTable WHERE filtre = ?" ;
$req = $database-> prepare( $sql );
$req-> execute( array( $filtre ) );

Il y'a des chose à modifier à part le "?" et : col1,col2 ? car je ne sais pas quoi mettre à la place de ceux là.

Eléphanteau du PHP | 23 Messages

03 déc. 2013, 22:12

Personne ?
Je suis toujours en galère :/

Eléphanteau du PHP | 23 Messages

04 déc. 2013, 11:10

C'EST BON !! J'avais oublier de rentrer un code dans la ligne de commande ><

Merci encore pour ton aide ORENX et xTG :) je met sujet résolue pour les gens qui auraient le même problème que moi !