PHP多单选按钮数组



这是我的代码,我试图在数据库中添加多个项目,在这5个项目中,我的一个项目是默认的,当我选中项目3时,在数据库中,项目3的值保存为0,第一个项目的值存为1。

这是不正确的,我希望在检查项目3时比在提交表单后比在数据库中项目3保存为1时保存值0。

请任何人告诉我如何使用

<?php
if (isset($_POST['action'])) {
    $prods = count($_POST['prod']);
    for ($i = 0; $i < $prods; $i++) {
        $prod = $_POST['prod'][$i];
        $default = (!empty($_POST['is'][$i])) ? 1 : 0;
        mysql_query("INSERT INTO `items` (`prod`, `is_default`)VALUES('{$prod}', '{$default}')");
    }
}
?>
<form action="" method="post">
    <input type="hidden" name="action" value="add">
    <span>Item Name</span> <span style="padding-left:100px">Is default</span> <br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="1">Item 1<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="1">Item 2<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="1">Item 3<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="1">Item 4<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="1">Item 5<br>
    <input type="submit" value="Save">
</form>

首先,更改您的复选框value属性,如下所示:

value="0"value="1"value="2"

然后在表单处理过程中,获得$default值,如下所示:

$default = (isset($_POST['is'][0]) && $_POST['is'][0] == $i) ? 1 : 0;

所以你的代码应该是这样的:

HTML:

<form action="" method="post">
    <input type="hidden" name="action" value="add">
    <span>Item Name</span>  <span style="padding-left:100px">Is default</span>  <br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="0"> Item 1<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="1">Item 2<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="2">Item 3<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="3">Item 4<br>
    <input type="text" name="prod[]" value="">
    <input type="radio" name="is[]" value="4">Item 5<br>
    <input type="submit" value="Save">
</form>

PHP:

if(isset($_POST['action'])){
    $prods = count($_POST['prod']);
    for($i=0; $i < $prods; $i++){
        $prod = $_POST['prod'][$i];
        $default = (isset($_POST['is'][0]) && $_POST['is'][0] == $i) ? 1 : 0;
        $query = "INSERT INTO `items` (`prod`, `is_default`)VALUES('{$prod}', '{$default}')";
        if(mysql_query($query)){
            // success
        }else{
            // error
        }
    }
}

旁注:

  • 不要使用mysql_*函数,它们从PHP 5.5开始就被弃用,在PHP 7.0中被完全删除。请改用mysqlipdo。这就是为什么不应该使用mysql_*函数。

  • 您的查询容易受到SQL注入的影响。始终准备绑定执行查询,以防止任何类型的SQL注入。这就是如何防止PHP中的SQL注入。

最新更新