我的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" column,01 with(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;
?>
答案 0 :(得分:0)
你甚至不需要在这里使用$i
增量,因为你已经在增加的数字中存储了增加的数字。
您只需要像这样获取所选的复选框值。
foreach ($tape as $tap) {
//some variables
// I have tried this but it gives me 1 everytime.
$i = sprintf('%02d', $tap);
$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();
}
<强>被修改强>
现在,如果您仅选择了第5个复选框和第10个复选框,则第5个选中的复选框将获得磁带01和第10个选中复选框将获得磁带02.在该方案中,以下代码将非常有用
$i = 1;
foreach ($tape as $tap) {
//some variables
// I have tried this but it gives me 1 everytime.
$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++;
}
让我知道它是否适合你。
了解进一步的要求后编辑
在脚本中添加以下jquery代码
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("input[type='checkbox']").click(function(){
var cnt = Number($("#store_count").val());
var checked_index = $(this).val(); alert("checked_index:" + checked_index);
if($(this).is(":checked")){
$(this).val(cnt); $("#store_count").val(cnt + 1);
}
else{
$(this).val("");
$("input[type='checkbox']:checked").each(function(){
if( $(this).val() > checked_index ){ $(this).val(Number($(this).val()) - 1); }
});
$("#store_count").val(cnt - 1);
}
});
});
</script>
然后在HTML代码中进行以下更改,我们需要一个隐藏字段来跟踪计数器。
<?php
for ($i = 1; $i < 10; $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=""/>';
echo '</div>';
endfor;
echo '<input type="hidden" id="store_count" value="1" />';
?>
最后将数据插入数据库代码
你甚至不需要在这里使用$ i增量,因为你已经将增加的数字存储在复选框中。
您只需要像这样获取所选的复选框值。
foreach ($tape as $tap) {
//some variables
// I have tried this but it gives me 1 everytime.
$i = sprintf('%02d', $tap);
$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();
}