Exportation d'une requete vers Excel via PHP

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 : Exportation d'une requete vers Excel via PHP

par Ish » 19 mai 2006, 11:36

Merci merci ... j'ai trouvé la solution et ca marche ...

Juste 2-3 petites précision à propos de mon application,
Comme je l'ai dis plus haut, je ne veux pas faire cette export CSV tout le temps donc je compte faire un boutton en JavaScript pour quand je clique dessus ca me fasse l'export...

Pensez-vous qu'il faille faire ce genre de manip
$sql='SELECT ...'.$outFile.' FROM ...' ;
et de mettre $outFile vide et mettre le INTO OUTFILE quand je clique sur le boutton.

Puis, connaissais vous un bon tutaux pour comprendre les headers ... car j'ai commencer à regarder et je dois avouer que les tutaux proposés sont assez flou et n'indique pas toutes les possibilité et ce que ca veux dire (Content-type, Content-Disposition, etc ...)

par zeus » 19 mai 2006, 10:34

Est-ce que tu ne trouve pas quelquechose de choquant dans cette ligne ?

Code : Tout sélectionner

ENCLOSED BY """
Si tu entoures une chaine par des " et que tu met un " dans cette chaine, il faut que tu l'echappes ;)

Code : Tout sélectionner

ENCLOSED BY "\""
PS : au fait, le caractère d'échappement, c'est \, pas / ;)
$sql='SELECT ... 
FIELDS 
    TERMINATED BY ";" 
    ENCLOSED BY "\"" 
    ESCAPED BY "\\" 
LINES TERMINATED BY "\n" ... ';

par Ish » 19 mai 2006, 09:56

Je pense que ca viens de l'écriture de la requete ... car je mets ma requete entre ' ....
$sql='SELECT ... 
FIELDS 
    TERMINATED BY ";" 
    ENCLOSED BY """ 
    ESCAPED BY "//" 
LINES TERMINATED BY "\n" ... ';
Est-ce que ca ne pourrait pa venir de là ???

par Ish » 19 mai 2006, 09:40

Je viens de mettre une gestion d'erreur ... et voila le resultat

Code : Tout sélectionner

Erreur de syntaxe près de '//" LINES TERMINATED BY "\n" FROM note, indiv' à la ligne 32
dans le code suivant
    FIELDS
        TERMINATED BY ";"
        ENCLOSED BY """
        ESCAPED BY "//"
    LINES TERMINATED BY "\n"

par zeus » 18 mai 2006, 16:53

s'il te plait, arrête les "OK ok ok", c'est extremement stressant :?

Sinon, est-ce que tu as un système de capture des erreurs des requete dans PHP ?
un truc comme
mysql_query(...) or die(mysql_error()):

par Ish » 18 mai 2006, 16:51

OK ok ok .... ca marche dans PhpMyAdmin .... mais ca ne me dit pas pourkoi ca marche pas dans mon application !!!! :shock:

Par-contre ca m'encapsule toutes mes données entre " ....
Et j'ai toujours les " \N" ...

Les "\N" sont là à la place des "NULL" dans PhpMyadmin ....

par Ish » 18 mai 2006, 16:39

Et bien le select, je le fais tous le temps sur ma premiere page car elle me sert à afficher un tableau ... à partir de là j'ai des liens vers des popu pour faire un filtrage ... donc j'utilise cette requete SELECT tout le temps quand je suis sur ma premiere page ...

Pour le fait de l'executert dans Mysql avec les ENCLOSED et les ESCAPED ... je vais essayer

par zeus » 18 mai 2006, 16:36

Est-ce que tu as essayé d'exécuter la requete directement dans PHPMyAdmin ?

par zeus » 18 mai 2006, 16:35

Dans quel cas devras tu seulement faire le select et dans quel cas devras tu faire l'export ?

par Ish » 18 mai 2006, 16:32

Huuuummmm ya un truc qui ne marche pas là ...

Code : Tout sélectionner

INTO OUTFILE "ressource.csv" FIELDS TERMINATED BY ";" ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY "\n"
lorsque j'insere le ENCLOSED ou/et le ESCAPED ..... il n'y a plus de génération de fichier ....

par Ish » 18 mai 2006, 16:11

Ok ok merci pour le "INTIO" je l'avais vu :wink:

OK ok ok ... merci ... et une derniere question apres ca sera resolu (non sans mal de ma part)

Je vais devoir faire un boutton en JavaScript, car je ne veux pas tout le temps génerer ce fichier CSV ...

Crois tu qu'il faille faire ce genre de chose :
$sql='SELECT .... '.$exportCSV.'FROM ... ' ; 
et dès que je clique sur le boutton la valeur $exportCSV
if ( .....) {
    $exportCSV='INTO OUTFILE .... ';
} else { $exportCSV='';}
Qu'est ce que t'en penses ???

par zeus » 18 mai 2006, 16:05

Dans ce cas là, je te conseille de rajouter les clauses ENCLOSED BY et/ou ESCAPED BY pour t'assurer de bloquer le caractère NULL

Code : Tout sélectionner

INTO OUTFILE "ressource.csv" FIELDS TERMINATED BY ";" ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY "\n"
Ce bout de requete te permet une exportation au format CSV

PS : dans ta requete, il est écrit INTIO ;)

par Ish » 18 mai 2006, 15:59

Ok ok ok ok ...... voici ma requete ... il y a une 10aine de colonne ;
$query = '
SELECT DISTINCT
        note.id,
        code_adpc,
        code_opera,
        note.probabilite,
        alloue_prevu,
        date_accord_cari,
        date_demarrage,
        individu.nom,
        code_commission,
        code_sous_commission,
        mode_financement,
        lien_doc_projet,
        contrats_projet,
        code_plateforme,
        code_affaire,
        code_site,
        code_metier,
        type_projet,
        type_note,
        note.libelle,
        commentaire_note
INTIO OUTFILE "ressource.csv"
FIELDS TERMINATED BY ";"
LINES TERMINATED BY "\n"
FROM
        note, individu, sous_commission, sites_note, ressourceTest
WHERE
        note.id_individu_responsable = individu.id
AND note.code_sous_commission = sous_commission.code
AND note.id = sites_note.id_note
AND note.id = ressourceTest.id ';
Les valeurs remplacer par des "\n" sont des valeurs "NULL" ... je viens de faire la requete dans Mysql ... et ou il y a des "NULL", ya des "\n" dans mon fichier csv

par zeus » 18 mai 2006, 15:45

Quelles sont les valeurs qui sont remplacée par des \n

Depuis tout a l'heure, je te demande des exemples que tu ne me donnes pas :evil:

Si tu veux de l'aide, il va falloir que tu me laisse t'aider ...

Donnes moi une des lignes qui est fausse

par Ish » 18 mai 2006, 15:27

En fait je pense qu'il me remplace certaine case ... par des "\n" ...

Pourkoi ???