Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1517 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PhP vers .Csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PhP vers .Csv

n°1574910
emploze
Posté le 14-06-2007 à 14:23:55  profilanswer
 

Bonjour,
 
Alors voila j'aimerais transporter les données de ma base oracle vers un fichier .csv !
Etant plus habitué au base de données MySQl je me demande si le code est le mem pour se genre de chose.
Neanmoins j'ai tester le code :
 
 

Code :
  1. <HTML>
  2. <HEAD>
  3. <TITLE>ora_exec</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <fieldset style="width: 600px">
  7. <legend>Date de début et date de fin</legend>
  8. <form method="post" action=''>
  9. <table width="70%" border="0" cellspacing="1" cellpadding="6">
  10.    <tr>
  11. <td>Date de début :</td>
  12. <td><input type="text" name="DD" size="25" value=<? if
  13. (isset($_POST['DD'])) echo $_POST['DD']; ?>><br></td>
  14.    </tr>
  15.    <tr>
  16. <td>Date de fin : </td>
  17. <td><input type="text" name="DF" size="25" value=<? if
  18. (isset($_POST['DF'])) echo $_POST['DF']; ?>><br></td>
  19.    </tr>
  20. </table>
  21. <center>
  22. <input type="hidden" name="far" value="1">
  23. <input type="submit" name="Submit" value="Valider">
  24. <input type="Reset" name="Reset" value="Effacer">
  25. </center>
  26. </form>
  27. </fieldset>
  28. <?
  29. if (isset($_POST['far']) && ($_POST['far']==1))
  30. {
  31. print("<h3> LISTE DES FACTURES A RECEVOIR</h3>" );
  32. //connexion  
  33. if($connection = Ora_Logon("","" )){
  34. if($cursor = ora_open($connection))
  35.     {
  36. //-------------------- REQUETE --------------------------------------------------------------------------------------------
  37. $query="select LCFO_CDCL_NUMERO,LCFO_CDFO_NUMERO,LCFO_LIGNE,FOUR_NOM,LCFO_ARTI_CODE,LCFO_DESIGNATION,LCFO_QTE_COMMANDEE_UA,to_char(LCFO_DT_DERNIERE_RECEPTION,'DD/MM/YYYY'),";
  38. $query.="LCFO_QTE_RECUE_UA,LCFO_QTE_FACTUREE_UA,LCFO_UNIT_CODE_UA,(NVL(LCFO_QTE_RECUE_UA,0)-NVL(LCFO_QTE_FACTUREE_UA,0)),";
  39. $query.="(NVL(LCFO_PRIX_UA,0)-(NVL(LCFO_PRIX_UA,0)*NVL(LCFO_TAUX_REMISE,0)/100))*(NVL(LCFO_QTE_RECUE_UA,0)-NVL(LCFO_QTE_FACTUREE_UA,0))";
  40. $query.=" from LIGNE_CDE_FOURNISSEUR,fournisseur where FOUR_CODE=LCFO_FOUR_CODE and LCFO_DT_DERNIERE_RECEPTION between to_date('".$_POST['DD']."','DD/MM/YYYY') and to_date('".$_POST['DF']."','DD/MM/YYYY')";
  41. $query.=" and lcfo_cent_code='AFF_ADC'and nvl(LCFO_QTE_commandee_UA,0) >0 and nvl(lcfo_QTE_RECUE_UA,0)>0 AND nvl(lcfo_QTE_RECUE_UA,0)<=nvl(LCFO_QTE_commandee_UA,0)";
  42. $query.= " and nvl(LCFO_QTE_facturee_UA,0)<(lcfo_QTE_RECUE_UA)*0.95";
  43. $query.="and LCFO_CDFO_NUMERO not in (select 1 from LIGNE_FACTURE_FOURNISSEUR,facture_fournisseur where  LFFO_FAFO_NUMERO=FAFO_NUMERO and FAFO_STATUT='REF'";
  44. $query.=" and FAFO_DT_RECEPTION between to_date('".$_POST['DD']."','DD/MM/YYYY') and to_date('".$_POST['DF']."','DD/MM/YYYY'))";
  45. print("<br> <br> <a style=\"font-weight: bold;\" href=\"../../index.html\">Accueil</a>" );
  46. $fichier=fopen('toto.csv','w+');
  47. fputs($fichier, $data['LCFO_CDCL_NUMERO']);
  48. fputs($fichier,'textedeuxiemeligne');
  49. fclose($fichier);
  50. ?>   
  51. <a href="toto.csv">Fichier</a>
  52. <?
  53. //------------------- PARSE ----------------------------------------------------------------------------------------------
  54.          if((Ora_Parse($cursor, $query)) >= 0)
  55.  {
  56.                    if(ora_exec($cursor))
  57.                    {
  58.                            print("<TABLE" );
  59.                              print(" BORDER=\"1\">\n" );
  60.                             while(ora_fetch($cursor))
  61.        {
  62.                                 print("<TR>\n" );
  63.                                   for($index = 0;
  64.                                          $index < ora_numcols($cursor);
  65.                                          $index++)
  66.                                          {
  67.                                              print("<TD>" );
  68.                                                        print(ora_getcolumn($cursor,$index));
  69.                                              print("</TD>\n" );
  70.                                       }
  71.                                 print("</TR>\n" );
  72.                   }
  73.                          print("</TABLE>\n" );
  74.                          print("<BR>\n" );
  75.                                  print("Rows: " );
  76.                                  print(ora_numrows($cursor));
  77.                                  print("<BR>\n" );
  78.                   }
  79.                
  80.         }  /* fin du if not ora parse */
  81.            
  82.               // Ferme le curseur Oracle  
  83.               Ora_Close($cursor);
  84.               print("Fermeture du curseur effectuee<BR>\n" );
  85.     } /* fin du if $cursor etc  */
  86.       else{
  87.         print("Le curseur n a pas pu etre ouvert!<BR>\n" );
  88.       }
  89.        // Deconnecte du serveur  
  90.       Ora_Logoff($connection);
  91.       print("Deconnexion effectuee<BR>\n" );
  92.  
  93. /* fin du if($connection   */
  94. }
  95. ?>
  96. </BODY>
  97. </HTML>


 
 

Code :
  1. $fichier=fopen('toto.csv','w+');
  2. fputs($fichier, $data['LCFO_CDCL_NUMERO']);
  3. fputs($fichier,'textedeuxiemeligne');
  4. fclose($fichier);
  5. ?>   
  6. <a href="toto.csv">Fichier</a>
  7. <?


 
j'aimerais que les données de mon select s'affiche dans mon .csv ! Comme dans un tableau en HTML...
Si certaine personne connaissent oracle...

mood
Publicité
Posté le 14-06-2007 à 14:23:55  profilanswer
 

n°1574964
rufo
Pas me confondre avec Lycos!
Posté le 14-06-2007 à 15:29:08  profilanswer
 

1) $data, il vient d'où?
2) le csv, c'est un format text où 1 ligne avec \n à la fin = 1 enregistrement (ex : 1 ligne provenant du résultat d'une requête SELECT) et où chaque champ (ie 1 des champs du résultat d'une requête SELECT) est séparé par un délimiteur (un caractère genre , ou ; voire tabulation)...
 
Donc tout ce que tu as à faire, c'est exécuter une requête SELECT, récupérer le résultat, faire une boucle sur le résultat et écrire dans un fichier chaque champ du résultat, séparé par ; et mettre \n à la fin du dernier champ. A la fin de boucle, penser à fermer le fichier puis proposer un lien permettant de la télécharger...

n°1575009
emploze
Posté le 14-06-2007 à 16:17:19  profilanswer
 

le truc c'est que dans mon ficheir excel j'obtient REssource ID#3
 

Code :
  1. if((Ora_Parse($cursor, $query)) >= 0)
  2.  {
  3.                    if(ora_exec($cursor))
  4.                    {
  5.                            print("<TABLE" );
  6.                              print(" BORDER=\"1\">\n" );
  7.                             while(ora_fetch($cursor))
  8.        {
  9.                                 print("<TR>\n" );
  10.                                   for($index = 0;
  11.                                          $index < ora_numcols($cursor);
  12.                                          $index++)
  13.                                          {
  14.                                              print("<TD>" );
  15.                                                        print(ora_getcolumn($cursor,$index));
  16.                                              print("</TD>\n" );
  17.                                       }
  18.                                 print("</TR>\n" );
  19.                   }
  20.                          print("</TABLE>\n" );
  21.                          print("<BR>\n" );
  22.                                  print("Rows: " );
  23.                                  print(ora_numrows($cursor));
  24.                                  print("<BR>\n" );
  25. $fichier=fopen('far.csv','w+');
  26. fputs($fichier, $query );
  27. fclose($fichier);
  28. ?>   
  29. <a href="far.csv">Fichier</a>
  30. <?
  31.                   }
  32.                
  33.         }  /* fin du if not ora parse */

n°1575017
rufo
Pas me confondre avec Lycos!
Posté le 14-06-2007 à 16:27:36  profilanswer
 

mais qu'est-ce que tu fais à mettre du html dans un fichier csv??? T'as compris ce que je t'ai dit précédemment?
Ex de fichier csv :

Code :
  1. ID;Nom;Prenom
  2. 1;Dupont;Henry
  3. 2;Toto;Pierre


n°1575019
emploze
Posté le 14-06-2007 à 16:31:22  profilanswer
 

Oui j'ai comprit il faut j'affiche les resultat et pour qu'il puisse etre lut il faut qu'il soit separer par ";"
 
mais a la place de $query il faut bien que je mette une variable...

n°1575024
rufo
Pas me confondre avec Lycos!
Posté le 14-06-2007 à 16:39:29  profilanswer
 

ben $query, ça contient la requête SQL à exécuter. c'est le résultat de cette requête qu'il faut "convertir" en csv via une boucle php.

n°1575292
emploze
Posté le 15-06-2007 à 09:00:54  profilanswer
 

Code :
  1. $data = array(
  2.   array(),
  3.   );
  4.  
  5. if ($f = @fopen('far.csv', 'w+')) {
  6.   foreach ($data as $ligne) {
  7.     fputs($f, $ligne);
  8.     }
  9.   fclose($f);
  10.   }
  11. else {
  12.   echo "Impossible d'acc&eacute;der au fichier.";
  13.   }
  14. ?>   
  15. <a href="far.csv">Fichier</a>
  16. <?


 
voila j'ai fait une boucle...Mais je n'arrive pas a avoir le resultat de ma requete.:s

n°1575302
rufo
Pas me confondre avec Lycos!
Posté le 15-06-2007 à 09:36:31  profilanswer
 

franchement, t'as déjà fait du php?
le résultat de ta requête, tu l'as en utilisant ta boucle
while(ora_fetch($cursor))
{
 
}
 
et je t'ai dit de rajouter ; (ou tab ou ,) entre chaque champ et un \nà la fin de chaque tour de boucle.
 
Dans le code de ton premier message, tu fais un peu n'importe quoi : tu commence à remplir ton fichier csv avant même d'avoir exécuté ta requête :/
Rappel de l'algo donc :
1) préparation de la requête à exécuter
2) exécution de la requête
3) si elle a pas planté et qu'elle ramène des résultats alors
4) création du fichier csv (vide donc)
5) récupérer les résultats de la requête via une boucle
6) écrire chaque champ d'un enregristrement dans le fichier et en concaténant ';' (sauf pour le dernier champ où faut mettre \n)
7) une fois tous les entregistrement récupérés et mis dans le ficheir csv, fermer le fichier
8) afficher un lien permettant de télécharger le fichier.

n°1575306
anapajari
s/travail/glanding on hfr/gs;
Posté le 15-06-2007 à 09:41:44  profilanswer
 

Code :
  1. $data = array(
  2.      array(),
  3.      );
  4.      ...
  5.      foreach ($data as $ligne) {
  6.        fputs($f, $ligne);
  7.        }


Il manque des bouts dans ton code non? Ou est l'execution de la requete et la récupération des résultats?
Ou alors après l'instruction if, il est temps d'apprendre le fonctionnement d'un foreach.

Spoiler :

vivement la fin du stage non?

 

edit: over burned de 5 minutes mais du coup je peux répondre à rufo:

emploze a écrit :

Je suis en 1ere année de BTS informatique, le PHP je l'est apprit c'est jsute que c'est pas trop mon kiff le developpement...


et je te conseille ses précédents topics qui valent souvent leur pesant de cacahuetes ;)


Message édité par anapajari le 15-06-2007 à 09:43:52
n°1575346
rufo
Pas me confondre avec Lycos!
Posté le 15-06-2007 à 10:24:16  profilanswer
 

il me semblait bien que son pseudo me disait qq chose...

mood
Publicité
Posté le 15-06-2007 à 10:24:16  profilanswer
 

n°1575350
emploze
Posté le 15-06-2007 à 10:29:18  profilanswer
 

