如何在php中将复选框中的值插入MySQL?

时间:2014-08-21 16:28:05

标签: javascript php html mysql

我正在关注我的sql字段

表格

`cbox1` tinyint(1) NOT NULL default '1',
`cbox2` tinyint(1) NOT NULL default '1',
`cbox3` tinyint(1) NOT NULL default '1',
`cbox3` tinyint(1) NOT NULL default '1',

的index.html

<form method="post">
<input type="hidden" name="blah" value="blah">

<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">

<button type="submit">Submit</button>
</form>

demo.php

$sql="INSERT INTO freetrail (cbox1, cbox2, cbox3,cbox4)VALUES ('$cbox1', '$cbox2', '$cbox3','$cbox4')";

我想做的是:

a)如果选中该复选框,我想用1

更新相应的字段

b)如果取消选中该复选框,我想插入0

字段

我如何实现目标

提前致谢

2 个答案:

答案 0 :(得分:0)

首先,我会改变这些

    <form method="post">
            <input type="hidden" name="blah" value="blah">

            <input type="checkbox" name="cbox[]" value="1">
            <input type="checkbox" name="cbox[]" value="1">
            <input type="checkbox" name="cbox[]" value="1">
            <input type="checkbox" name="cbox[]" value="1">
            <input type="checkbox" name="cbox[]" value="1">

            <button type="submit">Submit</button>
    </form>

由于您无法告诉severside当前检查哪一个,如果只检查其中一个,则会在$ _POST

中得到类似的内容
  array(
       'blah' => 'blah', //your hidden field
       'cbox' => array(
            0 => 1
        )
  );

如果检查2

   array(
       'blah' => 'blah', //your hidden field
       'cbox' => array(
            0 => 1
            1 => 1
        )
  );

但问题是哪2?因此,您需要更改这些名称或值

        <input type="checkbox" name="cbox[]" value="1">
        <input type="checkbox" name="cbox[]" value="2">
        <input type="checkbox" name="cbox[]" value="3">
        <input type="checkbox" name="cbox[]" value="4">
        <input type="checkbox" name="cbox[]" value="5">

OR

        <input type="checkbox" name="cbox1" value="1">
        <input type="checkbox" name="cbox2" value="1">
        <input type="checkbox" name="cbox3" value="1">
        <input type="checkbox" name="cbox4" value="1">
        <input type="checkbox" name="cbox5" value="1">

或者如果你想进一步复杂化的话

        <input type="checkbox" name="cbox[cbox1]" value="1">
        <input type="checkbox" name="cbox[cbox2]" value="1">
        <input type="checkbox" name="cbox[cbox3]" value="1">
        <input type="checkbox" name="cbox[cbox4]" value="1">
        <input type="checkbox" name="cbox[cbox5]" value="1">

根据您选择的内容,您需要检查是否已设置,如果未选中该复选框,则不会将其发送到服务器。根据您的姓名或价值观,有几种方法可以解决这个问题。最好的方法是使用

   $cbox1 = isset( $_POST['cbox1'] ) ? 1 : 0; //if you rename them
   ///or -- ( or something similar for each if you change the value )
   if( in_array( 1, $_POST['cbox'] )){
       $cbox1 = 1
   }else{
       $cbox1 = 0;
   }

现在选择哪一个应该取决于复选框的数量是已知的,固定的数字还是动态的。如果它是一个固定的数字,我会更改名称(第二个选项),因为它更干净,并且更容易处理服务器端。

答案 1 :(得分:0)

如果HTML组件处于这些安排中

<input type="checkbox" name="chkBx1" value="1">
<input type="checkbox" name="chkBx2" value="2">

在demo.php中

function checkStatus($elementID) {
    if (array_key_exists($elementID, $_POST)) {
        $status = 1;
    } else {
        $status = 0;
    }
    return $status;
 }


 sql="INSERT INTO freetrail (cbox1, cbox2, cbox3,cbox4)VALUES ($this->chkEditStatus('chkBx1'),($this->chkEditStatus('chkBx1'), ($this->chkEditStatus('chkBx2'), ($this->chkEditStatus('chkBx3'),($this->chkEditStatus('chkBx4'))";