我有一个网站,用户可以操作表格中的数据,无论他们在我的下拉列表中选择哪个。现在,用户可以选择导出表格中显示的数据。当用户点击导出没有任何反应时,我是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>
答案 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";
}
}
?>
这些建议将解决您现有的所有问题。