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 } ?> />
答案 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',即如果没有选中该复选框。