我在创建导出到PHP中的.CSV文件的表单时遇到问题。我为HTML创建了一个小提琴:
我在PHP编码所以我无法在JSFiddle上显示完整的代码,因为它不支持PHP,但这是我的PHP代码:
<?php
if($_POST['formSubmit'] == "Submit")
{
$errorMessage = "";
if(empty($_POST['brandname']))
{
$errorMessage .= "<li>Please enter a business/brand name.</li>";
}
if(empty($_POST['firstname']))
{
$errorMessage .= "<li>Please enter your first name.</li>";
}
$varBrand = $_POST['brandname'];
$varFName = $_POST['firstname'];
$varLName = $_POST['lastname'];
$varEmail = $_POST['email'];
$varSite = $_POST['website'];
if(empty($errorMessage))
{
$fs = fopen("mydata.csv","a");
fwrite($fs,$varBrand . ", " . $varFName . ", " . $varLName . ", " . $varEmail . ", " . $varSite . "\n");
fclose($fs);
exit;
}
}
?>
当我点击提交时,它成功转到'thankyou.php'(在表单操作中设置)但我无法弄清楚为什么它没有发布正确的错误消息或填写我的'mydata.csv'文件点击后。可能是视觉语法错误?如果您需要更多信息,请告诉我,我知道这有点令人困惑,因为PHP与小提琴分开。
答案 0 :(得分:0)
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // better method to check for a POSt
... validation stuff ...
$data = array();
$data[] = $_POST['brandname'];
$data[] = $_POST['firstname'];
etc...
if (empty($errrorMessage)) {
$fs = fopen('mydata.csv', 'a') or die("Unable to open file for output");
fputcsv($fs, $data) or die("Unable to write to file");
fclose($fs);
exit();
} else {
echo $errormessage;
}
}
注意事项:
1)使用$ _SERVER ['REQUEST_METHOD']检查提交类型是绝对可靠的 - 该值始终设置,如果正在执行帖子,将始终为POST。检查特定表单字段(例如提交按钮)是hacky且不可靠的
2)使用fputcsv()写出csv文件。 PHP将为您完成所有繁重的工作,您将为函数提供一组数据来写入
3)注意or die(...)
构造,它检查打开/写入文件的失败。假设文件可用/可写是不可靠的,并且将来会在某些时候咬你。处理“外部”资源时,始终要进行错误处理。