很抱歉问了这个愚蠢的问题,尽管我对PHP有点陌生。我尝试了很多其他方法来做到这一点,但根本无法实现。。。事实上,我希望它能让我在每个复选框上都附加不同的功能,当用户选择一个或另一个复选框并单击提交按钮时,它会触发特定的功能。但我无法使复选框工作。它要么只选择一个,要么如果我先检查第一个,然后检查第四个,它就会输出第四个的代码。还有其他方法吗?这是我的尝试:
1.php
<form method="POST" action="2.php">
<input type="checkbox" name="test[]" value="test1" />test1<br />
<input type="checkbox" name="test[]" value="test2" />test2<br />
<input type="submit" name="submit" value="submit" />
</form>
2.php
$val = $_POST['test'];
if(isset($val)==true){
for($i = 0 ; $i<count($val) ; $i++){
if($val=='test1'){
echo $val;
die();
}elseif($val=='test2'){
echo $val;
die();
}else{
echo "fail";
die();
}
}
}else{
return false;
}
谢谢。
尝试:
$vals = $_POST['test'];
$valsCount = count($vals);
if ($valsCount > 0) {
foreach ($vals as $val) {
switch ($val) {
case 'test1':
echo $val;
break;
case 'test2':
echo $val;
break;
default:
echo 'Fail';
break;
}
}
}
作为另一个选项,如果您希望根据复选框的值调用函数,您可以执行以下操作。。。
为了简单起见,我已经将其全部压缩到一个文件中,但这是一般的想法。。。
<form method="post" action="<?php echo $_SREVER['PHP_SELF']; ?>">
<input type="checkbox" name="boxes[]" value="box1">Box 1</input><br />
<input type="checkbox" name="boxes[]" value="box2">Box 2</input><br />
<input type="checkbox" name="boxes[]" value="box3">Box 3</input><br />
<input type="checkbox" name="boxes[]" value="box4">Box 4</input><br />
<input type="checkbox" name="boxes[]" value="box5">Box 5</input><br />
<input type="submit" value="Go!" />
</form>
<?php
class boxProcessor
{
public function box1()
{
echo "<p>You've found box 1.</p>";
}
public function box2()
{
echo "<p>You've found box 2.</p>";
}
public function box3()
{
echo "<p>You've found box 3.</p>";
}
public function box4()
{
echo "<p>You've found box 4.</p>";
}
public function box5()
{
echo "<p>You've found box 5.</p>";
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$boxes = $_POST['boxes'];
if(empty($boxes)){
echo "<p>Nothing to do ...</p>";
} else {
$proc = new boxProcessor();
foreach($boxes as $box){
$proc->$box();
}
}
}
?>
您的代码已经非常接近了,只需要考虑数组索引。
for ($i = 0, $length = count($val); $i < $length; $i++)
{
// add [$i] to $val to access an index of $val
if ($val[$i] == 'test1')
尝试在1.php中将名称从test1[]
更改为test1
,并检查第7-2.php行的拼写错误。
希望这能有所帮助。
有几个问题可能与真正的问题无关:
1) 你说的是"第一"answers"第四"复选框。。。但是你的代码只显示两个复选框
2) 您的示例拼错了"tes2"(因此PHP找不到)
3) 你可能应该去掉中所有的"die()"子句
建议:
查看此链接:
http://www.html-form-guide.com/php-form/php-form-checkbox.html