Exportation d'une requete vers Excel via PHP

Ish
Eléphant du PHP | 200 Messages

18 mai 2006, 15:26

Bon je n'arrete pas de changer de pied .... mais au moin ca me fait voir du pays du php !!!

je suis revenue à la solution INTO OUTFILE ....
Est c'est vrai que c'est largement plus simple ... :lol: ..... (je sais ... :? )
j'aurais du exploiter le filon plus tôt ....

Bref ca marche inpecable quand on se donne le temps de regarder la doc ... :roll:

Mais il me reste un probleme
INTO OUTFILE "c:/harpagon/result.xls"
FIELDS TERMINATED BY ";"
LINES TERMINATED BY "\n"
Voici les conditions de mon INTO OUTFILES

Mais un probleme subsiste des plus étranges.... j'ai une requete qui me renvoie une 20aine de ligne et sur la derniere .... les premieres colonnes sont parfaitement retranscrises ... mais à partir de la 8eme et sur une 10aine de colonnes j'ai des "\n" ... puis ca redeviens normale .....
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Ish
Eléphant du PHP | 200 Messages

18 mai 2006, 15:27

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

Pourkoi ???
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Ish
Eléphant du PHP | 200 Messages

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
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Ish
Eléphant du PHP | 200 Messages

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 ???
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Ish
Eléphant du PHP | 200 Messages

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 ....
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2006, 16:35

Dans quel cas devras tu seulement faire le select et dans quel cas devras tu faire l'export ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2006, 16:36

Est-ce que tu as essayé d'exécuter la requete directement dans PHPMyAdmin ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Ish
Eléphant du PHP | 200 Messages

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
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Ish
Eléphant du PHP | 200 Messages

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 ....
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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()):
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Ish
Eléphant du PHP | 200 Messages

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"
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Ish
Eléphant du PHP | 200 Messages

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à ???
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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" ... ';
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer