如何在PHP中导出动态表

时间:2016-08-04 09:41:32

标签: php mysql

我有一个网站,用户可以操作表格中的数据,无论他们在我的下拉列表中选择哪个。现在,用户可以选择导出表格中显示的数据。当用户点击导出没有任何反应时,我是PHP新手,对不起英语。

下面是我的 index.php excel.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;
  }
}?> 

INDEX.PHP中的HTML代码

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

2 个答案:

答案 0 :(得分: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 . "'";

答案 1 :(得分:1)

需要做的更改:

1) excel.php中的变化

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

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

as method="GET"

中存在<form></form>

2)不,$cmbDept出现在excel.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>

3)使用GET获取$cmbDept的值,因为<form>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>

<强> excel.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";
  }
}
?>

这些建议将解决您现有的所有问题。