我试图让我的网页上显示的mysql数据库在点击按钮时导出到csv,但是它没有按预期运行。我试图在单击导出按钮时执行以下操作,但是当您单击“导出CSV”按钮时,它将转到“url / export.php”页面,并显示“错误页面不存在的网页”
导出按钮定义:
<div class="topnav">
<form method="post" action="export.php">
<input type="submit" name="export" value="CSV Export" class="btn btn-i"
<a class="active" href="#export">Export to CSV</a>
</form>
<div class="search-container">
<form action="/action_page.php">
<input type="text" placeholder="Search.." name="search">
<button type="submit"><i class="fa fa-search"></i></button>
</form>
</div>
</div>
export.php代码:
<?php
//export.php
if(isset($_POST["export"])) {
$connect = mysqli_connect("localhost", "root", "password", "dbName");
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen("php://output", "w");
fputcsv($output, array('Username', 'Password', 'PhysicianID'));
$query = "SELECT * FROM Users";
$result = mysql_query($connect, $query);
while($row = mysqli_fetch_assoc($result)) {
fputcsv($output, $row);
}
fclose($output);
}
?>
答案 0 :(得分:1)
您从根本上误解了服务器端和客户端代码的交互方式。
PHP脚本只输出它遇到的所有内容,直到遇到PHP开始标记(<?php
)。然后代码被解释为PHP。处理完成后,可能会产生更多输出。在关闭PHP标记(?>
)之后,事情再次输出(受流控制结构等)。
PHP不知道Javascript是什么,反之亦然。
您的PHP脚本在请求页面时运行。它输出一个HTML <script>
标签和一些Javascript。在生成此HTML的同时,<?php
分隔符中的所有代码都在服务器上运行。不在点击事件上 - 就在生成页面时。
如果您希望服务器端代码运行以响应客户端事件,则需要向服务器端脚本发出请求(通过Javascript或通过新页面提取)。该脚本是此数据库访问代码的位置。
例如,该按钮可能位于HTML页面上,如下所示:
<form action="get-csv.php" method="POST">
<button class="active">Export to CSV</button>
</form>
这可以在纯HTML页面上,也可以由另一个PHP脚本输出。
现在将您的代码放在get-csv.php
中的数据库中导出数据。