2016-08-04 44 views
0

我有一個網站,用戶可以操縱表中的數據,無論他們在我的下拉列表中選擇哪個。現在用戶可以選擇將表中顯示的數據導出。當用戶單擊導出沒有任何反應時,我是PHP新手,併爲英語感到抱歉。如何導出PHP中的動態表

下面是我的index.phpexcel.php,你能告訴我失去了什麼?

的index.php

<?php 
if (isset($_POST['search'])) { 
    $cmbDept = $_POST['cmbDept']; 
    $query = "SELECT * FROM daily_data2 WHERE Campaign LIKE '" . $cmbDept . "'"; 
    $search_result = filterTable($query); 
} else { 
    $query = "SELECT * FROM daily_data2"; 
    $search_result = filterTable($query); 
} 

function filterTable($query) { 
    $connect = mysqli_connect("localhost", "root", "", "bio_db"); 
    $filter_Result = mysqli_query($connect, $query); 
    return $filter_Result; 
} 
?> 

EXCEL.PHP

<?php 
$connect = mysqli_connect("localhost", "root", "", "bio_db"); 
$output = ''; 
if (isset($_POST["export_excel"])) { 
    $query = "SELECT * FROM daily_data2 WHERE Campaign LIKE '" . $cmbDept . "'"; 
    $result = mysqli_query($connect, $query); 
    if (mysqli_num_rows($result) > 0) { 
    $output .= ' 
     <table class="table bordered="1"> 
     <tr> 
      <th>Userid</th> 
      <th>Name</th> 
      <th>Campaign</th> 
      <th>Date</th> 
      <th>Hoursworked</th> 
      <th>Overtime</th> 
     </tr> 
     '; 
    while ($row = mysqli_fetch_array($result)) { 
     $output .= ' 
     <tr> 
      <td>' . $row["Userid"] . '</td> 
      <td>' . $row["Name"] . '</td> 
      <td>' . $row["Campaign"] . '</td> 
      <td>' . $row["Date"] . '</td> 
      <td>' . $row["Hoursworked"] . '</td> 
      <td>' . $row["Overtime"] . '</td> 
     </tr>'; 
    } 
    $output .= '</table>'; 
    header("Content-Type: application/xls"); 
    header("Content-Disposition: attachment; filename=download.xls"); 
    echo $output; 
    } 
}?> 

HTML代碼中的index.php

<html> 
<head> 
<title>Employee Logs</title> 
<style> 
     table,tr,th,td 
     { 
      border: 1px solid black; 
     } 
</style> 

</head> 
<body> 
    <h2 align="center">Time and Attendance Monitoring</h2> 

    <center> 

    <form method="GET" action="excel.php"> 

     <input type="submit" name="export_excel" class="btn btn-success" value="Export to Excel"> 
    </form> 

    <form action="index.php" method="post"> 
    <select id="cmbDept" name="cmbDept"> 
     <option value = '' selected="selected">Filter by Department</option> 
      <option value = 'TKV'>TKV</option> 
      <option value = 'NA'>NA</option> 
      <option value = 'PURE-INC'>PURE INC</option> 
      <option value = 'DUTY-FREE'>DUTY-FREE</option> 
      <option value = 'HQL'>HQL</option> 
      <option value = 'PRO-XPN'>PRO-XPN</option> 
      <option value = 'Mate1'>Mate1</option> 
      <option value = 'STUDENT-rUS'>STUDENT-rUS</option> 
      <option value = 'COLLECTIONS'>COLLECTIONS</option> 
      <option value = 'NTD'>NTD</option> 
      <option value = 'DATA RESEARCHER'>DATA RESEARCHER</option> 
      <option value = 'VA'>DATA RESEARCHER</option> 

     </select>   
     <input type="submit" name="search" value="Search"><br><br> 

    </center> 

    <table align="center" width="600" border="1" cellpadding="1" cellspacing="1"> 
     <tr> 
      <th>Userid</th> 
      <th>Name</th> 
      <th>Campaign</th> 
      <th>Date</th> 
      <th>Hoursworked</th> 
      <th>Overtime</th> 
     </tr> 

    <?php while($row = mysqli_fetch_array($search_result)):?> 
     <tr> 
      <td style="text-align:center;"><?php echo $row['Userid'];?></td> 
      <td width="200"><?php echo $row['Name'];?></td> 
      <td style="text-align:center;"><?php echo $row['Campaign'];?></td> 
      <td width="100" style="text-align:center;"><?php echo $row['Date'];?></td> 
      <td style="text-align:center;"><?php echo $row['Hoursworked'];?></td> 
      <td style="text-align:center;"><?php echo $row['Overtime'];?></td> 
     </tr> 

    <?php endwhile;?> 

     </table> 

    //<?php 
    // $cmbDept = $_GET['cmbDept']; 
// ?> 
    </form> 
</body> 

+0

$ cmbDept在excel.php中是undefined – Rijin

+0

我該如何定義它? – Seryu

回答

1

在HTML:

<form method="POST" action="excel.php"> 
    <input type="hidden" name="cmbDept" value="<?php echo isset($_POST['cmbDept']) ? $_POST['cmbDept'] : ''; ?>"> 
    <input type="submit" name="export_excel" class="btn btn-success" value="Export to Excel"> 
</form> 

Excel.php

if (isset($_POST["export_excel"])) { 
    $cmbDept = $_POST['cmbDept']; 
    $query = "SELECT * FROM daily_data2 WHERE Campaign LIKE '" . $cmbDept . "'"; 
+0

而且,你從哪裏得到這行''input type =「hidden」name =「cmbDept」value =「<?php echo isset($ _ POST ['cmbDept'])?$ _POST ['cmbDept']:'' ;?>「>'?? –

+0

他有同一個文件中的html和php代碼index.php – Rijin

+0

在export_excel中使用post方法 – Rijin

1

修改都需要務必:

1)變化excel.php

if (isset($_POST["export_excel"])) {

if (isset($_GET["export_excel"])) {

如,method="GET"存在於<form></form>

2)否,$cmbDept存在於excel.php。所以,你需要以隱藏的形式傳遞給表單。使用GET作爲<form>$cmbDept

一樣,

<form method="GET" action="excel.php"> 
    <input type="hidden" name="cmbDept" value="<?php echo isset($_POST['cmbDept']) ? $_POST['cmbDept'] : ''; ?>"> 
    <input type="submit" name="export_excel" class="btn btn-success" value="Export to Excel"> 
</form> 

3)獲取值具有method='GET'

更新的代碼

的index.php

<form method="GET" action="excel.php"> 
    <input type="hidden" name="cmbDept" value="<?php echo isset($_POST['cmbDept']) ? $_POST['cmbDept'] : ''; ?>"> 
    <input type="submit" name="export_excel" class="btn btn-success" value="Export to Excel"> 
</form> 

出類拔萃。php

<?php 
$connect = mysqli_connect("localhost", "root", "", "bio_db"); 

if (isset($_GET["export_excel"])) { 

    $cmbDept = $_GET['cmbDept']; 

    header("Content-Type: application/xls"); 
    header("Content-Disposition: attachment; filename=download.xls"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 

    $sep = "\t"; 

    $sql = "SELECT `Userid`,`Name`,`Campaign`,`Date`,`Hoursworked`,`Overtime` FROM daily_data2 WHERE Campaign LIKE '" . $cmbDept . "'"; 
    $result = mysqli_query($connect,$sql); 

    //start of printing column names as names of MySQL fields 
    while ($property = mysqli_fetch_field($result)) { 
     echo $property->name.$sep; 
    } 
    print("\n"); 
    //end of printing column names 

    //start while loop to get data 
    while($row = mysqli_fetch_array($result,MYSQLI_NUM)) 
    { 
    $schema_insert = ""; 
    for($j=0; $j<mysqli_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); 
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
    $schema_insert .= "\t"; 
    print(trim($schema_insert)); 
    print "\n"; 
    } 
} 
?> 

這些建議將解決您現有的所有問題。

+0

太棒了! – Seryu

+0

它工作與否@Seryu? –

+0

其實它不會,但你解釋得很好,你錯過了Rijin使用的method =「POST」,所以我會給他答案,謝謝你的回覆。 – Seryu