【发布时间】:2016-07-25 21:53:10
【问题描述】:
我的 HTML 页面中有一些复选框。例如,当用户选择六个复选框时,我想将其保存到数据库中,例如第一个复选框为 1,第二个复选框为 2....,最后一个复选框为 6:
foreach ($tape as $tap) {
//some variables
// I have tried this but it gives me 1 everytime.
$i = 1;
$i = sprintf('%02d', $i);
$array = array($the_date, $i);
$ref = implode(".Tape.", $array); // for 2016_73_98.Tape.01
$stmt = $pdo->prepare(
"INSERT INTO test (server, tape, 'date', reference, tape_name)
VALUES (:server, :tape, :the_date, :reference, :tape_name)"
);
$stmt->bindParam(':server', $server);
$stmt->bindParam(':tape', $tap);
$stmt->bindParam(':the_date', $the_date);
$stmt->bindParam(':reference', $my_tape);
$stmt->bindParam(':tape_name', $ref);
$result = $stmt->execute();
$i++;
}
我尝试了一个带有 $count 的 for 循环,它计算有多少已检查元素,但它为 6 个输入中的每一个插入了 6 次相同的选择。
image
我想将“tape_name”列中的 01 替换为(01 表示第一个 MA0001,02 表示 MA0002 ....)它与参考没有任何关系,它必须跟随数字选中的复选框。
<?php
for ($i = 1; $i < 101; $i++): //adjust this number to whatever number of checkboxes you want
echo '<div class="each_checkboxes">';
echo '<label for="checkbox' . $i . '">' . $i . '</label>';
echo '<input type="checkbox" name="tape[]" id="checkbox' . $i . '" value="' . $i . '"/>';
echo '</div>';
endfor;
?>
【问题讨论】:
-
你想如何将检查的值存储到表中?如果用户选择前三个复选框,那么您想将 1、2、3 存储到表中吗?像那样?或者您想插入三个不同的记录/行,每个记录/行用于选定的值?
-
所以我有那个“tape_name”,它是表单中选中的复选框,例如 X1,我有应该保存为 Tape 1/2/3 的“$ref”... /7(假设 7 是最大值)。当我选择磁带 X43、X55、X76 时,我希望它作为 X43 的磁带 01、X55 的磁带 02、X76 的磁带 03 进入数据库。清楚还是我应该更明确?基本上我想使用“计数”表示选中框的数量,然后将其存储在独立列中。 PS:我在帖子中添加了一张图片
-
你能发布你的 HTML 代码吗?
-
根据我对您的查询的了解。只需将
$i = 1;放在foreach循环之前,它就会正确递增。 -
是的,谢谢,我错过了那个,应该放在前面。但是现在我需要确保第一个选定的项目是获得磁带 01 的那个。现在不尊重选定元素的顺序......我该怎么做?