2013-08-01 1 views
1

PHP Mysql.i를 사용하여 양식을 제출하고 내 페이지의 표 형식으로 데이터를 가져옵니다. 지금 사용자가 xls을 다운로드 할 수 있기를 바랍니다. 해당 테이블에서 파일을하지만 내 문제는 내 데이터베이스 테이블에있는 몇 가지 값을 ID 폼에 있습니다. xls 파일에서 xls 파일을 검색 할 수있는 방법은 해당 ID를 보여주는 ID가있는 데이터베이스의 table.i에있는 값을 제출하고 싶지 않아요. 이름 coz 이름은 하나 이상일 수있다. 여기 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

의 단어 표현이 포함 첫 번째 테이블에 ID가 저장되었습니다. 예 :

1 | Michael | 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 

결과 :이 같은 쿼리를 작성해야하는 테이블의

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 

하위 쿼리를 작성합니다 (그러나 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 
빠른 응답 형제뿐만 유 다운로드 XLS 링크 및의 사용자 클릭으로 EXL를 다운로드 별도 xls.php 파일을 사용하여 메신저를 볼 수
+0

감사의 파일 선택에서를 xls.php 그를 받아 쿼리 인스턴트 메신저 그 특정 테이블에서 데이터를 가져 와서 xls.php 파일에서 $ result 우리에게 xls 파일에 그 페이지에서 선택 쿼리와 값을 제공 그래서 내가 어떻게 여기에 가입 할 수 있습니까 ?? – Montiyago

+1

@Monty : 위에서 언급 한 것처럼 $ sql = "Select * from $ DB_TBLName"으로 쿼리를 변경하십시오. – b4rt3kk

+0

2 시간 후에 bro.finaly에게 감사드립니다. 나는 귀중한 도움을 위해 그것을 해주었습니다. – Montiyago