【问题标题】:PHP checkbox return value (checked/not checked) and updatePHP复选框返回值(选中/未选中)并更新
【发布时间】:2018-05-08 19:27:50
【问题描述】:

我有一个提交大量复选框的表单 - 这很好用。

然后我可以打开一个表单,该表单将显示所述复选框,并将根据运行的 SQL 查询进行检查或不检查。

SQL 查询使用 echo 运行正常,但我无法让该框显示为选中状态。在此之后,我希望能够选中取消选中这些框并通过 SQL 进行更新。

<?php
    session_start();
    ini_set('display_errors', 1); error_reporting(-1);
    $data = $_GET['id'];
    require 'connect.php';
    $sql1 = "SELECT id, phone, email, pager
    FROM [dbo].[preference] WHERE id = '$data'";
    $stmt1 = sqlsrv_query($con,$sql1);
    if( $stmt === false) {
    die( print_r( sqlsrv_errors(),true));
}   
        while ($row1 = sqlsrv_fetch_array($stmt1)){
        $id = $row1['id'];
        $phone = $row1['phone'];
        $email = $row1['email'];
        $pager = $row1['pager'];
}
?>


<td><input type="checkbox" name="phone" class="check" value="1">phone</td>
<td><input type="checkbox" name="email" class="check" value="1">email</td>
<td><input type="checkbox" name="pager" class="check" value="1">pager</td>

我该如何解决这个问题?

【问题讨论】:

  • 不确定我是否遵循您的问题。您需要在基于当前值的输入上回显checked 吗?或者您不知道如何执行更新?
  • 感谢您回来。 echo 根据从 sql 返回的值检查或未检查但是需要能够在加载和更新表单时更改值。更新部分将是直截了当的。只是不确定我如何显示加载值然后能够更改它
  • while loop 中,您设置了$phone 两次。 $phone 中的第一行商店 ID 和 $phone 中的第二行商店电话。
  • 对不起,我修改了id
  • 此代码中存在 SQL 注入安全漏洞。如果您重视安全,请勿将其放在互联网上。

标签: php select checkbox sql-update


【解决方案1】:

我仍然不确定我是否理解这个问题......

您在更新后加载脚本。渲染反映了当时的当前状态。您提交到脚本,执行更新,然后重新加载...然后呈现更新的状态...

<?php
        ...
        $id = $row1['id'];
        $phone = $row1['phone'];
        $email = $row1['email'];
        $pager = $row1['pager'];
}
?>


<td><input type="checkbox" name="phone" class="check" value="1" <?= (!empty($phone)) ? 'CHECKED' : '' ?>>phone</td>
...

高级...

//pseudo code for a CRUD script...

//is this a POST?
if (isset($_POST['submit')) {
  //validate user input, never trust the user, beware SQL injection...

  //if passes validation update the values in the database

  //if not, raise error flags, re-display the form (you'll see you need to use the supplied POST data, that failed to validate, as the inputs values or you'll lose the provided input, think it will make sense when you het here...)
}

//here could be a POST or initial load... could even flow here to provide confirmation of update and show new values

//load current data from database

//render form based off vurrent values

【讨论】:

  • 没错,从先前提交的数据中加载显示它们是否在先前的表单提交中被检查然后需要能够更改。
  • 这似乎是为了获得价值谢谢。我这是可以修改的,这样如果我现在取消选中并提交它会将值设为未选中?抱歉,我不太擅长解释自己
  • 试试看...听起来有点像您对 HTTP 的性质感到困惑...无状态/有状态?我也不好解释。我会稍微扩展一下答案...
  • 只是将它用作更新它的魅力。非常感谢。 1 行代码占用了我将近 14 个小时的时间。
  • 我出错的地方是我只是试图回应 value="" 中的值并想知道我将如何获得它的当前状态。回顾它是一个业余错误哈哈再次感谢! :)
【解决方案2】:

就像在 $phone 中说的值是“已检查”

你的代码应该是

&lt;td&gt;&lt;input type="checkbox" name="phone" class="check" value="1" &lt;?php ($phone == 'checked' ? 'checked' : '') ?&gt;&gt;phone&lt;/td&gt;

【讨论】:

  • 感谢您现在就尝试。表中的值是否必须“检查”,因为我目前有 1 和 0
  • 如果您使用 1 或 0 就可以了。1 表示已检查,0 表示未检查。
猜你喜欢
  • 1970-01-01
  • 2017-12-17
  • 2012-12-13
  • 2022-11-10
  • 2020-12-19
  • 1970-01-01
  • 2018-04-05
  • 2012-05-03
  • 2015-09-14
相关资源
最近更新 更多