2013-08-01 24 views
1

我使用PHP Mysql.i提交表單並將數據提取到我的page.For表格中的表格格式現在我希望用戶可以下載xls文件從該表,但我的問題是,在我的數據庫表幾個值是在ID形式我怎麼能檢索他們在XLS文件因爲在XLS文件它顯示ID的,因爲有在數據庫表中的ID我不想提交值名稱可以名稱可以不止一個。如何使用PHP和mysql在xls文件中打印值而不是id

這裏是我的下載XLS鏈接代碼:

<span style="float:right;"><a href="customer_xls.php" type="button" class="btn">Download XLS</a></span> 

這裏是customer_xls.php文件:

<?php 
    //EDIT YOUR MySQL Connection Info: 
    $DB_Server = "localhost";  //your MySQL Server 
    $DB_Username = "root";     //your MySQL User Name 
    $DB_Password = "";    //your MySQL Password 
    $DB_DBName = "xyz";    //your MySQL Database Name 
    $DB_TBLName = "customers";    //your MySQL Table Name 
    // $term = $_REQUEST['term']; 

    //$DB_TBLName, $DB_DBName, may also be commented out & passed to the browser 
    //as parameters in a query string, so that this code may be easily reused for 
    //any MySQL table or any MySQL database on your server 
    //DEFINE SQL QUERY: 
    //you can use just about ANY kind of select statement you want - 
    //edit this to suit your needs! 
    $sql = "Select * from $DB_TBLName"; 
    //die(); 
    //Optional: print out title to top of Excel or Word file with Timestamp 
    //for when file was generated: 
    //set $Use_Titel = 1 to generate title, 0 not to use title 
    $Use_Title = 1; 
    //define date for title: EDIT this to create the time-format you need 
    $now_date = date('m-d-Y H:i'); 
    //define title for .doc or .xls file: EDIT this if you want 
    $title = "Dump For Table $DB_TBLName from Database $DB_DBName on $now_date"; 

    /* 
    Leave the connection info below as it is: 
    just edit the above. 
    (Editing of code past this point recommended only for advanced users.) 
    */ 
    //create MySQL connection 
    $Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) 
     or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
    //select database 
    $Db = @mysql_select_db($DB_DBName, $Connect) 
     or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
    //execute query 
    $result = @mysql_query($sql,$Connect) 
     or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno()); 
    //if this parameter is included ($w=1), file returned will be in word format ('.doc') 
    //if parameter is not included, file returned will be in excel format ('.xls') 
    if (isset($w) && ($w==1)) 
    { 
     $file_type = "msword"; 
     $file_ending = "doc"; 
    }else { 
     $file_type = "vnd.ms-excel"; 
     $file_ending = "xls"; 
    } 
    //header info for browser: determines file type ('.doc' or '.xls') 
    header("Content-Type: application/$file_type"); 
    header("Content-Disposition: attachment; filename=$DB_TBLName.$file_ending"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    /* Start of Formatting for Word or Excel */ 
    if (isset($w) && ($w==1)) //check for $w again 
    { 
     /* FORMATTING FOR WORD DOCUMENTS ('.doc') */ 
     //create title with timestamp: 
     if ($Use_Title == 1) 
     { 
      echo("$titlenn"); 
     } 
     //define separator (defines columns in excel & tabs in word) 
     $sep = "\r"; //new line character 
     while($row = mysql_fetch_row($result)) 
     { 
      //set_time_limit(60); // HaRa 
      $schema_insert = ""; 
      for($j=0; $j<mysql_num_fields($result);$j++) 
      { 
      //define field names 
      $field_name = mysql_field_name($result,$j); 
      //will show name of fields 
      $schema_insert .= "$field_name:t"; 
       if(!isset($row[$j])) { 
        $schema_insert .= "NULL".$sep; 
        } 
       elseif ($row[$j] != "") { 
        $schema_insert .= "$row[$j]".$sep; 
        } 
       else { 
        $schema_insert .= "".$sep; 
        } 
      } 
      $schema_insert = str_replace($sep."$", "", $schema_insert); 
      $schema_insert .= "\t\n"; 
      print(trim($schema_insert)); 
      //end of each mysql row 
      //creates line to separate data from each MySQL table row 

      print "n----------------------------------------------------n"; 
     } 
    }else{ 

     /* FORMATTING FOR EXCEL DOCUMENTS ('.xls') */ 
     //create title with timestamp: 
     if ($Use_Title == 1) 
     { 
      echo("$titlen"); 
     } 
     //define separator (defines columns in excel & tabs in word) 
     $sep = "\t"; //tabbed character 
     //start of printing column names as names of MySQL fields 
     for ($i = 0; $i < mysql_num_fields($result); $i++) 
     { 
      echo mysql_field_name($result,$i) . "\t"; 
     } 
     print("\n"); 
     //end of printing column names 
     //start while loop to get data 
     while($row = mysql_fetch_row($result)) 
     { 
      //set_time_limit(60); // HaRa 
      $schema_insert = ""; 
      for($j=0; $j<mysql_num_fields($result);$j++) 
      { 
       if(!isset($row[$j])) 
        $schema_insert .= "NULL".$sep; 
       elseif ($row[$j] != "") 
        $schema_insert .= "$row[$j]".$sep; 
       else 
        $schema_insert .= "".$sep; 
      } 
      //$schema_insert = str_replace($sep."$", "", $schema_insert); 
      //following fix suggested by Josue (thanks, Josue!) 
      //this corrects output in excel when table fields contain n or r 
      //these two characters are now replaced with a space 
      //$schema_insert = preg_replace("/rn|nr|n|r/", " ", $schema_insert); 
      $schema_insert .= "\n\t"; 
      print(trim($schema_insert)); 
      print "\n\r"; 


     } 
    } 
    ?> 

回答

1

你必須使用表格加入您的基本表,其中包含的單詞表示編號保存在第一個表格中。例如:

Table A: 
id | id_user | id_city 
1 | 10  | 5 

Table B: 
id | user_name 
10 | Michael 

Table C: 
id | city_name 
5 | New York 

對於表,你應該建立這樣的查詢:

SELECT a.id, b.user_name, c.city_name FROM table_a a 
JOIN table_b b ON a.id_user = b.id JOIN 
JOIN table_c c ON a.id_city = c.id 

該查詢的結果應該是這樣的:

1 | Michael | New York 

其他方式得到相同的結果是構建子查詢(但比JOIN方法更耗時)。例如:

SELECT id, (SELECT user_name FROM table_b WHERE id = a.id_user) name, 
(SELECT city_name FROM table_c WHERE id = a.id_city) city FROM table_a a 
+0

感謝您的快速回復兄弟,但作爲美國可以使用單獨的xls.php文件下載EXL上下載XLS鏈接,用戶點擊看到IM的帶他去xls.php文件,並選擇查詢即時通訊從該特定的表中獲取數據,並在xls.php文件$結果給我們的xls文件中的值與該頁面上的選擇查詢,所以我怎麼能加入這裏? – Montiyago

+1

@Monty:只需在這裏更改您的查詢:$ sql =「Select * from $ DB_TBLName」就像我上面提到的那樣。 – b4rt3kk

+0

感謝bro.finaly在2小時後我已經完成了它。我爲你提供了寶貴的幫助。 – Montiyago

相關問題