php - 如果用户输入[复选框]和文本区域为空,PHP 将 CSV 列留空
问题描述
我正在将输入的值提交到 CSV 文件中,如果用户将输入留空,则 csv 也会留下空白列。我已成功使用 input[type=text] 执行以下操作,但由于某种原因,留空的 textarea 和 checkbox 不会跳过 CSV 中的列。
$data = $_POST;
$data['Nachname'] = array_key_exists('Nachname', $_POST) ? $_POST['Nachname'] : ""; // this is a standard input[type=text]
$data['same-purchaser'] = array_key_exists('same-purchaser', $_POST) ? $_POST['same-purchaser'] : ""; // this is a checkbox
$data['Interessiert'] = array_key_exists('Interessiert', $_POST) ? $_POST['Interessiert'] : ""; // this is a textarea
$handle = fopen((__dir__)."/submissions.csv", "a+");
fputcsv($handle, $data);
fclose($handle);
// this is my html for the checkbox
<div class="col-md-12" style="padding-left: 0; text-align: left;">
<label class="wrapper">Random text
<input value="1" type="checkbox" name="same-purchaser" id="same-purchaser">
<span class="checkmark"></span>
</div>
// this is the textbox
<div class="form-row">
<textarea name="" id="Interessiert" rows="8" name="Interessiert" placeholder="Besucher interessiert sich für"></textarea>
<div class="clear"></div>
</div>
到目前为止,我尝试使用 isset 而不是 array_key_exists 没有成功。
解决方案
提交时<input type="text">
和<textarea>
,即使它们是空的,它们也将始终被发布。<input type="checkbox">
仅在选中后才会显示在发布数据中。
我对您所说的“跳过列”有点困惑,所以我提供了两个选项 - 其中一个应该是您正在寻找的。
以下将“跳过列”,因为它只会呈现 CSV 中包含数据的列(我认为这不是您想要的):
$data = [];
$fields = ['Nachname', 'same-purchaser', 'Interessiert'];
foreach ($fields as $field) {
if (isset($_POST[$field])) {
$value = trim($_POST[$field]);
if ($value !== '') {
$data[] = $value;
}
}
}
如果您希望在用户不提供的情况下将该列呈现为空字符串:
$data = [];
$fields = ['Nachname', 'same-purchaser', 'Interessiert'];
foreach ($fields as $field) {
if (isset($_POST[$field])) {
$data[] = trim($_POST[$field]);
} else {
$data[] = '';
}
}
推荐阅读
- android - 如何获取应用内购买的订阅的当前状态,即购买
- javascript - 自动关闭弹出窗口
- sockets - 什么情况下bpf_get_socket_cookie()返回0
- lua - 罗技 Lua 脚本
- python - “with”语句中的交互模式
- amazon-web-services - Codepipeline/Codebuild pipelines 在创建特定的 github 分支时可以启动吗
- angular - 动态更改设置不适用于 ng2-smart-table 中的“noDataMessage”
- java - 输入将数组从一个类打印到另一个 Java(如注册数组)
- java - 使用 java 的 Mongodb 中的实体少持久性支持
- windows - 在通过网络服务帐户运行的服务中使用特定于用户的应用程序数据