我正在尝试接受一个表单并将其写入CSV(对于提交表单的人来说是不可见的,但我可以将其视为服务器上每个人的条目的汇编)。每当有人输入表单时,它将成为CSV上的新行。为了表明人们实际上正在提交,一个新的标签会弹出一些“谢谢”的消息和他们的提交,这样他们就能确保它们是他们的。是的,我确实有一个完美的JS表单验证,但由于这没有问题,我把它留下来以节省空间。
这是我目前的问题。在Firefox中,我只得到一个空白的新标签,而我的空白 - CSV上没有任何变化,标题为testForm.csv
。在Chrome中,会打开一个新标签,其中包含我的php文档中的所有代码,而我的CSV仍为空白。
以下是我的HTML代码段:
<html>
<body>
<form name="Involved" method="post" action="postest.php" target="_blank" onsubmit="return validateForm();">
Name: <br><input type="text" name="name" title="Your full name" style="color:#000" placeholder="Enter full name"/>
<br><br>
Email: <br><input type="text" name="email" title="Your email address" style="color:#000" placeholder="Enter email address"/>
<br><br>
How you can help: <br><textarea cols="18" rows="3" name="help" title="Service you want to provide" style="color:#000" placeholder="Please let us know of any ways you may be of assistance"></textarea>
<br><br>
<input type="submit" value="Submit" id=submitbox"/>
</form>
</body>
<html>
以下是postest.php
:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$help = $_POST['help'];
$csvData = $name . "," . $email . "," . $help . '\n';
echo "Thank you for your submission! We'll get back to you as soon as we can!";
echo "I'm " . $name . ", my email is " . $email . ", and I can help in that: \n" . $help;
$filepointer = fopen('testForm.csv','a');
if ($filepointer){
fwrite($filepointer,$csvData);
fclose($filepointer);
exit();
}
?>
我检查了this question有关回显以查看这是否是我的问题。之前我问过this question,除了显而易见的$_POSTEST
问题之外,似乎没有人发现我的代码有任何问题。 This page看起来像我的目的,但事实并非如此。 This question有什么我想要的,但实际上没有POST代码,答案是我读过的最无用的东西之一(简而言之:“就这样做。它不是'这很复杂。“还有一些其他SO问题的链接,我遵循了这些问题。”他们带我here和here。我把exit();
放在fclose()
之后,好像它似乎适用于第一个(它什么也没做)。对于第二个,用户的代码与我一直在寻找的代码相差太远,我将代码更改为他/她正在做的事情。我一直在搜索,并进行广泛的谷歌搜索,但我会在这里删除我的研究清单,因为没有人想要阅读所有内容;这只是为了证明我尝试过。
让我知道你还需要什么;我是一个完整的PHP新手,它可能是我错过的非常基本的东西。另一方面,我现在没有看到我的代码和其他代码之间存在任何重大差异。
答案 0 :(得分:0)
尝试这样的事情:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$help = $_POST['help'];
$filepointer = fopen('testForm.csv','a');
fputcsv($filepointer, array($name,$email, $help));
echo "Thank you for your submission! We'll get back to you as soon as we can!";
echo "I'm " . $name . ", my email is " . $email . ", and I can help in that: \n" . $help;
?>
答案 1 :(得分:0)
这是错误: -
---> $filepointer = fopen('testForm.csv','a');
$fp = fopen('testForm.csv','a');
if ($fp){
fwrite($fp,$csvData);
fclose($fp);
exit();
}
真正的问题是在没有
的情况下发展display_errors = On
log_errors = On
在php.ini文件中查找这些参数,并打开它们,除非您在实时服务器上进行开发,在这种情况下,您真的应该设置一个测试环境。
然后不看php错误日志
<强>更新强>
实际上只有一行可以改变,这是完整的代码。
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$help = $_POST['help'];
$csvData = $name . "," . $email . "," . $help . '\n';
echo 'Thank you for your submission! We\'ll get back to you as soon as we can!';
echo '\"I\'m \"' . $name . ", my email is " . $email . ", and I can help in that: \n" . $help;
$fp = fopen('testForm.csv','a'); // only line changed
if ($fp){
fwrite($fp,$csvData);
fclose($fp);
exit();
}
?>
答案 2 :(得分:0)
你的错误非常基本,我为你感到羞耻。您的问题显然是您没有使用过服务器,也没有在您的计算机上安装PHP软件包。当您告诉计算机target="_blank"
和method="post"
时,它知道您想要的是HTML。但是,没有任何解析PHP的东西,它不知道如何阅读你的代码,并在Firefox中作为空白页面和Chrome中的代码块出现。
你确实不知道你在做什么。