微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以多行更新形式更改输入单选值

如何解决以多行更新形式更改输入单选值

我无法在我的数据库中更改一行中的值,当我选择另一个不同于更新表单中选中的收音机时……总是返回以前的状态……我怎样才能让它工作?

以下是截图:

  1. 如何检查收音机

enter image description here

  1. 成功信息

enter image description here

但是当我刷新窗口时,选中的输入总是前一个

代码如下:

//form:

.....
    <td>
        <input type="text" value="<?PHP echo $venta; ?>" name="venta[]" id="venta_<?PHP echo $i; ?>" class="form-control" autocomplete="off" placeholder="Precio de venta" required="required"/>
    </td>
    <td>
        <input type="radio" name="principal[]" id="principal_<?PHP echo $i; ?>" <?PHP if($principal == 1){ echo 'value="0" checked="checked"';} else { echo 'value="1"';}; ?>>
    </td>
.....
</tr>

//the insert/update code:

$sql = "INSERT INTO MEDIDAS (idMed,principal,cod,presentacion,cantidad,compra,venta,id_user)
 VALUES ";
$insertQuery = array();
$insertData = array();
foreach ($_POST['venta'] as $i => $venta) {
    $insertQuery[] = '(?,?,?)';
    $insertData[] = $_POST['idMed'][$i] == '' ? null : $_POST['idMed'][$i];
    $insertData[] = $_POST['principal'][$i] == '' ? 0 : $_POST['principal'][$i]; //this is the row with the input radio
    $insertData[] = $code;
    $insertData[] = $_POST['presentacion'][$i];
    $insertData[] = $_POST['existencia1'][$i];
    $insertData[] = $_POST['compra'][$i];
    $insertData[] = $_POST['venta'][$i];
    $insertData[] = $id_user;
}
if (!empty($insertQuery)) {
    $sql .= implode(',',$insertQuery);
    $sql .= " ON DUPLICATE KEY UPDATE
    principal = VALUES (principal),cod = VALUES (cod),presentacion = VALUES (presentacion),cantidad = VALUES (cantidad),compra = VALUES (compra),venta = VALUES (venta),id_user = VALUES (id_user)
    ";
    $stmt = $conn->prepare($sql);
    $stmt->execute($insertData);
}

解决方法

只有选中的单选按钮才会发送到服务器。所以你不会得到每一行的参数,整个表单只有一个值。因此不应使用 [] 名称。

相反,给每个按钮一个带有行索引的值。

    <td>
        <input type="radio" name="principal" id="principal_<?php echo $i; ?>" value="<?php echo $i; ?>" <?php if($principal == 1){ echo 'checked="checked"';} ?>>
    </td>

然后在处理表单的循环中,您可以检查单选按钮的值是否与循环的索引匹配。

foreach ($_POST['venta'] as $i => $venta) {
    $insertQuery[] = '(?,?,?)';
    $insertData[] = $_POST['idMed'][$i] == '' ? null : $_POST['idMed'][$i];
    $insertData[] = $_POST['principal'] == $i ? 1 : 0;
    $insertData[] = $code;
    $insertData[] = $_POST['presentacion'][$i];
    $insertData[] = $_POST['existencia1'][$i];
    $insertData[] = $_POST['compra'][$i];
    $insertData[] = $_POST['venta'][$i];
    $insertData[] = $id_user;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。