Ben si tu veux mon code complet il est plus haut...
 
Ben ecoute anapajari si ca te fait chier de repondre a mes post, lit les pas c'est tout...
Moi je pose mes questions, mieu vaux les poser que de rester blocker!!!

n°1575363
rufo
Pas me confondre avec Lycos!
Posté le 15-06-2007 à 10:40:09  profilanswer
 

emploze a écrit :

Ben si tu veux mon code complet il est plus haut...
 
Ben ecoute anapajari si ca te fait chier de repondre a mes post, lit les pas c'est tout...
Moi je pose mes questions, mieu vaux les poser que de rester blocker!!!


 
si tu veux, ce qui me dérange, c'est le manque de logique dans l'ordonnancement de tes actions que tu fais dans le code de ton premier post. Je veux dire par là que c'est même pas un pb de manque de connaissance du langage, c'est vraiment un manque total de logique de l'algo. Je te l'ai donné, y'a plus qu'à, donc...

n°1575366
emploze
Posté le 15-06-2007 à 10:42:53  profilanswer
 

Tinkiete pas je sait que j'ai un probleme de logique en algo...tu ne me l'apprend pas ^^
 
Mais je vais arrivé a le faire marcher comme tout se que j'ai demander sur les autre post...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PhP vers .Csv

 

Sujets relatifs
Migration Filesearch sous VBA excel 2002 vers excel 2007Probleme affichage images avec script PHP
Exporter données vers ExcelBesoin aide en PHP,lister un fichier
[Résolu-PHP]Connaitre le numéro de jour de l'année à partir d'une dateRécupérer le S/N + le prix dans un fichier CSV
pointer une cellule exel vers une autrePointer vers une WinForm (.NET Framework 2)
Comment envoyer le résultat vers un fichier et garder à l'écran ?[PHP/MYSQL] pourquoi ce script marche pas ?
Plus de sujets relatifs à : PhP vers .Csv


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR