我正在将输入的值提交到CSV文件中,如果用户将输入留空,则尝试使它们变大,csv也将留空。我已经成功完成了input [type = text]的以下操作,但由于某些原因,textarea和复选框为空将不会跳过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都没有成功。
答案 0 :(得分:0)
提交<input type="text">
和<textarea>
时,即使它们为空,也将始终被过帐。 <input type="checkbox">
仅在选中后才会显示在帖子数据中。
对于“跳过列”的含义,我有点困惑,所以我提供了两个选项-其中一个应该是您要寻找的。 p>
以下内容将“跳过列”,因为它将仅在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[] = '';
}
}