我有一个使用method =“POST”的搜索表单。用户还可以通过URL搜索,例如:
myurl.php?use_url = on& zipcode = London& categories = Firewood,Pellets
在我的页面顶部,我有以下代码将GET转换为POST:
$_POST['zipcode'] = addslashes($_GET['zipcode']);
$_POST['categories'] = addslashes($_GET['categories']);
$_POST['radius'] = addslashes($_GET['radius']);
我可以使用以下代码将zipcode值回显到我的文本字段中:
<input type="text" name="zipcode" value="<?php echo $_POST['zipcode']; ?>" />
我还可以使用以下代码将半径值回显到我的选择框中:
<select name="radius" id="country_id" class="chosen-radius">
<?php
$radius_array = explode(",", get_setting('radius', $db));
foreach ($radius_array AS $radius) {
?>
<option <?php if($radius == $_POST['radius']) echo 'selected="selected"'; ?> value="<?php echo $radius; ?>"><?php echo "Within " . $radius . " miles"; ?></option>
<?php
}
?>
</select>
我遇到的问题是将URL中的类别值回显到复选框中。通过POST提交表单工作正常,只是通过GET问题出现了。这是复选框的代码,你可以看到我在这里处理一个数组:
<?php
$categories_list = explode("\n", get_setting('categories', $db));
foreach($categories_list as $cat) {
$cat = trim($cat);
// We've added the next line so category choices are remembered upon submit.
if(isset($_POST['categories'])
&& in_array($cat, $_POST['categories'])) {
$select = "CHECKED";
} else {
$select = '';
}
echo "<input type=\"checkbox\" " . $select . " name=\"categories[]\" value=\"" . $cat . "\" /><label for=\"" . $cat . "\" class=\"css-label\">" . $cat . "</label><br>";
}
?>
任何善良的人都可以告诉我为什么我不能将URL中的类别值回显到“CHECKED”复选框中?