插入所选复选框的隐藏字段

时间:2014-01-28 12:15:50

标签: php mysql

我有一个带复选框的表我想在数据库中插入一行的特定隐藏值,该行由用户使用checbox选择。但是,当我曾经在数据库中保存记录时。它只插入一条甚至未选中的记录,并且是该站点表格中的顶级记录。 这是我的代码

<?php 
    $i = 0;                         
    <td><?php echo $record['a'];?></td>
    <td><?php echo $record['name']; ?>
    <input type="hidden" name="name[]" value="<?php echo $record['name']; ?>"</td>
    <td><?php echo $record['contact'];?>
        <input type="hidden" name="contact[]" value="<?php echo $record['contact']; ?>"
    </td>
    <td><?php echo $record['district'];?>
        <input type="hidden" name="district[]" value="<?php echo $record['district']; ?>"
    </td>
    <td>
        <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $i++;?>" />
    </td>
<?php   }?>
    <input type="submit" value="Save" name="save" />
<?php     
    if ($_POST['save'])
    {
        foreach ($_POST['checkbox'] as $i)
        {   
            $save = "insert into tablename(id,name,contact,district) values (NULL, '{$_POST['name']'[$i]}'{$_POST['contractorname'][$i]}','{$_POST['district'][$i]}')";
            mysql_query($save) or die("Mistake in Query");
        }  
    echo "Record saved Successfully";
    }

?>    

3 个答案:

答案 0 :(得分:0)

您的输入元素周围没有foreach循环,或者至少它不在您发布的代码部分中。但是在提交按钮之前的}让我假设在代码中有一个循环开始。

您在该循环中设置$i = 0;,稍后使用echo $i++增加该复选框的值。但每次(假设)循环运行时,$i = 0;会将您的计数器重置为0。这会导致您的所有复选框都具有相同的值0。要解决此问题,请在循环开始之前设置$i = 0;

答案 1 :(得分:0)

首先,在将输入插入数据库之前,始终清理输入。否则你很容易受到SQL注入攻击。使用mysql_real_escape_string()之类的函数。另外,不推荐使用PHP中的mysql库,你应该考虑使用MySQLi或PDO:MySQL。

答案 2 :(得分:0)

你设置$ i = 0;在那个循环中所以每次循环运行时,$ i = 0;将您的计数器重置为0.这会导致所有复选框具有相同的值0.要解决此问题,请设置$ i = 0;在循环开始之前