【问题标题】:Update database with checkbox values retrieved from database使用从数据库中检索到的复选框值更新数据库
【发布时间】:2018-11-12 11:25:06
【问题描述】:

我想更新有关复选框状态或值的数据库表。 下面我从数据库中检索复选框状态。

当用户访问此页面时,会看到复选框的当前状态。

HTML

<form name="financial_checks" method="post" action="cbchange.php" />
   <input name="provision" type="checkbox" <?php if ($podata_provision == '1') echo "checked='checked'"; ?>/>
   <input name="invoice" type="checkbox" <?php if ($podata_invoice == '1') echo "checked='checked'"; ?>/>
   <input name="payment" type="checkbox" <?php if ($podata_payment == '1') echo "checked='checked'"; ?>/>
   <button type="submit" name="updatebtn" id="btn" class="btn btn-info">Update</button>
</form>

我想在用户更改复选框状态时更新表而不刷新,所以我使用 Ajax 来发布数据;

    $.ajax( {
        type: 'POST',
        url: 'cbchange.php',
        data: { provision:provision, invoice:invoice, payment:payment, sendtoken:sendtoken2},


    } );

(sendtoken是HTML页面中检索到的变量,我也发不了)

cbchange.php

$provision = $_POST['provision'];
$invoice = $_POST['invoice'];
$payment = $_POST['payment'];
$sendtoken = $_POST['sendtoken2'];


$query = " UPDATE podata SET provision = '".$provision."', invoice = '".$invoice."',payment = '".$payment."' WHERE token2 = '".$sendtoken."'";
$result = mysqli_query($connect, $query);

当我 var_dump($_POST) 结果与复选框选中或未选中的状态有关。

array (size=3)
'provision' => string 'on' (length=2)
'invoice' => string 'on' (length=2)
'updatebtn' => string '' (length=0)

当用户更改复选框状态时,如何将数据发布为 1 或 0?

【问题讨论】:

  • 请说明您如何定义使用的 javascript 变量
  • 检查php中的每个值并将'on'更改为1并将空字符串更改为零也相当简单
  • @charlietfl 我没有定义任何变量,数据不是按复选框名称提取的吗?
  • 嗯?? provisioninvoicepayment 是什么?这些是变量
  • 对不起,我弄错了,以为您指的是任何其他 Javascript 变量。它们从 SQL 查询中获取并分配给它们的变量。从数据库中检索到的当前数据。

标签: php jquery ajax


【解决方案1】:

可以设置输入的value属性。

&lt;input name="provision" type="checkbox" value="1" &lt;?php if ($podata_provision == '1') echo "checked='checked'"; ?&gt;/&gt;

因为只有在选中它时才能获取该值,但如果您希望它们为 1 或 0,则停止发布复选框值并使用 hidden 字段来保持状态并通过 Jquery 在复选框状态更改时对其进行操作事件。

看看这对你有没有帮助。

【讨论】:

  • 感谢您的更新。我添加了如下隐藏字段; id="provision"/> id="provision" style="display :none;"/> 但它仅在我将状态更改为 1 时发布。我需要发布状态,因为它会更改数据库中的数据。
  • 如果这对您有用,您能否投票并接受答案?
猜你喜欢
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 2012-07-05
  • 2014-10-20
  • 1970-01-01
相关资源
最近更新 更多