Avatar billede hoplaringen Nybegynder
19. november 2008 - 11:40 Der er 9 kommentarer og
1 løsning

Sortering af data

Hej Eksperter.

Jeg har fundet et script til at eksportere data fra mysql til et excel ark.

Opstillingen af data i arket der kommer ud er der problemer med.
Er der nogen her der kan hjælpe med at få den rigtige opsætning.
På forhånd tak

<?php
2      //EDIT YOUR MySQL Connection Info:
3      $DB_Server = "localhost";        //your MySQL Server
4      $DB_Username = "";                //your MySQL User Name
5      $DB_Password = "";                //your MySQL Password
6      $DB_DBName = "";                //your MySQL Database Name
7      $DB_TBLName = "";                //your MySQL Table Name
8      //$DB_TBLName,  $DB_DBName, may also be commented out & passed to the browser
9      //as parameters in a query string, so that this code may be easily reused for
10      //any MySQL table or any MySQL database on your server
11      //DEFINE SQL QUERY:
12      //you can use just about ANY kind of select statement you want -
13      //edit this to suit your needs!
14      $sql = "Select * from $DB_TBLName";
15      //Optional: print out title to top of Excel or Word file with Timestamp
16      //for when file was generated:
17      //set $Use_Titel = 1 to generate title, 0 not to use title
18      $Use_Title = 1;
19      //define date for title: EDIT this to create the time-format you need
20      $now_date = date('m-d-Y H:i');
21      //define title for .doc or .xls file: EDIT this if you want
22      $title = "Dump For Table $DB_TBLName from Database $DB_DBName on $now_date";
23      /*
24      Leave the connection info below as it is:
25      just edit the above.
26      (Editing of code past this point recommended only for advanced users.)
27      */
28      //create MySQL connection
29      $Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password)
30          or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
31      //select database
32      $Db = @mysql_select_db($DB_DBName, $Connect)
33          or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());
34      //execute query
35      $result = @mysql_query($sql,$Connect)
36          or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());
37      //if this parameter is included ($w=1), file returned will be in word format ('.doc')
38      //if parameter is not included, file returned will be in excel format ('.xls')
39      if (isset($w) && ($w==1))
40      {
41          $file_type = "msword";
42          $file_ending = "doc";
43      }else {
44          $file_type = "vnd.ms-excel";
45          $file_ending = "xls";
46      }
47      //header info for browser: determines file type ('.doc' or '.xls')
48      header("Content-Type: application/$file_type");
49      header("Content-Disposition: attachment; filename=database_dump.$file_ending");
50      header("Pragma: no-cache");
51      header("Expires: 0");
52      /*    Start of Formatting for Word or Excel    */
53      if (isset($w) && ($w==1)) //check for $w again
54      {
55          /*    FORMATTING FOR WORD DOCUMENTS ('.doc')  */
56          //create title with timestamp:
57          if ($Use_Title == 1)
58          {
59              echo("$titlenn");
60          }
61          //define separator (defines columns in excel & tabs in word)
62          $sep = "n"; //new line character
63          while($row = mysql_fetch_row($result))
64          {
65              //set_time_limit(60); // HaRa
66              $schema_insert = "";
67              for($j=0; $j<mysql_num_fields($result);$j++)
68              {
69              //define field names
70              $field_name = mysql_field_name($result,$j);
71              //will show name of fields
72              $schema_insert .= "$field_name:t";
73                  if(!isset($row[$j])) {
74                      $schema_insert .= "NULL".$sep;
75                      }
76                  elseif ($row[$j] != "") {
77                      $schema_insert .= "$row[$j]".$sep;
78                      }
79                  else {
80                      $schema_insert .= "".$sep;
81                      }
82              }
83              $schema_insert = str_replace($sep."$", "", $schema_insert);
84              $schema_insert .= "t";
85              print(trim($schema_insert));
86              //end of each mysql row
87              //creates line to separate data from each MySQL table row
88              print "n----------------------------------------------------n";
89          }
90      }else{
91          /*    FORMATTING FOR EXCEL DOCUMENTS ('.xls')  */
92          //create title with timestamp:
93          if ($Use_Title == 1)
94          {
95              echo("$titlen");
96          }
97          //define separator (defines columns in excel & tabs in word)
98          $sep = "t"; //tabbed character
99          //start of printing column names as names of MySQL fields
100          for ($i = 0; $i < mysql_num_fields($result); $i++)
101          {
102              echo mysql_field_name($result,$i) . "t";
103          }
104          print("n");
105          //end of printing column names
106          //start while loop to get data
107          while($row = mysql_fetch_row($result))
108          {
109              //set_time_limit(60); // HaRa
110              $schema_insert = "";
111              for($j=0; $j<mysql_num_fields($result);$j++)
112              {
113                  if(!isset($row[$j]))
114                      $schema_insert .= "NULL".$sep;
115                  elseif ($row[$j] != "")
116                      $schema_insert .= "$row[$j]".$sep;
117                  else
118                      $schema_insert .= "".$sep;
119              }
120              $schema_insert = str_replace($sep."$", "", $schema_insert);
121              //following fix suggested by Josue (thanks, Josue!)
122              //this corrects output in excel when table fields contain n or r
123              //these two characters are now replaced with a space
124              $schema_insert = preg_replace("/rn|nr|n|r/", " ", $schema_insert);
125              $schema_insert .= "t";
126              print(trim($schema_insert));
127              print "n";
128          }
129      }
130      ?>
Avatar billede jakobdo Ekspert
19. november 2008 - 12:54 #1
HVad er den rigtige opsætning ?
Avatar billede hoplaringen Nybegynder
19. november 2008 - 14:09 #2
Godt spørgsmål.
Når jeg manuelt går ind i mysql og eksportere filen kommer den ud rigtigt.
Der får hver feltnavn en kolonne, hvor under de data der høre til felt navnet kommer nedenunder i felt 2,3,4,5.....
Giver det mening?
Avatar billede jakobdo Ekspert
19. november 2008 - 15:44 #3
Det giver måske mening, men du fortælle stadig ikke hvilke data du har og hvilke du ønsker...
Avatar billede hoplaringen Nybegynder
19. november 2008 - 16:38 #4
Hej Jakobdo.

