我在此尝试实现的是让用户能够选择页面将显示的一个或所有类别。用户将检查3个复选框的任意组合,并将计算变量并将其保存到数据库中。然后从数据库中检索这些值,并相应地回显检查复选框。 发生的事情是当检查多于1个复选框时,仅保存后一个值,例如如果选中A和B,则仅保存B,或者检查A,B和C时,仅保存C.如果只保存1个复选框就可以了。
PHP
<?php
if(isset($_POST['submit'])){
if ($_POST['catA'] == "a" && $_POST['catB'] == "b" && $_POST['catC'] == "c"){
$pageCat = "abc";
}
if ($_POST['catA'] == "a" && $_POST['catB'] == "b"){
$pageCat = "ab";
}
if ($_POST['catA'] == "a" && $_POST['catC'] == "c"){
$pageCat = "ac";
}
if ($_POST['catB'] == "b" && $_POST['catC'] == "c"){
$pageCat = "bc";
}
if ($_POST['catA'] == "a"){
$pageCat = "a";
}
if ($_POST['catB'] == "b"){
$pageCat = "b";
}
if ($_POST['catC'] == "c"){
$pageCat = "c";
}
}
?>
答案 0 :(得分:1)
一个简单(不完美)的解决方案:
$pageCat = (isset($_POST['catA']) ? $_POST['catA'] : '')
. (isset($_POST['catB']) ? $_POST['catB'] : '')
. (isset($_POST['catC']) ? $_POST['catC'] : '');
答案 1 :(得分:0)
要拥有相同变量的多个条目,请将其命名为array:
<input type="checkbox" value="ACat" name="Category[A]"/>
<input type="checkbox" value="BCat" name="Category[B]"/>
<input type="checkbox" value="CCat" name="Category[C]"/>
你的POST将是这样的:
array(
"Category" => array(
"A" => "ACat"
"B" => "BCat"
"C" => "CCat"
)
)
答案 2 :(得分:0)
例如,在这种情况下,您可以使用和数组来获取多个值
<!DOCTYPE html>
<html>
<body>
<form action="">
<input type="checkbox" name="vehicle[]" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle[]" value="Car">I have a car
</form>
</body>
</html>
因此,如果在上述情况下用户选择了这两个值,那么您将在帖子中获得以下内容
<?php
echo "<pre>";print_r($_POST['vehicle']);
?>
它会给你输出
阵列( [0] =&gt;自行车, [1] =&gt;汽车 )
然后你可以按照你想要的方式处理它
答案 3 :(得分:0)
要克服这个问题,你可以使用if / elseif,或者你可以在下面发布一些内容,因为如果&amp; b检查它是否在ifs列表中,并替换为true。
A&amp;&amp;乙
if ($_POST['catA'] == "a" && $_POST['catB'] == "b" && $_POST['catC'] == "c") FALSE
if ($_POST['catA'] == "a" && $_POST['catB'] == "b") TRUE $pageCat = 'ab'
if ($_POST['catA'] == "a" && $_POST['catC'] == "c") FALSE $pageCat = 'ab'
if ($_POST['catB'] == "b" && $_POST['catC'] == "c") FALSE $pageCat = 'ab'
if ($_POST['catA'] == "a") TRUE $pageCat = 'a'
if ($_POST['catB'] == "b") TRUE $pageCat = 'b'
if ($_POST['catC'] == "c") FALSE $pageCat = 'b'
Final value of pageCat = 'b'
尝试:
if (isset($_POST['submit'])) {
$pageCat = '';
if($_POST['catA'] === "a"){
$pageCat .= "a";
}
if($_POST['catB'] === "b"){
$pageCat .= "b";
}
if($_POST['catC'] === "c"){
$pageCat .= "c";
}
}
答案 4 :(得分:0)
可悲的是,我无法看到代码的形式部分 请注意:请记住为复选框设置不同的名称!
这是一个简短的例子:
// 4 Checkboxes with diffrent names //
echo '<form name="form1" method="post" action="test_scroll.php">
A<input type="checkbox" name="checkbox1" value="a">
B<input type="checkbox" name="checkbox2" value="b">
C<input type="checkbox" name="checkbox3" value="c">
D<input type="checkbox" name="checkbox4" value="d">
<br><br>
<input type="submit" name="submit" value="submit"/><br><br><br>';
// Loop throught the post-params and append the values of the checkboxes //
array_pop($_POST);
foreach($_POST as $entry){
$values .= $entry;
}
// here comes the result //
echo $values;
array_pop只删除数组中最后一个“submit”的条目。因此,复选框的值将保留。
如果提交了复选框A和B,结果将只是“ab”。此示例仅适用于纯复选框表单。如果有更多值,则必须在使用此循环方法之前将其弹出。
问候。