我是php的新手,只是尝试将我从另一个页面上的表单中获取的这两个变量附加到csv文件。
<?php
$email = $_POST['Email_Address'];
$full_name = $_POST['Full_Name'];
$entry = $full_name;
$entry .= ",";
$entry .= $email;
$file = fopen("contacts.csv","w");
fputcsv($file,explode(',',$entry));
fclose($file);
?>
此脚本确实运行并且文件已写入,但有两个问题:
它似乎会覆盖现有文件而不是追加。
点击提交将我带到一个空白页面,其中Url =此php的位置 脚本。
表单位于弹出窗口中,我只想关闭该窗口而不是将其带到其他地方。
以下是表格:
<form method="post" action="php-forms/subscribeform.php">
<input placeholder="Name" type="text" name="Full_Name" id="Full_Name" required />
<input placeholder="Email" type="email" name="Email_Address" id="Email_Address" required />
<input class="formBtn" type="submit" />
<input class="formBtn" type="reset" />
</form>
我没有看到任何错误(我启用了错误检查)。
我如何做到这一点?
答案 0 :(得分:2)
您在'w'
中使用的是'a'
而不是fopen()
,这就是您的文件始终被覆盖的原因。然后你可以使用一个数组来使用fputcsv()
而不是创建一个字符串并将其爆炸,因为如果一个字符串包含一个逗号,你将写三个值,而不是两个。
来自fopen()
文档:
<强>一个强>
仅供写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。在此模式下,fseek()无效,始终附加写入 的瓦特强>
仅供写作;将文件指针放在文件的开头,将文件截断为零长度。如果该文件不存在,请尝试创建它。
// first, check the existance of your variables:
if (isset($_POST['Email_Address']) && isset($_POST['Full_Name']))
{
$email = $_POST['Email_Address'];
$full_name = $_POST['Full_Name'];
// create an array with your values
$entry = [$full_name, $email];
// use 'a' to Append.
$file = fopen('contacts.csv', 'a');
fputcsv($file, $entry);
fclose($file);
}
// then redirect
header("Location: /");
exit;
请注意,您应该在发布之前检查发布值的内容,然后使用它们。
答案 1 :(得分:1)
1)要附加使用&#39; a&#39; flag(http://php.net/manual/en/function.fopen.php)
$file = fopen("contacts.csv","a");
2)Yout在提交后被重定向到空白页面,因为当你发布到该URL时,你执行php文件中的逻辑。由于它可能不会输出任何HTML,因此它是一个空白页面。为此,您可以使用javascript异步发布。看这里jQuery AJAX submit form