Tak for din interesse.
Jeg har dette indhold i databasen:

Id      int(11)                Nej          auto_increment 
name     varchar(200)     latin1_swedish_ci         Nej        
adress     varchar(200)     latin1_swedish_ci         Nej        
postal     varchar(8)     latin1_swedish_ci         Nej        
city     varchar(200)     latin1_swedish_ci         Nej            
country     text     latin1_swedish_ci         Nej                
phone     varchar(20)     latin1_swedish_ci         Nej        
email     varchar(200)     latin1_swedish_ci         Nej        
comment     text     latin1_swedish_ci         Nej                
mdate     date             Nej

Dem vil jeg gerne have til at stå hen af A, B, C, D..... kollonnerne.
Under dem skal indholdet så stå ned af.

Håber du kan hjælpe.
På forhånd tak.
Avatar billede jakobdo Ekspert
19. november 2008 - 20:05 #5
Og hvad giver det script ovenover af output da ?
Avatar billede hoplaringen Nybegynder
20. november 2008 - 11:33 #6
Det roder det noget rundt.
ID, name, adress... står i et felt for sig selv.
og så står inholdet af disse i noget der ligner tilfældige kolonner.
Avatar billede jakobdo Ekspert
20. november 2008 - 20:10 #7
Har du evt. et link til din side, som laver en XLS fil nu ?
Avatar billede hoplaringen Nybegynder
08. december 2008 - 16:46 #8
jeg har valgt at eksportere som et andet format.
Så jeg vil gerne have lukket her.
Hvis du mener at du skal have points jakobdo, så svar.
Ellers lukker jeg her om et par dage.
Avatar billede jakobdo Ekspert
08. december 2008 - 16:58 #9
Svar!
Avatar billede jakobdo Ekspert
12. december 2008 - 11:33 #10
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester