根据是否选中复选框数据,将复选框数据插入数据库

时间:2012-03-16 20:45:43

标签: php

HTML:

<form action="add.php" method="get" id="form">
  <tr>
    <td>SALE ITEM</td>
    <td>
      <input type="checkbox" name="saleItem" value="n" <?php if(isset($_GET['saleItem'])) { ?> checked="checked" value="y" <?php } ?> />
    </td>
  </tr>
</form>

PHP(add.php)

$sql=("INSERT INTO table (sale) VALUES ('" . $_GET['saleItem'] . "')");
if (!(mysql_query($sql))) { die ("could not query: " . mysql_error()); }

无论是否选中,它总是插入N.如果根据复选框被选中插入y,我会很高兴。我也尝试将值=“n”放入if之后的else中,但它总是把N放在一边(我删除了之前的if =“n”,如果我这样做的话),这就是我的意思:

<input type="checkbox" name="saleItem" <?php if(isset($_GET['saleItem'])) { ?> checked="checked" value="y" <?php } else { ?> value="n" <?php } ?> />

2 个答案:

答案 0 :(得分:2)

您可以将html更改为:

<input type="checkbox" name="saleItem" value="1" <?php echo (isset($_GET['saleItem']) ? 'checked="checked"' : '')?> />

然后将PHP更改为:

$is_checked = (isset($_GET['saleItem']) ? 'y' : 'n');

然后您的SQL语句应如下所示:

$sql=("INSERT INTO table (sale) VALUES ('" . $is_checked . "')"); 

如果在提交表单时未选中复选框,则浏览器不会将其值发送到服务器。因此,将其值更改为1,然后检查服务器端是否存在,是确定复选框状态的最佳方法。

答案 1 :(得分:1)

复选框只能有一个值。您尝试根据是否已选中更改value属性将无效。

这是您的复选框的更新HTML:

<input type="checkbox" name="saleItem" value="Y" <?php if( isset( $_GET['saleItem'] ) ){ ?> checked="checked" <?php } ?> />

如果选中它,它将向服务器返回“Y”,但如果未选中则不会返回(这是checkbox元素设计工作的方式)。因此,您需要明确检查PHP代码以查看是否返回了任何内容:

$saleItemValue = "N";
if( array_key_exists( 'saleItem', $_GET ) && $_GET['saleItem'] == 'Y' ){
    $saleItemValue = "Y";
}

$sql = "INSERT INTO table (sale) VALUES ( '$saleItemValue' )";
if( !mysql_query($sql) ){
    die( "could not query: " . mysql_error() );
}

这样,如果没有任何内容返回,PHP将在数据库中放置一个'N',即如果没有选中该复选框。