我目前有一个HTML脚本,它执行以下操作:
有一个下拉菜单,选项为1 - 4之间的数字。
当选择一个值时,相应数量的文本框“出现”在下拉菜单下。然后,用户可以将值输入到文本框中。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#elementreg").on("change", function() {
var val = $(this).val();
$('.types').hide(); //hide all
$(`#${val}`).show(); //show by matching the selected value
});
});
</script>
<label for="How Many Chips">How Many Chips?:</label>
<select class="medium" id="elementreg" name="amount">
<option value="" selected="selected"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div class="types" id="1">
<input name="First Chip ID">
</div>
<div class="types" id="2">
<input name="First Chip ID">
<input name="Second Chip ID">
</div>
<div class="types" id="3">
<input name="First Chip ID">
<input name="Second Chip ID">
<input name="Third Chip ID">
</div>
<div class="types" id="4">
<input name="First Chip ID">
<input name="Second Chip ID">
<input name="Third Chip ID">
<input name="Fourth Chip ID">
</div>
字符串
这部分代码按预期工作,至少在视觉上是这样。
使用php,我想抓住每个非空输入,将其设置为一个变量,并将包含非空芯片ID的字符串写入文本文件。为了实现这一点,我写了以下代码:
<?php>
//Get the value of the First Chip ID, Second Chip ID, Third Chip ID,
//and Fourth Chip ID inputs
$FirstChipID = "";
$SecondChipID = "";
$ThirdChipID = "";
$FourthChipID = "";
if (!empty($_POST["First Chip ID"])) {
$FirstChipID = $_POST["First Chip ID"] . ", ";
}
if (!empty($_POST["Second Chip ID"])) {
$SecondChipID = $_POST["Second Chip ID"] . ", ";;
}
if (!empty($_POST["Third Chip ID"])) {
$ThirdChipID = $_POST["Third Chip ID"] . ", ";;
}
if (!empty($_POST["Fourth Chip ID"])) {
$FourthChipID = $_POST["Fourth Chip ID"] . ", ";;
}
$file = fopen("chipID.txt", "a");
fwrite($file, $FirstChipID . $SecondChipID . $ThirdChipID .
$FourthChipID . $Comments . $photo . "\n");
fclose($file);
?>
型
但是,当运行代码时,文件显示为空。我是否每次都将芯片ID的值覆盖为空?还是我的逻辑有问题?它是在php部分还是html部分?
任何和所有的指导是非常赞赏。
1条答案
按热度按时间t3psigkw1#
目前尚不清楚如何(甚至“如果”)您的
form
(?)或一系列表单元素被提交到PHP脚本。但是,您发布的代码中有几个缺陷:1.您的
name
属性包含 * 空格 。虽然这在HTML中是“允许的”,但当PHP收到请求时, 空格 * 在$_POST
超全局中被转换为下划线。因此,您需要读取$_POST["First_Chip_ID"]
。建议避免在name
属性中使用空格。1.您在HTML中有多个
input
元素示例,它们具有相同的name
。例如,您有四个<input name="First Chip ID">
元素。除非你有一些(“黑客”)JavaScript只提取你感兴趣的值(为了构造POST请求),否则普通的form
提交只会POST每个表单元素的最后一个示例--它可能不是你感兴趣的(当前)值。您应该确保每个命名的
input
元素只有一个示例。然后,您需要更改脚本,以便仅隐藏/显示相同的input
元素。也许可以同时在“hidden”元素上切换readonly
属性(和/或清除值),尽管您应该检查$_POST['amount']
值以确定在PHP脚本中检查哪些字段。