我有一个页面,我显示SQL结果表。 我有这样所有的选项都在默认情况下选中。 但是,当用户取消选中一些地方和提交表单时,他/她会不知道他们是什么样的过滤位置上,因为所有的复选框仍将进行检查。 我怎样才能让这个只进行了检查,该复选框保留其值在表单提交后? 谢谢
这里是我的网页至今:
<?php
$start=_GET['start'];
$end=_GET['end'];
if(empty($start)){
$start=date("Ym");
}
if(empty($end)){
$end=date("Ym");
}
$places=array();
if(!empty($_GET['cities'])){
foreach($_GET['cities'] as $loc){
array_push($places,$loc);
}
}else{
$places=('CHI','DET','LA','NYC','DALLAS','SPR','PHI');
}
?>
//html
<form method='GET'>
START:<input type='text' name='start' value= '<?$start?>'>
END: <input type='text' name='end' value='<?$end?>'>
<input type='checkbox' name='cities[]' value='CHI' checked>CHICAGO
<input type='checkbox' name='cities[]' value='DET' checked>DETROIT
<input type='checkbox' name='cities[]' value='LA' checked>LAS ANGELES
<input type='checkbox' name='cities[]' value='NYC' checked>NEW YORK
<input type='checkbox' name='cities[]' value='DALLAS' checked>DALLAS
<input type='checkbox' name='cities[]' value='SPR' checked>SPRINGFIELD
<input type='checkbox' name='cities[]' value='PHI' checked>PHILIDELPHIA
<input type='submit' value='Filter'>
</form>
<?
$SQL="SELECT NAME,
ID,
PHONE,
EMAIL,
EVENT,
LOCATION
FROM SHOPPERS
WHERE LOCATION IN ('".implode("', '", $places)."')
AND EVENT BETWEEN '{$start}' and '{$end}'
AND ID BETWEEN '25687' AND '28050'
";
//and then fetch array to print out results...
.....
?>
而不是硬编码的“选中”属性为每个的<input type="checkbox">
字段,应该使用PHP,以确定是否GET
与每个字段相关联的变量被传递给脚本。 在这种情况下,要追加checked
属性您<input>
字段。 您可以通过使用三元操作符权领域内,这样实现这一点:
<input type='checkbox' name='cities[]' value='CHI' <?= (in_array('CHI', $places)) ? 'checked' : ''; ?> >CHICAGO
<input type='checkbox' name='cities[]' value='DET' <?= (in_array('DET', $places)) ? 'checked' : ''; ?> >DETROIT
<input type='checkbox' name='cities[]' value='LA' <?= (in_array('LA', $places)) ? 'checked' : ''; ?> >LAS ANGELES
<input type='checkbox' name='cities[]' value='NYC' <?= (in_array('NYC', $places)) ? 'checked' : ''; ?> >NEW YORK
<input type='checkbox' name='cities[]' value='DALLAS' <?= (in_array('DALLAS', $places)) ? 'checked' : ''; ?> >DALLAS
<input type='checkbox' name='cities[]' value='SPR' <?= (in_array('SPR', $places)) ? 'checked' : ''; ?> >SPRINGFIELD
<input type='checkbox' name='cities[]' value='PHI' <?= (in_array('PHI', $places)) ? 'checked' : ''; ?> >PHILIDELPHIA
您可以发送该复选框在GET请求检查参数,并检查它在你的页面如
if ($_GET['param1']==1) // checked
{
?>
<input type='checkbox' name='cities[]' value='CHI' checked>CHICAGO
<?
else
?>
<input type='checkbox' name='cities[]' value='CHI' >CHICAGO
?>
<?php
$citiesGroup = array();
$citiesGroup['CHI'] = 'CHICAGO';
$citiesGroup['DET'] = 'DETROIT';
$citiesGroup['LA'] = 'LAS ANGELES';
$citiesGroup['NYC'] = 'NEW YORK';
$citiesGroup['DALLAS'] = 'DALLAS';
$citiesGroup['SPR'] = 'SPRINGFIELD';
$citiesGroup['PHI'] = 'PHILIDELPHIA';
$citiesChecked = array();
if (!empty($_GET['cities'])) {
foreach ($_GET['cities'] as $cityCode) {
$citiesChecked[] = $cityCode;
}
}
else {
foreach ($citiesGroup as $key => $value) {
$citiesChecked[] = $cityCode;
}
}
?>
<?php
foreach ($citiesGroup as $cityId => $cityName) {
$chekced = in_array($cityId, $citiesChecked) ? 'checked="checked"' : '';
?>
<input type='checkbox' name='cities[]' value='<?php echo $cityId;?>' <?php echo $chekced;?>><?php echo $cityName;?>
<?php
}
?>
获取数组和循环遍历所有checkboxed HTML。
以上是工作的代码。