我正在尝试获取复选框值,并在使用jquery onchange submit提交另一个时保持之前的检查。
问题是在$_GET['marca']
数组中只保留了最后一个提交。如果有人知道如何解决这个问题,我将不胜感激。
if ( isset($_GET['marca']) ) {
$_GET['marca'];
}
elseif ( empty($_GET['marca']) ) {
$_GET['marca'] = null;
}
<form method="get">
<input type="checkbox" id="amd" class="checkbox-filtro" name="marca"
value="amd">
<label for="amd">AMD</label>
<input type="checkbox" id="evga" class="checkbox-filtro" name="marca"
value="evga">
<label for="evga">EVGA</label>
<input type="checkbox" id="intel" class="checkbox-filtro" name="marca"
value="intel">
<label for="intel">Intel</label>
</form>
$('.checkbox-filtro').on('change', function() {
this.form.submit();
});
答案 0 :(得分:1)
复选框的名称应为marca[]
以用作数组(由@FunkFortyNiner指示)。
在PHP中,你可以存储一个变量以确保你有一个数组,即使没有发送任何数据。
最后,在HTML中,您可以使用in_array()
来检查值是否在您的变量中。如果是,请将属性checked
添加到您的复选框。
<?php
// Check the presence of the index in $_GET and if it is an array to avoid errors with in_array().
$marca = isset($_GET['marca']) && is_array($_GET['marca'])
? $_GET['marca'] : [];
?>
<form method="get">
<input type="checkbox" id="amd" class="checkbox-filtro" name="marca[]"
value="amd" <?php echo in_array('amd', $marca) ? 'checked' : '' ?>>
<label for="amd">AMD</label>
<input type="checkbox" id="evga" class="checkbox-filtro" name="marca[]"
value="evga" <?php echo in_array('evga', $marca) ? 'checked' : '' ?>>
<label for="evga">EVGA</label>
<input type="checkbox" id="intel" class="checkbox-filtro" name="marca[]"
value="intel" <?php echo in_array('intel', $marca) ? 'checked' : '' ?>>
<label for="intel">Intel</label>
</form>
您的原始PHP代码无效:
if ( isset($_GET['marca']) ) {
$_GET['marca']; // do nothing
}
elseif ( empty($_GET['marca']) ) {
$_GET['marca'] = null; // change "empty" to null.
}
因此,在此状态下,您无法确定$_GET['marca']
是否已定义或包含您想要的内容。