我有一个表单,该表单通过checkbox.php运行,并将复选框内嵌到字符串中并通过URL返回。
表格在这里:
<form action="checkbox.php" method="post">
<span class="gamma widget-title">YEAR</span><br />
<input type='checkbox' name='product_year[]' value="1970s" <?php echo ($_GET['product_cat'] == '1970s') ? ' checked "' : ''; ?>>1970s<br />
<input type='checkbox' name='product_year[]' value="1980s" <?php echo ($_GET['product_cat'] == '1980s') ? ' checked "' : ''; ?>>1980s<br />
<input type='checkbox' name='product_year[]' value="1990s" <?php echo ($_GET['product_cat'] == '1990s') ? ' checked "' : ''; ?>>1990s<br /><br />
<span class="gamma widget-title">PRODUCT</span><br />
<input type='checkbox' name='product_type[]' value="cards" <?php echo ($_GET['product_cat'] == 'cards') ? ' checked "' : ''; ?>>Cards<br />
<input type='checkbox' name='product_type[]' value="frames" <?php echo ($_GET['product_cat'] == 'frames') ? ' checked "' : ''; ?>>Frames<br /><br />
<span class="gamma widget-title">OCCASION</span><br />
<input type='checkbox' name='product_occasion[]' value="birthday" <?php echo ($_GET['product_cat'] == 'birthday') ? ' checked "' : ''; ?>>Birthday<br />
<input type='checkbox' name='product_occasion[]' value="anniversary" <?php echo ($_GET['product_cat'] == 'anniversary') ? ' checked "' : ''; ?>>Anniversary<br />
<br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Reset" value="Reset"><br><br>
</form>
这是checkbox.php
$product_year = $_POST['product_year'];
$product_type = $_POST['product_type'];
$product_occasion = $_POST['product_occasion'];
if (isset ($product_year) && !isset($product_type) && !isset($product_occasion) ) {
$url = 'http://localhost/yy-search-test/?product_cat=' . implode( ',' ,$product_year);
header('Location:'. $url);
exit;
}
else if (isset ($product_type) && !isset($product_year) && !isset($product_occasion) ) {
$url = 'http://localhost/yy-search-test/?product_cat=' . implode( ',' ,$product_type);
header('Location:'. $url);
exit;
}
else if (isset ($product_occasion) && !isset($product_year) && !isset($product_type) ) {
$url = 'http://localhost/yy-search-test/?product_cat=' . implode( ',' ,$product_occasion);
header('Location:'. $url);
exit;
}
else if (isset ($product_year) && isset($product_type) && !isset( $product_occasion) ) {
$merged = array_merge($product_year, $product_type);
$url = 'http://localhost/yy-search-test/?product_cat=' . implode( ',' ,$merged);
header('Location:'. $url);
exit;
}
else if (isset ($product_type) && isset($product_occasion) && !isset( $product_year) ) {
$merged = array_merge($product_type, $product_occasion);
$url = 'http://localhost/yy-search-test/?product_cat=' . implode( ',' ,$merged);
header('Location:'. $url);
exit;
}
else if (isset ($product_year) && isset($product_occasion) && !isset( $product_type) ) {
$merged = array_merge($product_year, $product_occasion);
$url = 'http://localhost/yy-search-test/?product_cat=' . implode( ',' ,$merged);
header('Location:'. $url);
exit;
}
else if (!isset ($product_year) && !isset($product_type) && !isset($product_occasion) ) {
$msg = "Please make a selection";
$url = 'http://localhost/yy-search-test/?msg';
header('Location:'. $url);
exit;
}
else {
$merged = array_merge($product_year, $product_occasion, $product_type);
$url = 'http://localhost/yy-search-test/?product_cat=' . implode( ',' ,$merged);
header('Location:'. $url);
exit;
}
一切正常,但是我想根据URL的输出字符串重新选择复选框。
当我选择1个类别(例如1970年代)时,它会很好地起作用,然后再符合规则。
当我选择2个类别时,我遇到的问题是。因此== 1970s不匹配,例如字符串是?product_cat = 1970s,cards。
我尝试了一些事情,例如将字符串分解为数组,但似乎无法正常工作。
有人可以帮忙吗?
谢谢, 杰米
答案 0 :(得分:0)
假设我了解您是否希望此($_GET['product_cat'] == '1970s') ? ' checked "' : '';
在product_cat字符串中是1970年代(或查询字符串中的任何内容)设置为“已选中”。
您可以strpos
。 strpos('1970s',$ _ GET ['product_cat'])`。
为防止误报,请$_GET['product_cat']
放入列表并使用in_array('1970s',explode(',',$_GET['product_cat']
答案 1 :(得分:0)
更新***我看到您对误报的含义,因为选项“硬币卡”也选择了“卡”,因为该字符串中也包含该选项。所以我改用了,那很有效。再次感谢您的两个建议! :)