Home  >  Article  >  Backend Development  >  php 批量修改数据时 input[type=checkbox]发生的有关问题

php 批量修改数据时 input[type=checkbox]发生的有关问题

WBOY
WBOYOriginal
2016-06-13 12:11:26985browse

php 批量修改数据时 input[type=checkbox]发生的问题

本帖最后由 sky94132003 于 2014-12-07 23:45:24 编辑 input[type=checkbox] 我用了js 把 数值 'On' 转成了方便我输入数据库的  1 和 0
<br />$('input[type="checkbox"]').change(function(){<br />    this.value ^= 1;<br />});<br />


表单太复杂,就不贴上来了
反正所有栏位我也填上了 name[]

问题来了,我除了 $_POST["blank"]; 这个栏位其他都可以正常地批量更新

不是不能更新,是更新的次序有问题

以下是个详细的测试,比如页面上有5条数据可以批量修改

1.  ID1~5 设定$_POST["blank"] = 1  (打勾)
成功
2.  ID1~5 设定$_POST["blank"] = 0  (不打勾)
成功

3. 把 ID 2,3  设定$_POST["blank"] = 1

ID 1,2会变成 1  反而3没有改变

4. 再试试...  把ID 3,4,5 设定$_POST["blank"] = 1   (事先将全部设定回0)

结果不出所料,是ID 1,2,3 变成 blank = 1,而ID4 5 没有改变


理论上,PHP是知道我有多少个设定为blank = 1,但终是只把排序最前面的定设为1

感觉上是array指针不对之类的?  但这又为什么其他栏位都非常准确正常地可以更新修改?  只有这个栏不能修改?


最烦恼的是知道怎样发生错误,但一直查不出原因来



if (isset($_POST["edit_menu"])) {<br />    $gid =$_POST["gid"];<br />    $sql = "";<br />    $menuCount = count($_POST["id"]);<br /><br />    for($i=0;$i<$menuCount;$i++) {<br />        $title = $_POST["title"];<br />        $url = $_POST["url"];<br />        $id = $_POST["id"];<br />        $blank = $_POST["blank"];<br /><br />        $sql .= "UPDATE `menu` set <br />                        title='" . $title[$i] . "',<br />                        url='" . $url[$i] . "',<br />                        blank='" . $blank[$i] . "'<br />                    WHERE id='" . $id[$i] . "' AND gid = '$gid';";<br /><br />    }<br /><br />    $stmt = $pdo->exec($sql);<br /><br />}

------解决思路----------------------
没有被勾选的 checkbox 是不会被提交的!
php 只知道有多少个 checkbox 被选中,但不知道选中的是哪些
所以你需要通过指定 checkbox 的 value 来识别被选中的 checkbox,而不是让他做0、1转换 
checkbox.value 通常是备选项的序号或 id
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn