如何仅在选中相应复选框的文本框中插入值?

时间:2015-05-11 21:37:12

标签: php html mysql

在我的程序中,我有4个对应于4个文本字段的复选框。 PHP脚本应仅在选中复选框的位置将值插入到我的数据库中。不幸的是,只有选中所有复选框时,它才能正常工作。这是为什么?

这是testchk.html

<html>
<head>
<title>testchk</title>
</head>
<body bgcolor="pink">
<h3> choice item</h3>
<form action="testchk.php" method="post">
    <input type="checkbox" name="chk1[]" value="vegetables">vegetables
    <input type="text" name="temperature[]"><br />
    <input type="checkbox" name="chk1[]" value="frozen">frozen products
    <input type="text" name="temperature[]"><br />
    <input type="checkbox" name="chk1[]" value="dried">dried goods
    <input type="text" name="temperature[]"><br />
    <input type="checkbox" name="chk1[]" value="cooling">
    <input type="text" name="temperature[]"><br />
    <br>
    <input type="submit" name="submit" value="submit">
    </form>
</body>
</html>

这是testchk.php

include ("db.php");

$checkbox1 = $_POST['chk1'];
$temperature = $_POST['temperature'];
if ($_POST["submit"]=="submit") {
    for ($i=0; $i<sizeof($checkbox1); $i++) {
        $sql="INSERT INTO test (Name, temp) VALUES ('".$checkbox1[$i]."', '".$temperature[$i]."' )";  
        mysql_query($sql) or die(mysql_error());

    }
    echo "insert";
}

1 个答案:

答案 0 :(得分:0)

这是因为复选框和文本输入的处理方式不同。只有您选中的复选框才会随表单一起提交,但无论您是否输入了任何内容,都会提交所有文本输入。使用[]命名输入时,PHP将为这些数组生成数字索引。这意味着如果不选中所有复选框,则复选框的索引号将与文本输入的索引号不匹配。您可以通过在HTML中明确定义索引号来解决此问题:

<input type="checkbox" name="chk1[0]" value="vegetables">vegetables
<input type="text" name="temperature[0]"><br>
<input type="checkbox" name="chk1[1]" value="frozen">frozen products
<input type="text" name="temperature[1]"><br>
<input type="checkbox" name="chk1[2]" value="dried">dried goods
<input type="text" name="temperature[2]"><br>
<input type="checkbox" name="chk1[3]" value="cooling">
<input type="text" name="temperature[3]"><br>

然后你可以使用foreach来处理选中复选框的那些。

foreach($checkbox1 as $index => $column_name) {
    // Do your query using $temperature[$index];
}