【问题标题】:Change input radio value in multiple row update form以多行更新形式更改输入单选值
【发布时间】:2021-09-08 11:04:02
【问题描述】:

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

以下是截图:

  1. 如何检查无线电

  1. 成功消息

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

代码如下:

//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);
}

【问题讨论】:

    标签: mysql arrays for-loop foreach multiple-insert


    【解决方案1】:

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

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

        <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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      • 1970-01-01
      • 2019-01-18
      • 2014-03-17
      相关资源
      最近更新 更多